Pour utiliser Terraform dans votre environnement isolé Google Distributed Cloud (GDC), vous devez le télécharger et le configurer pour gérer les ressources Kubernetes.
Avant de commencer
Téléchargez Terraform sur votre poste de travail en suivant la documentation fournie par HashiCorp : https://developer.hashicorp.com/terraform/install.
Vérifiez que vous disposez d'un bucket de stockage GDC. Si vous n'en avez pas, créez-en un.
Assurez-vous que votre système peut reconnaître le certificat d'autorité de certification utilisé par le stockage d'objets.
Gérer le fichier d'état
Le fichier d'état de Terraform permet d'enregistrer l'état actuel du déploiement et de le mapper à la configuration Terraform. Étant donné que le stockage d'objets GDC est implémenté à l'aide de S3, vous pouvez utiliser l'API Terraform S3 pour effectuer une synchronisation avec un fichier d'état partagé. Pour ce faire, vous devez configurer Terraform pour qu'il se synchronise avec l'état distant :
Ajoutez la configuration suivante à un fichier Terraform stocké localement, tel que le fichier
main.tf:terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" endpoint = "BUCKET_ENDPOINT" region = "ZONE" skip_credentials_validation = true force_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" ... } }Remplacez les éléments suivants :
BUCKET_FQN: nom complet de la ressource personnaliséeBucket.TF_STATE_PATH: emplacement du fichier d'état Terraform à stocker dans le bucket de stockage.BUCKET_ENDPOINT: point de terminaison de la ressource personnaliséeBucket.ZONE: zone de la ressource personnaliséeBucket.ACCESS_KEY: clé d'accès obtenue à partir du secret contenant vos identifiants d'accès. Suivez la procédure décrite dans Obtenir des identifiants d'accès au bucket pour obtenir la clé d'accès.SECRET_KEY: clé secrète obtenue à partir du secret contenant vos identifiants d'accès. Suivez la procédure décrite dans Obtenir des identifiants d'accès au bucket pour obtenir la clé secrète.
Vous devez définir
skip_credentials_validationetforce_style_pathsurtrue, car GDC n'est pas compatible avec la validation des identifiants et utilise le point de terminaison de style de chemin d'accès.Initialisez les nouvelles modifications du fichier d'état dans le bucket de stockage que vous avez spécifié à l'étape précédente :
terraform initTerraform peut demander une région AWS comme entrée obligatoire, mais la valeur n'est pas utilisée, car vous utilisez le stockage d'objets GDC. Saisissez n'importe quelle région AWS pour répondre à cette exigence.
Définir des autorisations
Outre les autorisations requises pour effectuer une tâche spécifique à l'aide de Terraform, comme la création d'un projet GDC, vous devez également disposer des autorisations nécessaires pour afficher les définitions de ressources personnalisées à cette étendue. Appliquez les autorisations requises pour utiliser Terraform :
Créez la ressource de rôle de cluster
crd-viewer:kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: crd-viewer rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ["get", "list", "watch"] EOFRemplacez
KUBECONFIGpar le fichier kubeconfig du serveur d'API ou du cluster qui héberge la ressource que vous gérez avec Terraform. Par exemple, la plupart des ressources s'exécutent sur le serveur d'API Management. Pour les charges de travail de conteneur, définissez le fichier kubeconfig de votre cluster Kubernetes. Veillez à définir le serveur d'API global si vous gérez une ressource globale.Liez le rôle de cluster défini à l'étape précédente à l'utilisateur :
kubectl apply --kubeconfig KUBECONFIG -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: crd-viewer-binding subjects: - kind: User name: USER_EMAIL roleRef: kind: ClusterRole name: crd-viewer apiGroup: rbac.authorization.k8s.io EOF
Répétez ces étapes pour chaque serveur d'API ou cluster pour lequel vous souhaitez définir des autorisations Terraform.
Installer et configurer le fournisseur Terraform
Vous devez installer le fournisseur Kubernetes pour provisionner et gérer les ressources Kubernetes.
Dans un fichier Terraform de votre module, tel que le fichier
main.tf, insérez le blocrequired_providerssuivant :terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Initialisez votre répertoire de travail Terraform pour installer le fournisseur :
terraform init