Skip to content

Use this guide to install kubectl on your machine

[[TOC]]

Prerequisites

  • gcloud CLI 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:

kubectl version --output=yaml --client

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.

gke-gcloud-auth-plugin --version

You should see something like this:

Kubernetes v1.26.2-alpha+038d2342e9672c4772e9ee48a3f1dd9438156eba

Setup access to clusters

  1. 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
  1. (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:

> kubectl config set-context --current --namespace=candlekeeper
Context "dev" modified.

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:

  1. Tell k9s to use your namespace only: k9s --namespace candlekeeper
  2. Set your current namespace as described in previous chapters before starting k9s