mirror of
https://gitea.com/mcereda/oam.git
synced 2026-02-09 05:44:23 +00:00
129 lines
4.3 KiB
Bash
129 lines
4.3 KiB
Bash
#!/usr/bin/env sh
|
|
|
|
# Manage namespaces
|
|
kubectl create namespace 'gitlab'
|
|
|
|
# Manage secrets
|
|
kubectl apply --namespace 'gitlab' --values 'secrets.yaml'
|
|
kubectl create --namespace 'gitlab' secret generic 'gitlab-runner-token' --dry-run='client' --output 'yaml' \
|
|
--from-literal='runner-registration-token=""' --from-literal='runner-token=glrt-…'
|
|
kubectl --namespace 'gitea' create secret generic 'gitea-admin-secret' \
|
|
--from-literal 'username=gitea_admin' --from-literal "password=$(pulumi config get 'giteaAdminPassword')"
|
|
kubectl get secrets -n 'gitea' 'gitea' -o jsonpath='{.data.config_environment\.sh}' | base64 -d
|
|
kubectl get secrets -n 'gitea' 'gitea-inline-config' -o go-template='{{.data.mailer|base64decode}}'
|
|
|
|
# Manage nodes
|
|
kubectl get nodes 'fargate-ip-172-31-83-147.eu-west-1.compute.internal' -o 'yaml' | yq -y '.metadata.labels'
|
|
kubectl get nodes -o jsonpath='{.items[].metadata.labels}' | yq -y
|
|
|
|
# Manage events
|
|
kubectl get events -n 'monitoring' --sort-by '.metadata.creationTimestamp'
|
|
|
|
# See resources utilization
|
|
# Requires the metrics server to be running in the cluster
|
|
kubectl top nodes
|
|
kubectl top pods
|
|
|
|
# Create containers
|
|
kubectl run --rm -it --image 'alpine' 'alpine' --command -- sh
|
|
kubectl run --rm -t --image 'amazon/aws-cli:2.17.16' 'awscli' -- autoscaling describe-auto-scaling-groups
|
|
kubectl -n 'kube-system' run --rm -it 'awscli' --overrides '{"spec":{"serviceAccountName":"cluster-autoscaler-aws"}}' \
|
|
--image '012345678901.dkr.ecr.eu-west-1.amazonaws.com/cache/amazon/aws-cli:2.17.16' \
|
|
autoscaling describe-auto-scaling-groups
|
|
|
|
# Scale deployments
|
|
kubectl scale deployment -n 'kube-system' 'cluster-autoscaler-aws-cluster-autoscaler' --replicas '0'
|
|
|
|
# Add annotations
|
|
kubectl annotate sc 'gp2' 'storageclass.kubernetes.io/is-default-class'='false'
|
|
cat <<EOF | kubectl apply -f -
|
|
apiVersion: storage.k8s.io/v1
|
|
kind: StorageClass
|
|
metadata:
|
|
annotations:
|
|
storageclass.kubernetes.io/is-default-class: "true"
|
|
name: gp3
|
|
parameters:
|
|
type: gp3
|
|
provisioner: kubernetes.io/aws-ebs
|
|
reclaimPolicy: Delete
|
|
volumeBindingMode: WaitForFirstConsumer
|
|
allowVolumeExpansion: true
|
|
EOF
|
|
|
|
# Check persistent volumes' usage
|
|
# Need to connect to the pod mounting it
|
|
kubectl -n 'gitea' exec 'gitea-766fd5fb64-2qlqb' -c 'gitea' -- df -h '/data'
|
|
|
|
# Create a fictious job large enough to trigger a scale up in clusters with cluster-autoscaler
|
|
kubectl run --rm -i --restart 'Never' 'resource-grabber' --image='alpine' \
|
|
--overrides '{"spec":{"containers":[{"name":"alpine","image":"alpine","resources":{"requests":{"cpu":"1700m"}}}]}}' \
|
|
-- \
|
|
sleep '3s'
|
|
kubectl -n 'task-executors' run --rm -i --restart 'Never' 'resource-grabber' --image='alpine' \
|
|
--overrides '{\
|
|
"apiVersion": "v1",\
|
|
"spec": {\
|
|
"affinity": {\
|
|
"nodeAffinity": {\
|
|
"requiredDuringSchedulingIgnoredDuringExecution": {\
|
|
"nodeSelectorTerms": [{\
|
|
"matchExpressions": [\
|
|
{\
|
|
"key": "com.company.reservation/app",\
|
|
"operator":"In",\
|
|
"values": [ "gitlab" ]\
|
|
},\
|
|
{\
|
|
"key": "com.company.reservation/component",\
|
|
"operator": "In",\
|
|
"values": [ "runner" ]\
|
|
}\
|
|
]}\
|
|
]\
|
|
}\
|
|
}\
|
|
},\
|
|
"tolerations": [\
|
|
{\
|
|
"key": "com.company.reservation/app",\
|
|
"operator": "Equal",\
|
|
"value": "gitlab",\
|
|
"effect": "NoSchedule"\
|
|
},\
|
|
{\
|
|
"key": "com.company.reservation/component",\
|
|
"operator": "Equal",\
|
|
"value": "runner",\
|
|
"effect": "NoSchedule"\
|
|
}\
|
|
],\
|
|
"containers": [{\
|
|
"name": "resource-grabber",\
|
|
"image": "alpine",\
|
|
"resources": {\
|
|
"requests": {\
|
|
"cpu": "3",\
|
|
"memory": "14Gi"\
|
|
}\
|
|
}\
|
|
}]\
|
|
}\
|
|
}' \
|
|
-- \
|
|
sleep '3s'
|
|
|
|
# Remove nodes safely
|
|
kubectl cordon 'kworker-rj2' \
|
|
&& kubectl drain 'kworker-rj2' --grace-period=300 --ignore-daemonsets=true \
|
|
&& kubectl delete node 'kworker-rj2'
|
|
|
|
# Get raw information as JSON
|
|
kubectl get --raw "/api/v1/nodes/ip-172-31-69-42.eu-west-1.compute.internal/proxy/stats/summary"
|
|
# Get raw information as Prometheus metrics
|
|
kubectl get --raw "/api/v1/nodes/ip-172-31-69-42.eu-west-1.compute.internal/proxy/metrics/cadvisor"
|
|
|
|
# Get ephemeral storage usage for pods
|
|
kubectl get --raw "/api/v1/nodes/ip-172-31-69-42.eu-west-1.compute.internal/proxy/stats/summary" \
|
|
| jq '.pods[] | select(.podRef.name == "gitlab-runner-59dd68c5cb-9vcp4")."ephemeral-storage"'
|