getting-started
https://gardener.cloud/docs/getting-started/
Releases
https://github.com/gardener/gardener/releases
Introduction
https://www.youtube.com/watch?v=PQMVVeYRzYU
Get vGarden cluster credentials
export KUBECONFIG=~/.kube/api.v.gardener.stage.example.com.yaml kubectl get shoots -A
Create shoot
https://github.com/gardener/gardener/blob/master/example/90-shoot.yaml
# cat my-botany1.yaml apiVersion: core.gardener.cloud/v1beta1 kind: Shoot metadata: name: my-botany1 namespace: garden-dev spec: secretBindingName: gardenshoot1 cloudProfileName: ch-zh1 region: ch-zh1 purpose: production provider: type: openstack infrastructureConfig: apiVersion: openstack.provider.extensions.gardener.cloud/v1alpha1 kind: InfrastructureConfig floatingPoolName: public networks: workers: 10.250.10.0/16 controlPlaneConfig: apiVersion: openstack.provider.extensions.gardener.cloud/v1alpha1 kind: ControlPlaneConfig loadBalancerProvider: amphora workers: - name: worker cri: name: containerd minimum: 2 maximum: 5 machine: type: e1.xlarge image: name: ubuntu version: 22.04.20231101 zones: - ch-zh1-az1 - ch-zh1-az2 kubernetes: version: 1.29.4 dns: domain: my-botany1.dev.gardener.example.com extensions: [] networking: type: calico # {calico,cilium} ipFamilies: - IPv4 pods: 100.96.0.0/11 nodes: 10.250.0.0/16 services: 100.64.0.0/13 maintenance: timeWindow: begin: 220000+0100 end: 230000+0100 autoUpdate: kubernetesVersion: true machineImageVersion: true monitoring: alerting: emailReceivers: - foo@example.com addons: nginxIngress: enabled: false kubernetesDashboard: enabled: false kubectl apply -f my-botany1.yaml
Delete shoot
https://gardener.cloud/docs/dashboard/project-operations/
kubectl annotate shoots -n garden-dev my-botany1 confirmation.gardener.cloud/deletion="true" kubectl delete shoots my-botany1 -n garden-de
Access shoot cluster
export NAMESPACE=garden-dev export SHOOT_NAME=my-botany1 kubectl create \ -f <(printf '{"spec":{"expirationSeconds":3600}}') \ --raw /apis/core.gardener.cloud/v1beta1/namespaces/${NAMESPACE}/shoots/${SHOOT_NAME}/adminkubeconfig | \ jq -r ".status.kubeconfig" | \ base64 --decode > ~/.kube/${NAMESPACE}--${SHOOT_NAME}-external.yaml # access shoot export KUBECONFIG=~/.kube/${NAMESPACE}--${SHOOT_NAME}-external.yaml kubectl get nodes
Links
https://gardener.cloud/
https://github.com/gardener/gardener
https://www.youtube.com/@GardenerProject/videos
https://github.com/gardener/gardener/tree/master/example