Skip to content

Kubernetes cheatsheet

How to install a custom Codacy version

Install

sudo git clone git://github.com/codacy/chart -b <YOUR-BRANCH>
helm dep build ./chart/codacy
helm upgrade --install codacy ./chart/codacy/ --namespace codacy --atomic --timeout=300 --values ./<YOUR-VALUES-FILE>

Upgrade

(cd chart; sudo git fetch --all --prune --tags; sudo git reset --hard origin/<YOUR-BRANCH>;)
helm dep build ./chart/codacy
helm upgrade --install codacy ./chart/codacy/ --namespace codacy --atomic --timeout=300 --values ./<YOUR-VALUES-FILE>

Debugging

Important

Always check the pods and deployment versions in the namespace to make sure you are not debugging an issue in a version that is not the one you would expect

Events

Events are a great way to understand what is going on under the hood in a Kubernetes cluster. By looking at them you can see if probes are failing, and other important signals from your cluster.

Get events for the whole namespace:

kubectl -n codacy get events --sort-by=.metadata.creationTimestamp

Get error events:

kubectl -n codacy get events --sort-by=.metadata.creationTimestamp --field-selector type=Error

Get warning events:

kubectl -n codacy get events --sort-by=.metadata.creationTimestamp --field-selector type=Warning

Get events from a specific pod:

kubectl -n codacy get events --sort-by=.metadata.creationTimestamp --field-selector involvedObject.name=<POD-NAME>

Helm

Check all the previous releases in your namespace:

helm -n codacy history codacy

Rollback to a specific revision:

helm -n codacy rollback codacy <REVISION>

Edit configmap

kubectl get configmaps

and

kubectl edit configmap <configmap-name>

Restart deployment of daemonset

daemonsets

kubectl get daemonsets

and

kubectl rollout restart daemonset/<daemonset-name>

deployment

kubectl get deployment

and

kubectl rollout restart deployment/<deployment-name>

and

kubectl rollout status deployment/<deployment-name> -w

Read logs

daemonset with multiple containers

kubectl logs daemonset/<daemonset-name> <container-name> -f

service

kubectl get svc

and

kubectl logs -l $(kubectl get svc/<service-name> -o=json | jq ".spec.selector" | jq -r 'to_entries|map("\(.key)=\(.value|tostring)")|.[]' | sed -e 'H;${x;s/\n/,/g;s/^,//;p;};d') -f

Open shell inside container

kubectl exec -it daemonset/<daemonset-name> -c <container-name> sh

or

kubectl exec -it deployment/<deployment-name> sh

MicroK8s

Session Manager SSH

When using AWS Session Manager, to connect to the instance where you installed microk8s, since the CLI is very limited you will benefit from using these aliases:

alias kubectl='sudo microk8s.kubectl -n <namespace-name>'
alias helm='sudo helm'
Last update: October 15, 2020