Skip to content

gardener/terminal-controller-manager

Gardener Terminal Controller Manager

REUSE status CI Build status Slack channel #gardener Go Report Card reuse compliant

The terminal-controller-manager is used for the webterminal feature of the gardener/dashboard.

The terminal-controller-manager watches Terminal resources under the dashboard.gardener.cloud/v1alpha1 API group and ensures the desired state on the host and target cluster. Host and target cluster can also be the same. For more details and a usage scenario see docs here.

Development Setup

Prerequisites:

To build and push the images, run docker-build and docker-push make targets. Adapt the image as necessary:

make docker-build docker-push IMG_MANAGER_REPOSITORY=example/my-repo

Local Setup with Kind

The local setup describes the use of the local kind cluster setup of gardener. After deploying the gardener locally, the helm chart of the terminal-controller-manager can be installed into the kind cluster.

Deploy Gardener locally

First, deploy the gardener locally Deploying Gardener locally into a kind cluster. For more information check out https://github.com/gardener/gardener/blob/master/docs/deployment/getting_started_locally.md#setting-up-the-kind-cluster-garden-and-seed. The basic steps are the following.

Clone the gardener repository.

git clone [email protected]:gardener/gardener.git

Change directory to gardener.

cd gardener

Set up a new kind cluster named gardener-local.

make kind-up

The kubeconfig is stored in the ./example/gardener-local/kind/local/kubeconfig file within the gardener directory. Alternatively run kind get kubeconfig --name gardener-local to print out the kubeconfig.

Deploy Gardener resources into the cluster.

make gardener-up

Set the KUBECONFIG environment variable for the local garden cluster:

export KUBECONFIG=$PWD/example/gardener-local/kind/local/kubeconfig

Deploy Terminal Controller Manager locally

Change directory to terminal-controller-manager.

cd terminal-controller-manager

Build the terminal-controller-manager image and load it into the kind cluster.

make load-manager-docker-image

Run install make target.

make install

To verify that everything worked, check if the terminal-controller-manager pod is running in the terminal-system namespace:

kubectl -n terminal-system get po

NAME                                           READY   STATUS    RESTARTS   AGE
terminal-controller-manager-6d7b5bfbdd-l6vg9   2/2     Running   0          10s