Gardener Terminal Controller Manager
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 git@github.com: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