Expérimentation avec Terraform pour création d'un environnement de développement Kubernetes dans Google Cloud :
Le déploiement est réalisé en plusieurs étapes :
gke-playground/output/kubeconfig.yml
gcloud --help
)terraform version
)gcloud auth login
gcloud auth application-default login
Voir script install.sh qui assure :
PROJECT_ID
terraform apply -auto-approve
sur chacun des dossiersA l'usage :
# Pour install.sh :
export PROJECT_ID=playground-s-11-946429c5
# Pour utilisation direct de terraform :
export TF_VAR_project_id=$PROJECT_ID
# Pour activer la création du ClusterIssuer LetsEncrypt :
#export [email protected]
# Création de l'infrastructure avec terraform
bash install.sh
Remarques :
PROJECT_ID
est traduite en TF_VAR_project_id
et que ce principe peut être utilisé pour d'autres variables (voir developer.hashicorp.com - Terraform - Input Variables)export KUBECONFIG=$PWD/output/kubeconfig.yaml
# Pour tester le fonctionnement :
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
gcloud config set project $PROJECT_ID
gcloud container clusters list
gcloud compute addresses list
# Pour configurer kubectl (~/.kube/config)
ZONE=$(gcloud container clusters describe primary --format="value(location)")
gcloud container clusters get-credentials primary --zone=$ZONE
# Pour tester le fonctionnement :
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
Par exemple :
export KUBECONFIG=$PWD/output/kubeconfig.yaml
# Pour https://whoami.gke.quadtreeworld.net
export DEVBOX_HOSTNAME=gke.quadtreeworld.net
export DEVBOX_ISSUER=letsencrypt
export DEVBOX_INGRESS=nginx
git clone https://github.com/mborne/docker-devbox
bash docker-devbox/whoami/k8s-install.sh