Use this guide to install kubectl on your machine
[[TOC]]
Prerequisites¶
gcloudCLI installed - https://cloud.google.com/sdk/docs/install- GCP project-id is set to
devops-309909(gcloud config set project devops-309909) - default GCP region is set to
europe-west3(gcloud config set compute/region europe-west3)
Instructions¶
Install kubectl¶
We recommend following upstream Google Kubernetes Engine documentation - https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl
Don't forget to install required plugins https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl#install_plugin
Verify kubectl installation¶
Verify the kubectl installation by running:
You should see something like this:
clientVersion:
buildDate: "2023-03-18T02:16:17Z"
compiler: gc
gitCommit: 9e644106593f3f4aa98f8a84b23db5fa378900bd
gitTreeState: clean
gitVersion: v1.26.3
goVersion: go1.19.7
major: "1"
minor: "26"
platform: linux/amd64
kustomizeVersion: v4.5.7
Verify the installation of the plugin.
You should see something like this:
Setup access to clusters¶
- Get kubeconfig for each cluster. Each cluster is then known as "context".
gcloud container clusters get-credentials dev --region=europe-west3
gcloud container clusters get-credentials dev-v2 --region=europe-west3
gcloud container clusters get-credentials stage --region=europe-west3
gcloud container clusters get-credentials prod --region=europe-west3
gcloud container clusters get-credentials gitlab-runners --region=europe-west3
- (Optional) Rename the context to more user-friendly names, for example:
kubectl config rename-context gke_devops-309909_europe-west3_dev dev
kubectl config rename-context gke_devops-309909_europe-west3_dev-v2 dev-v2
kubectl config rename-context gke_devops-309909_europe-west3_stage stage
kubectl config rename-context gke_devops-309909_europe-west3_prod prod
kubectl config rename-context gke_devops-309909_europe-west3_gitlab-runners gitlab-runners
Switching clusters and namespaces¶
Although you have multiple clusters (contexts) configured now, your kubectl command operates
on a single one: the current context. You can list the contexts and set the current context with:
> kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* dev gke_devops-309909_europe-west3_dev gke_devops-309909_europe-west3_dev
dev-v2 gke_devops-309909_europe-west3_dev-v2 gke_devops-309909_europe-west3_dev-v2 python-example
prod gke_devops-309909_europe-west3_prod gke_devops-309909_europe-west3_prod candlekeeper
stage gke_devops-309909_europe-west3_stage gke_devops-309909_europe-west3_stage kong
> kubectl config set-context stage
Context "stage" modified.
Your kubectl operates on a current namespace (default namespace by default). The current
namespace is stored in your cluster configuration and can be changed with:
PRO tip¶
- Do you want to quickly switch between clusters (contexts) and namespaces?
- kubectx for easy cluster switching
- kubens for easy namespace switching
- Do you want to see which cluster / namespace are you currently on in your terminal?
- use kube-ps1 to modify your prompt
k9s tool¶
k9s is a popular CLI-style management tool.
Troubleshooting¶
As a developer, your permissions may be limited to your project's resources. Upon start, the k9s
tries to list resources from all namespaces and may fail and exit. In such a case, you can apply
either of following fixes:
- Tell k9s to use your namespace only:
k9s --namespace candlekeeper - Set your current namespace as described in previous chapters before starting
k9s