Pour configurer Terraform dans votre environnement Google Distributed Cloud (GDC) isolé, vous devez le télécharger et le configurer pour gérer les ressources Kubernetes.
Ce document s'adresse à tous les groupes d'audience qui doivent configurer Terraform pour gérer leurs workflows matériels et logiciels sous air gap. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.
Avant de commencer
Téléchargez Terraform 1.6.3 ou une version ultérieure sur votre poste de travail en suivant la documentation fournie par HashiCorp : https://developer.hashicorp.com/terraform/install. La configuration du backend dans ce document utilise des paramètres qui ne sont pas compatibles avec les anciennes versions de Terraform.
Vérifiez que vous disposez d'un bucket de stockage GDC existant. Si vous n'avez pas de bucket de stockage, créez-en un. Pour en savoir plus, consultez Créer des buckets de stockage.
Assurez-vous que votre système peut reconnaître le certificat de l'autorité de certification (CA) utilisé par le stockage d'objets.
Installez la CLI gdcloud. Pour en savoir plus, consultez Utiliser la CLI gdcloud.
Générez le fichier kubeconfig pour le serveur d'API ou le cluster qui héberge les ressources que vous souhaitez gérer avec Terraform. Pour en savoir plus, consultez Obtenir un fichier kubeconfig.
Configurer Terraform
Pour configurer Terraform dans votre environnement GDC, procédez comme suit :
Dans votre module Terraform ou votre collection de fichiers Terraform sur votre poste de travail, créez le fichier
main.tfet ajoutez la configuration suivante :terraform { backend "s3" { bucket = "BUCKET_FQN" key = "TF_STATE_PATH" region = "ZONE" endpoints = { s3 = "BUCKET_ENDPOINT" } use_path_style = true access_key = "ACCESS_KEY" secret_key = "SECRET_KEY" skip_credentials_validation = true skip_requesting_account_id = true skip_metadata_api_check = true skip_region_validation = true skip_s3_checksum = true } }Remplacez les éléments suivants :
BUCKET_FQN: valeurstatus.fullyQualifiedNamede la ressource personnaliséeBucket. Par exemple,aabc2z8-platform-terraform-state.TF_STATE_PATH: chemin d'accès au fichier d'état Terraform à stocker dans le bucket de stockage. Exemple :main.tfstateZONE: zone de la ressource personnaliséeBucket(status.region). Par exemple,zone1. Terraform nécessite une valeur de région, mais le stockage d'objets GDC ne la vérifie pas.BUCKET_ENDPOINT: valeurstatus.endpointde la ressource personnaliséeBucket. Par exemple,https://objectstorage.org-1.zone1.google.gdch.test.ACCESS_KEY: clé d'accès acquise à partir du secret contenant vos identifiants d'accès. Pour en savoir plus sur l'obtention de la clé d'accès, consultez Obtenir les identifiants d'accès au bucket. La valeur du secret est encodée en base64. Décodez-la avant de l'utiliser.SECRET_KEY: clé secrète acquise à partir du secret contenant vos identifiants d'accès. Pour en savoir plus sur l'obtention de la clé secrète, consultez Obtenir les identifiants d'accès au bucket. La valeur du secret est encodée en base64. Décodez-la avant de l'utiliser.
Le stockage d'objets GDC est compatible avec S3, mais il ne s'agit pas d'AWS. Les paramètres restants configurent le backend pour le stockage non AWS S3 :
use_path_style: utilise l'adressage de bucket de style chemin d'accès pour le store d'objets GDC.skip_credentials_validationetskip_requesting_account_id: empêche Terraform d'appeler AWS STS et AWS IAM. GDC ne fournit pas ces services.skip_metadata_api_check: empêche Terraform d'interroger le service de métadonnées AWS EC2.skip_region_validation: vous permet d'utiliser le nom de la zone comme région.skip_s3_checksum: empêche Terraform de demander une somme de contrôle SHA-256 lors de l'importation du fichier d'état.
Initialisez votre fichier d'état Terraform dans le bucket de stockage que vous avez spécifié à l'étape précédente :
terraform initDéployez la ressource de rôle de cluster
crd-vieweret associez-la à votre compte utilisateur :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"] --- 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 EOFRemplacez les éléments suivants :
KUBECONFIG: fichier kubeconfig du serveur d'API ou du cluster qui héberge les ressources que vous gérez avec Terraform.USER_EMAIL: adresse e-mail de l'utilisateur auquel lier le rôle.
Déployez le rôle
crd-viewersur chaque serveur d'API ou cluster pour lequel vous souhaitez utiliser Terraform.Dans le fichier
main.tf, insérez le blocrequired_providerssuivant :terraform { required_providers { kubernetes = { source = "hashicorp/kubernetes" version = ">=2.24.0" } } }Cette configuration installe le fournisseur Kubernetes pour provisionner et gérer les ressources Kubernetes dans votre environnement GDC.
Initialisez votre répertoire de travail Terraform pour installer le fournisseur :
terraform init
Étapes suivantes
- Accéder aux zones avec vos outils
- Hiérarchie des ressources
- Se connecter à un fournisseur d'identité