Configurer les modules Terraform

Les ressources nécessaires à cette solution sont définies dans les modules Terraform.

Avant de commencer

Avant de configurer les modules Terraform, procédez comme suit :

  1. Découvrez les bases de Terraform.

    Lisez au minimum l'introduction dans la documentation Terrraform.

  2. Préparez les informations suivantes :
    • OCID de votre location.

      L'OCID de votre location est disponible dans la console Web Oracle Cloud Infrastructure. Sélectionnez Administration dans le menu Services, puis cliquez sur Détails de location.

    • OCID de l'utilisateur que Terraform doit utiliser pour l'authentification auprès d'Oracle Cloud Infrastructure.

      Pour trouver l'OCID de l'utilisateur, sélectionnez Identité dans le menu Services, puis Utilisateurs. Localisez votre nom utilisateur dans la liste et copiez son OCID.

    • OCID du compartiment dans lequel créer les ressources.

      Pour trouver l'OCID d'un compartiment, sélectionnez Identité dans le menu Services, puis Catégories. Localisez le compartiment dont vous avez besoin dans la liste et copiez son OCID.

    • ID de la région dans laquelle vous souhaitez créer les ressources.

      Par exemple, l'ID de la région Est des Etats-Unis (Ashburn) est us-ashburn-1.

      Reportez-vous à Régions et domaines de disponibilité.

  3. Décidez des éléments suivants :
    • Les OCIDs des images que vous souhaitez utiliser pour les hôtes bastion et admin.
      L'image par défaut définie dans la configuration Terraform pour l'hôte de base est une image Linux autonome Oracle. Si vous souhaitez utiliser une autre image, identifiez l'OCID de l'image dont vous avez besoin.
      • Pour trouver l'OCID d'une image personnalisée, connectez-vous à la console Web Oracle Cloud Infrastructure, sélectionnez Calculer dans le menu de service, puis Images personnalisées.
      • Pour rechercher l'OCID d'une image fournie par Oracle, procédez comme suit :
        1. Accédez à Oracle Cloud Images.
        2. Dans le panneau de navigation de gauche, sélectionnez une famille d'images (par exemple, Oracle Linux 7. x ).
        3. Sur la page obtenue, faites défiler l'écran jusqu'à la version d'image à utiliser, puis cliquez dessus (par exemple, Oracle-Linux-7.7-2019.09.25-0 ).
        4. Sur la page obtenue, faites défiler vers le bas jusqu'à la section OCIDs d'image.
        5. Copiez l'OCID correspondant à la région dans laquelle vous souhaitez créer l'hôte de base.

          L'OCID d'image contient l'ID de la région dans laquelle l'image peut être utilisée. Par exemple, les OCIDs des images de la région Centre allemand (Francfort) seraient au format ocid1.image.oc1.eu-frankfurt-1.aaaaaaaaxxx… Veillez à copier l'OCID de l'image pour la région dans laquelle vous souhaitez créer vos ressources.

    • Fuseau horaire pour les hôtes de base et d'administration.

      Sous UNIX, vous pouvez obtenir la liste des fuseaux horaires en exécutant la commande suivante : timedatectl list-timezones

    • Forme de calcul à utiliser pour l'hôte de base, l'hôte admin et les noeuds de salarié Kubernetes.

      Reportez-vous à Formes de calcul.

  4. Terminez les prérequis pour la création des clusters Kubernetes dans Oracle Cloud Infrastructure. Reportez-vous au Préparation de Container Engine for Kubernetes.
  5. (Facultatif) Cette étape est requise si vous souhaitez extraire des images d'applications en conteneur d'un référentiel privé dans Oracle Cloud Infrastructure Registry.
    1. Générez un jeton d'authentification pour le nom utilisateur à utiliser pour extraire des images à partir d'Oracle Cloud Infrastructure Registry. Reportez-vous à Obtention d'un jeton d'authentification.
    2. Stockez le jeton d'authentification que vous avez généré comme secret dans Oracle Cloud Infrastructure Vault. Reportez-vous à Gestion des clés secrètes.

Télécharger le code Terraform

Le code Terraform de cette solution est disponible sur GitHub.

  1. Dans le volet de navigation de gauche, cliquez sur Télécharger le code.
  2. Cliquez sur Référentiel Git.
  3. Clonez ou téléchargez le référentiel sur votre ordinateur local.

A propos du code Terraform

Le code Terraform de cette solution est organisé en modules réutilisables, contenant chacun les ressources d'un composant spécifique de la topologie cible.

Le codage de vos ressources cloud dans les fichiers de configuration Terraform vous permet de fournir rapidement et de gérer efficacement les ressources.

Le code Terraform contient les répertoires et fichiers suivants, au niveau supérieur :
  • Répertoire docs et *.adoc : documentation du code. Toutes les informations et instructions dont vous avez besoin sont incluses dans la documentation que vous lisez. Vous n'aurez pas besoin de vous reporter à la documentation incluse dans le code.
  • *.tf : fichiers de configuration Terraform que la solution utilise. Ne modifiez pas ces fichiers.
  • terraform.tfvars.example : modèle que vous utiliserez pour créer le fichier de variables Terraform. Ne pas modifier ni enlever le modèle. Copiez-le dans terraform.tfvars
  • modules : répertoires contenant les configurations Terraform de base pour les ressources que vous créez à l'aide de cette solution. Ne les modifiez pas.
  • .github directory et .gitignore : fichiers de configuration Internal Github. Ne les modifiez pas.

Définir les variables Terraform

Indiquez les paramètres obligatoires pour que Terraform se connecte à la location Oracle Cloud Infrastructure. Spécifiez également les paramètres de mise en réseau, les attributs de l'hôte de base et de l'hôte d'administration, ainsi que les paramètres Kubernetes.

  1. Dans le répertoire de niveau supérieur du code que vous avez téléchargé ou cloné, créez un fichier en texte brut nommé provider.tf, contenant le code suivant :
    provider "oci" {
      tenancy_ocid         = var.tenancy_id
      user_ocid            = var.user_id
      fingerprint          = var.api_fingerprint
      private_key_path     = var.api_private_key_path
      region               = var.region
      disable_auto_retries = var.disable_auto_retries
    }
  2. Localisez le fichier terraform.tfvars.example dans le répertoire de niveau supérieur du code que vous avez téléchargé ou cloné, puis copiez-le dans terraform.tfvars

    Remarque :

    Pour gérer les ressources dans plusieurs locations, conservez un fichier terraform.tfvars distinct pour chaque location.
  3. Assurez-vous d'avoir rempli les prérequis décrits précédemment. Reportez-vous à la section Before You Begin.
  4. Ouvrez terraform.tfvars dans un éditeur de texte brut et définissez les valeurs des variables qu'il contient comme suit :
    Variable Description
    api_fingerprint (obligatoire) Empreinte de la clé de signature d'API que vous avez téléchargée.
    api_private_key_path (obligatoire) Nom et chemin complet du fichier contenant la clé de signature de l'API privée.
    compartment_id (obligatoire) OCID du compartiment dans lequel créer les ressources.
    tenancy_id (obligatoire) OCID de votre location.
    user_id (obligatoire) OCID de l'utilisateur que Terraform doit utiliser pour l'authentification auprès d'Oracle Cloud Infrastructure.
    ssh_private_key_path Chemin d'accès complet et nom du fichier contenant la clé SSH privée correspondant à la clé publique à fournir pour l'hôte de base.

    Cette valeur est utilisée pour construire la commande ssh que vous pouvez utiliser pour accéder à l'hôte de base. La commande ssh s'affiche dans la sortie lorsque vous appliquez la configuration Terraform. Terraform ne lit ou ne copie pas la clé privée.

    ssh_public_key_path Chemin d'accès complet et nom du fichier contenant la clé SSH publique à fournir pour l'hôte de base.
    label_prefix Identificateur court, qui doit être utilisé comme préfixe dans les noms des ressources.

    Utilisez une chaîne qui vous aidera à identifier l'objectif ou la nature des ressources en consultant leurs noms. Par exemple, si vous voulez utiliser la configuration Terraform pour configurer un environnement de test ou de pré-production, utilisez le préfixe test ou staging.

    zone ID de la région dans laquelle vous souhaitez créer les ressources.

    Par exemple, l'ID de la région Est des Etats-Unis (Ashburn) est us-ashburn-1.

    nat_gateway_enabled Spécifiez true pour créer une passerelle NAT pour VCN.

    Une passerelle NAT est requise si l'une des instances de calcul privées (comme l'hôte d'administration ou les noeuds de travail Kubernetes) doit accéder à des hôtes sur l'Internet public.

    newbits et netnum Lorsque vous appliquez la configuration, Terraform transmet les valeurs de newbits et netnum en tant qu'arguments à la fonction Terraform cidrsubnet(). Cette fonction calcule les préfixes CIDR des sous-réseaux pour l'hôte de base, l'hôte d'administration, les noeuds d'équilibreur de charge et les noeuds de salarié Kubernetes.
    • newbits est utilisé pour déterminer la taille du sous-réseau. Il s'agit de la différence entre le masque de réseau du VCN et celui requis pour le sous-réseau bastion.

      Par exemple, pour créer un sous-réseau avec le masque de réseau /29 dans un VCN /16, indiquez 13 comme valeur de newbits (c'est-à-dire 29 moins 16).

      Une valeur newbits faible crée un sous-réseau avec un espace d'adressage plus grand.

    • netnum est utilisé pour déterminer les limites du sous-réseau. Il s'agit de l'indice de sous-réseau basé sur zéro lorsque le réseau est masqué avec newbits.

      En reprenant l'exemple précédent, si vous avez indiqué newbits=13 et netnum=0, la fonction cidrsubnet() renvoie le préfixe CIDR de sous-réseau 10.0.0.0/29, c'est-à-dire le premier espace d'adressage /29 dans le VCN 10.0.0.0/16.

    Valeurs par défaut :
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    Si vous conservez ces variables aux valeurs par défaut et que vous indiquez 10.0.0.0/16 comme plage de CIDR pour le serveur VCN, la fonction Terraform cidrsubnet() calcule les préfixes CIDR suivants pour les sous-réseaux. Les adresses disponibles apparaissent entre parenthèses. Notez que les deux premières adresses et dernière adresse d'un sous-réseau sont réservées par le service réseau.
    • Sous-réseau de base : 10.0.1.0/29 (adresses disponibles : 10.0.1.2 à 10.0.1.6, c'est-à-dire 5 hôtes)
    • Sous-réseau d'administration : 10.0.1.8/29 (10.0.1.10 à 10.0.1.14 ; 5 hôtes)
    • Sous-réseau d'équilibreur de charge interne : 10.0.2.0/27 (10.0.2.2 à 10.0.2.30 ; 29 noeuds)
    • Sous-réseau d'équilibreur de charge public : 10.0.2.32/27 (10.0.2.34 à 10.0.2.62 ; 29 noeuds)
    • Sous-réseau des noeuds actif Kubernetes : 10.0.64.0/18 (10.0.64.2 à 10.0.127.254 ; 16381 noeuds)

    Si vous avez besoin de sous-réseaux possédant des adresses ou des tailles différentes de celles par défaut, vous devez déterminer les valeurs appropriées pour newbits et netnum. Pour cela, vous devez avoir des connaissances de base sur les adresses IP sans classe. Reportez-vous également à la documentation Terraform pour la fonction cidrsubnet().

    Assurez-vous que les blocs CIDR spécifiés ici ne se chevauchent pas avec le bloc CIDR que vous indiquez pour les pods Kubernetes (pods_cidr).

    service_gateway_enabled Spécifiez true pour créer une passerelle de service pour VCN.

    Une passerelle de service est obligatoire si les instances de calcul de VCN doivent accéder à d'autres services Oracle tels qu'Oracle Cloud Infrastructure Object Storage.

    vcn_cidr Bloc IPv4 CIDR de votre choix pour VCN.

    La valeur par défaut est 10.0.0.0/16. La plage autorisée va de /16 à /30.

    Assurez-vous que le bloc CIDR que vous indiquez ici ne chevauche pas le bloc CIDR que vous indiquez pour les services Kubernetes (services_cidr).

    vcn_dns_label Préfixe de nom pour le nom DNS interne du serveur VCN.

    Le nom que vous indiquez ici est précédé de oraclevcn.com pour former le nom de domaine DNS du serveur VCN. Par exemple, si vous indiquez oke comme préfixe, le nom de domaine DNS de VCN est oke.oraclevcn.com

    vcn_name Nom de la ressource VCN.
    bastion_access Plage d'adresses IP (en notation CIDR) à partir de laquelle l'accès SSH à la base doit être autorisé.

    Pour autoriser l'accès SSH à partir de n'importe quel hôte (0.0.0.0/0), laissez la variable à sa valeur par défaut, ANYWHERE.

    bastion_enabled Indiquez true pour créer un hôte de base.
    bastion_image_id OCID de l'image à utiliser pour créer l'hôte de base.

    Si vous conservez cette variable à la valeur par défaut, NONE, une image Oracle Autonomous Linux est utilisée.

    bastion_notification_enabled Vous pouvez utiliser Oracle Cloud Infrastructure Notification Service pour recevoir les messages de statut de l'hôte de base lorsque des mises à jour sont appliquées ou lorsqu'une tentative d'exploitation connue a été détectée par Oracle Ksplice.
    Indiquez true pour activer l'envoi de notifications sur l'hôte de base.

    Remarque :

    Le code Terraform de cette solution configure les notifications pour l'hôte de base uniquement lorsque vous utilisez l'image Linux autonome Oracle par défaut.
    bastion_notification_endpoint Adresse électronique à laquelle les notifications doivent être envoyées. Cette variable est obligatoire si vous affectez la valeur true à bastion_notification_enabled.
    bastion_notification_protocol Définissez cette variable sur EMAIL.
    bastion_notification_topic Nom du sujet de notification à créer. Cette variable est obligatoire si vous affectez la valeur true à bastion_notification_enabled.
    bastion_package_upgrade Spécifiez true si vous souhaitez que les packages de sécurité de l'hôte de base soient mis à niveau lors de la première initialisation de l'hôte.

    Lorsque cette variable est définie sur true, après le provisionnement de l'hôte de base, elle n'est plus disponible pendant une courte période pendant la mise à niveau des packages de sécurité. Toutefois, l'activation de cette mise à niveau réduit les vulnérabilités de l'hôte de base.

    bastion_shape Forme de calcul à utiliser pour l'hôte de base.
    bastion_timezone Fuseau horaire à configurer pour l'hôte de base, au format de fuseau horaire IANA (par exemple, America/Los_Angeles).
    admin_enabled Spécifiez true pour créer un hôte d'administration.
    admin_image_id OCID de l'image à utiliser pour créer l'hôte de base.

    Si vous conservez cette variable à la valeur par défaut, NONE, une image Linux fournie par Oracle est utilisée.

    admin_instance_principal Spécifiez true si vous voulez activer l'hôte d'administration pour gérer toutes les ressources dans le compartiment indiqué.
    Utilisez cette fonction si vous envisagez d'exécuter des commandes CLI ou d'effectuer des appels d'API à partir de l'hôte admin pour gérer les ressources dans la topologie.

    Remarque :

    Tout utilisateur pouvant se connecter à une instance de calcul à l'aide de SSH hérite des privilèges instance-principal octroyés à l'instance. Pensez à vous indiquer si l'hôte d'administration est un principal d'instance. Vous pouvez désactiver cette fonction ou à tout moment sans incidence sur l'hôte d'administration.

    Si vous définissez cette variable sur true, l'hôte admin devient membre d'un groupe dynamique, et une instruction de stratégie est créée pour permettre au groupe dynamique de gérer toutes les ressources du compartiment.

    admin_notification_enabled

    admin_notification_endpoint

    admin_notification_protocol

    admin_notification_topic

    Conservez ces variables aux valeurs par défaut. L'activation des notifications pour l'hôte d'administration n'est pas prise en charge actuellement dans ce code Terraform.
    admin_package_upgrade Spécifiez true si vous souhaitez que les packages de sécurité de l'hôte d'administration soient mis à niveau lors de la première initialisation de l'hôte.

    Lorsque cette variable est définie sur true, une fois les infos de paramétrage fournies pour l'hôte d'administration, elle n'est plus disponible pendant une courte période pendant la mise à niveau des packages de sécurité. Toutefois, l'activation de cette mise à niveau réduit les vulnérabilités de l'hôte d'administration.

    admin_shape Forme de calcul à utiliser pour l'hôte d'administration.
    admin_timezone Fuseau horaire à configurer pour l'hôte d'administration, au format de fuseau horaire IANA (par exemple, America/Los_Angeles).
    availability_domains Domaine de disponibilité sur lequel vous voulez provisionner les hôtes d'administration et de base.

    Par exemple, pour fournir les infos de paramétrage de l'hôte de base dans le deuxième domaine de disponibilité, définissez bastion = 2.

    Si la région que vous avez indiquée contient un seul domaine de disponibilité, conservez cette variable à sa valeur par défaut, 1.

    tagging Indiquez les balises à affecter aux ressources de calcul et de mise en réseau.
    allow_node_port_access Indiquez true si vous souhaitez autoriser le trafic TCP vers les noeuds de travail Kubernetes lorsqu'ils sont déployés en mode public.
    allow_worker_ssh_access Spécifiez true si vous souhaitez autoriser les connexions SSH aux noeuds de processus actif Kubernetes via l'hôte de base.

    Même si les noeuds actifs sont déployés en mode public, les connexions SSH doivent passer par l'hôte de base.

    Si vous définissez cette variable sur true, vous devez également définir bastion_enabled = true.

    cluster_name Nom du cluster Kubernetes.
    dashboard_enabled Indiquez true si vous souhaitez créer le tableau de bord Kubernetes par défaut.
    kubernetes_version Version de Kubernetes à utiliser pour les noeuds de salarié.

    Si vous conservez cette variable à sa valeur par défaut, LATEST, la dernière version prise en charge est sélectionnée. Pour utiliser une version spécifique, indiquez cette version.

    node_pools Nombre de pools de noeuds à créer, taille de chaque pool et forme de calcul à utiliser pour les noeuds de salarié, au format suivant :
    node_pools = {
      "np1" = ["computeShape", numberOfNodes]
      "np2" = ["computeShape", numberOfNodes]
      "np3" = ["computeShape", numberOfNodes]
      ...
    }
    • np1, np2 et np3 sont des noms arbitraires représentant des pools de noeuds individuels.
    • computeShape est la forme de calcul à utiliser pour les noeuds de salarié dans le pool.
    • numberOfNodes représente le nombre de noeuds de travail Kubernetes à créer dans le pool. Un minimum de trois noeuds est créé dans chaque pool, même si vous spécifiez une valeur inférieure.
    L'exemple suivant concerne un cluster composé de deux pools, chacun utilisant une forme de calcul différente et contenant un nombre différent de noeuds de salarié Kubernetes :
    node_pools = {
      "np1" = ["VM.Standard2.1", 3]
      "np2" = ["VM.Standard2.2", 5]
    }
    node_pool_name_prefix Préfixe du nom des pools de noeuds.

    Les noms des pools de noeuds sont générés par concaténation des valeurs de label_prefix, node_pool_name_prefix et du numéro de pool de noeuds. Par exemple, si vous indiquez label_prefix = "prod" et node_pool_name_prefix = "np", les noms générés des pools de noeuds seront prod-np-1, prod-np-2, prod-np-3, etc.

    node_pool_image_id OCID de l'image à utiliser pour les noeuds de processus actif Kubernetes.

    Si vous conservez cette variable à la valeur par défaut, NONE, une image qui correspond aux valeurs indiquées pour node_pool_os et node_pool_os_version est utilisée.

    node_pool_os Système d'exploitation à utiliser pour les noeuds de travail Kubernetes (par exemple, "Oracle Linux").

    Ce paramètre est pris en compte uniquement si vous définissez node_pool_image_id = "NONE"

    node_pool_os_version Version du système d'exploitation à utiliser pour les noeuds de travail Kubernetes (par exemple, "7.7").

    Ce paramètre est pris en compte uniquement si vous définissez node_pool_image_id = "NONE"

    pods_cidr Bloc IPv4 CIDR de votre choix pour les pods Kubernetes.

    Assurez-vous que le bloc CIDR que vous indiquez ici ne chevauche pas le bloc CIDR que vous indiquez pour le VCN (vcn_cidr).

    services_cidr Bloc IPv4 CIDR de votre choix pour les pods Kubernetes.

    Assurez-vous que le bloc CIDR que vous indiquez ici ne chevauche pas le bloc CIDR que vous indiquez pour le VCN (vcn_cidr).

    worker_mode Spécifiez public si les noeuds de travail doivent être accessibles à partir du réseau Internet public. Sinon, paramétrez cette variable sur private.

    Si vous définissez worker_mode = "private", définissez nat_gateway_enabled = true

    lb_subnet_type et preferred_lb_subnets Les valeurs indiquées pour lb_subnet_type et preferred_lb_subnets déterminent le type de sous-réseau à utiliser pour les noeuds d'équilibreur de charge que vous déployez à l'aide du service Kubernetes de type LoadBalancer.

    Les équilibreurs de charge publics possèdent des adresses IP publiques. Les équilibreurs de charge internes disposent uniquement d'adresses IP privées et ne sont pas accessibles à partir du réseau Internet public.

    • Si vous prévoyez d'utiliser des équilibreurs de charge publics, définissez preferred_lb_subnet = "public" et subnet_type sur "both" ou "public"
    • Si vous prévoyez d'utiliser des équilibreurs de charge internes, définissez preferred_lb_subnet = "internal" et subnet_type sur "both" ou "internal"

      Même si vous définissez les sous-réseaux d'équilibreur de charge comme internes, vous devez définir les annotations appropriées (telles que service.beta.kubernetes.io/oci-load-balancer-internal: "true") lorsque vous créez des services d'équilibreur de charge internes. Il n'est pas suffisant de définir les sous-réseaux comme privés.

      Pour plus d'informations sur la création des équilibreurs de charge internes, reportez-vous à la documentation Oracle Cloud Infrastructure.

    secret_id ID de la clé secrète dans le service Oracle Cloud Infrastructure Vault, où le jeton d'authentification à utiliser pour extraire des images d'application d'Oracle Cloud Infrastructure Registry est stocké.
    Vous devez également définir les éléments suivants :
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    email_address Adresse électronique à utiliser lors de la génération du secret Docker. Une adresse électronique est requise, mais ce que vous spécifiez n'a pas d'importance.

    Cette variable est obligatoire si vous spécifiez secret_id.

    tenancy_name Espace de noms Oracle Cloud Infrastructure Object Storage de la location contenant le registre à partir duquel les images doivent être extraites pour les déploiements vers le cluster Kubernetes.

    Cette variable est obligatoire si vous spécifiez secret_id.

    username Nom utilisateur pour lequel vous avez généré le jeton d'authentification stocké dans secret_id.

    Cette variable est obligatoire si vous spécifiez secret_id.

    install_helm Indiquez true si vous souhaitez installer Helm.

    Helm est un gestionnaire de packages pour Kubernetes.

    Pour installer Helm, vous devez également définir admin_instance_principal = true.

    helm_version Version du client Helm à installer.

    Tiller (l'homologue côté serveur de Helm) est mis à niveau automatiquement.

    install_calico Indiquez true si vous souhaitez installer Calico.

    Vous pouvez utiliser Calico pour implémenter les stratégies réseau pour les charges de travail des conteneurs déployées sur des clusters Kubernetes.

    Si vous définissez install_calico = true, vous devez également définir les éléments suivants :
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    calico_version Version de Calico à installer.
    install_metricserver Indiquez true si vous souhaitez installer le serveur de mesures Kubernetes.

    Par défaut, la dernière version est installée dans l'espace de noms kube-system. Le serveur de mesures Kubernetes agrège les données d'utilisation des ressources dans un cluster.

    Si vous définissez install_metricserver = true, vous devez également définir les éléments suivants :
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    use_encryption Si vous voulez utiliser le service Oracle Cloud Infrastructure Vault pour crypter les secrets de Kubernetes, définissez cette variable sur true.
    Si vous définissez use_encryption = true, vous devez également définir les éléments suivants :
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    existing_key_id OCID d'une clé existante créée dans le service Oracle Cloud Infrastructure Vault.

    Cette variable est obligatoire si vous affectez la valeur true à use_encryption.

    create_service_account Si vous voulez que des processus et des outils externes (tels qu'un pipeline d'intégration continue et de déploiement continu) accèdent au cluster, définissez cette variable sur true. Un compte de service est créé avec son propre jeton d'authentification.
    Si vous définissez create_service_account = true, vous devez également définir les éléments suivants :
    bastion_enabled = true
    admin_enabled = true
    admin_instance_principal = true
    service_account_name Nom du compte de service à créer.
    service_account_namespace Espace de noms Kubernetes dans lequel le compte doit être créé.
    service_account_cluster_role_binding Nom de la liaison de rôle de cluster pour le compte de service.

    Vous trouverez ci-dessous un exemple de fichier terraform.tfvars terminé.

    # Identity and access parameters
    
    api_fingerprint = "d4:dc:...(truncated)"
    
    api_private_key_path = "/home/joe/.oci/oci_api_key.pem"
    
    compartment_id = "ocid1.compartment.oc1..aaaaaaaaxxx... (truncated)"
    
    tenancy_id = "ocid1.tenancy.oc1..aaaaaaaaxxx... (truncated)"
    
    user_id = "ocid1.user.oc1..aaaaaaaaxxx... (truncated)"
    
    ssh_private_key_path = "/home/joe/.ssh/id_rsa"
    
    ssh_public_key_path = "/home/joe/.ssh/id_rsa.pub"
    
    # general oci parameters
    label_prefix = "prod"
    
    region = "us-phoenix-1"
    
    # networking
    
    nat_gateway_enabled = true
    
    netnum = {
      admin   = 33
      bastion = 32
      int_lb  = 16
      pub_lb  = 17
      workers = 1
    }
    
    newbits = {
      admin   = 13
      bastion = 13
      lb      = 11
      workers = 2
    }
    
    service_gateway_enabled = true
    
    vcn_cidr = "10.0.0.0/16"
    
    vcn_dns_label = "oke"
    
    vcn_name = "oke vcn"
    
    # bastion
    
    bastion_access = "ANYWHERE"
    
    bastion_enabled = true
    
    bastion_image_id = "NONE"
    
    bastion_notification_enabled = true
    
    bastion_notification_endpoint = "joe@example.com"
    
    bastion_notification_protocol = "EMAIL"
    
    bastion_notification_topic = "bastion_server_notification"
    
    bastion_package_upgrade = true
    
    bastion_shape = "VM.Standard.E2.1"
    
    bastion_timezone = "America/Los_Angeles"
    
    admin_enabled = true
    
    admin_image_id = "NONE"
    
    admin_instance_principal = true
    
    admin_notification_enabled = false
    
    admin_notification_endpoint = "joe@example.com"
    
    admin_notification_protocol = "EMAIL"
    
    admin_notification_topic = "admin_server_notification"
    
    admin_package_upgrade = true
    
    admin_shape = "VM.Standard.E2.1"
    
    admin_timezone = "America/Los_Angeles"
    
    # availability_domains
    
    availability_domains = {
      bastion = 1
      admin   = 1
    }
    
    tagging = {
      computetag = {"Environment" = "dev" }
      networktag = { "Name" = "network" }
    }
    
    # oke
    
    allow_node_port_access = false
    
    allow_worker_ssh_access = false
    
    cluster_name = "oke"
    
    dashboard_enabled = true
    
    kubernetes_version = "LATEST"
    
    node_pools = {
      np1 = ["VM.Standard2.1", 3]
      #np2 = ["VM.Standard2.8", 4]
      #np3 = ["VM.Standard1.4", 5]
    }
    
    node_pool_name_prefix = "np"
    
    node_pool_image_id = "NONE"
    
    node_pool_os = "Oracle Linux"
    
    node_pool_os_version = "7.7"
    
    pods_cidr = "10.244.0.0/16"
    
    services_cidr = "10.96.0.0/16"
    
    worker_mode = "private"
    
    # oke load balancers
    
    lb_subnet_type = "public"
    
    preferred_lb_subnets = "public"
    
    # ocir
    
    secret_ocid = "ocid1.key.oc1..aaaaaaaaxxx... (truncated)"
    
    email_address = "joe@example.com"
    
    tenancy_name = "mytenancy"
    
    username = "joe_k8s_admin"
    
    # helm
    
    helm_version = "3.0.0"
    
    install_helm = false
    
    # calico
    
    calico_version = "3.9"
    
    install_calico = false
    
    # metrics server
    
    install_metricserver = false
    
    use_encryption = false
    
    existing_key_id = ""
    
    # service accountcreate_service_account = true
    service_account_name = "kubeconfigsa"
    service_account_namespace = "kube-system"
    service_account_cluster_role_binding = "myapps-manage-binding"
  5. Enregistrez et fermez le fichier terraform.tfvars.