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-deAccess 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