Gitpod : How to use kubectl and manage Kubernetes clusters ?


Gitpod is a Ready-to-Code development platform which allow users to quickly contribute on projects. This platform is powered by VS-Code online.

GitOps is now a standard approach to manage applications and infrastructure delivery. Gitpod is very usefull for that, because you can offer to anyone a Ready-to-Use platform to administrate and contribute.

Gitpod simplifying project startup ! All the tools you use will be available in the VS-Code terminal.

Here, i will share my experience with Gitpod to administrate and contribute on Kubernetes projects.


  • Gitpod account on (Or self-hosted instance)
  • Gitlab / Github account (or private Git server)
  • Working Kubernetes cluster
  • A web browser !

Getting Started

1. Init git project

First, you need to create en empty git project and open it with Gitpod.

Tips: You can install web-browser extension to quickly open git projects with Gitpod :

2. Set up .gitpod.yml

Gitpod allow user to specify environments settings like :

  • Environment Docker image
  • VS-Code extensions
  • Startup tasks

Here, we want to manage and administrate a Kubernetes cluster.

Unfortunately, official Gitpod environment image does not contain Kubernetes administration tools (kubectl, Helm, Kustomize etc..).

So, we going to change default image to use a custom image with all needed tools.

Use image from Docker Hub (Easy method !)

I recently publish a Docker image with useful tools to manage Kubernetes cluster through Gitpod.

Project :

You can test this Gitpod environement by opening this project with Gitpod :

Create a .gitpod.yml file and copy the following content :

image: quadeare/gitpod-kubectl:latest

After that, commit and push .gitpod.yml. Then, restart Gitpod workspace (close and open).

Use local Dockerfile (Take control !)

You can also build you own Docker image (by using Gitpod) and remain self-sufficient without having to depend on an external image.

So, you can create a simple .gitpod.yml file with the following:

  file: .gitpod.Dockerfile

Next, create .gitpod.Dockerfile like that :

FROM gitpod/workspace-base:latest


RUN curl -LO${KUBECTL_VERSION}/bin/linux/amd64/kubectl && \
    chmod +x ./kubectl && \
    sudo mv ./kubectl /usr/local/bin/kubectl && \
    mkdir ~/.kube

RUN set -x; cd "$(mktemp -d)" && \
    OS="$(uname | tr '[:upper:]' '[:lower:]')" && \
    ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" && \
    curl -fsSLO "" && \
    tar zxvf krew.tar.gz && \
    KREW=./krew-"${OS}_${ARCH}" && \
    "$KREW" install krew && \
    echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"' >> /home/gitpod/.bashrc

After that, commit and push .gitpod.yml/.gitpod.Dockerfile. Then, restart Gitpod workspace (close and open).

3. Add your kubeconfig as Gitpod secret

To administrate your Kubernetes cluster from Gitpod, you need to add Kubeconfig content as secret on Gitpod.

Gitpod supports encrypted, user-specific environment variables. They are stored as part of your user settings and can be used to set access tokens, or pass any other kind of user-specific information to your workspaces.

Convert Kubeconfig to base64

cat kubeconfig | base64 -w 0

Copy Kubeconfig (base64 format) to Gitpod


You can add multiple kubeconfig secrets with same variable name (ex : K8S_CTX) by using project scope !


4. Configure your project to extract kubeconfig

Now, edit your .gitpod.yml file and add this following content :

  - name: Set Glados K8s context
    command: echo $K8S_CTX | base64 -d > ~/.kube/config

After that, commit and push .gitpod.yml. Then, restart Gitpod workspace (close and open).

Now, you should be able to administrate your Kubernetes cluster with Kubectl, Helm or even with VS-Code by using Kubernetes extension.

Kubectl and Helm commands


VS-Code Kubernetes extension



Gitpod can be very useful to quickly get a handle on Kubernetes clusters without having to install all tools (Kubectl, Krew plugins, Kustomize etc..).

However, it may be necessary to ask security question :

  • Are Gitpod secrets really secured ?
  • Are Gitpod workspace perfectly isolated ?
  • Is it reasonable to put kubernetes cluster connection informations on Gitpod?

In my case, i prefer to install self-hosted Gitpod to keep my secrets/workspaces in secure place, but that may not be enough.

Moreover, it should not replace an automation by continuous integration. It’s very convenient to talk directly to a Kubernetes cluster, but Gitpod should not become a Kubernetes deployment solution. It should be used only for troobleshooting or testing.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.