Remplacement des volumes d'initialisation des noeuds de processus actif

Découvrez comment remplacer les volumes d'initialisation des noeuds de processus actif dans un cluster Kubernetes que vous avez créé à l'aide de Kubernetes Engine (OKE).

Remarque

Vous pouvez uniquement cycler les noeuds pour remplacer les volumes d'initialisation des noeuds de processus actif lors de l'utilisation de clusters améliorés. Reportez-vous à Utilisation des clusters améliorés et des clusters de base.

Vous pouvez cycler les noeuds pour remplacer les volumes d'initialisation des noeuds de processus actif par des formes de machine virtuelle et des formes Bare Metal.

Vous pouvez cycler les noeuds pour remplacer les volumes d'initialisation des noeuds gérés et des noeuds autogérés.

Parfois, le remplacement des volumes d'initialisation des instances de calcul hébergeant des noeuds de processus actif est le meilleur moyen de résoudre un problème avec les noeuds de processus actif. Par exemple :

  • Pour résoudre toute dérive de configuration qui aurait pu se produire depuis le lancement initial de l'instance.
  • Pour traiter les pannes matérielles sous-jacentes.

A l'aide de Kubernetes Engine, vous pouvez :

Lorsque vous cyclez et remplacez le volume d'initialisation d'un noeud de processus actif, Kubernetes Engine cordonne et draine automatiquement le noeud de processus actif avant de l'arrêter. L'instance de calcul hébergeant le noeud de processus actif est arrêtée, le volume d'initialisation est remplacé et l'instance est redémarrée. L'instance elle-même ne prend pas fin et conserve les mêmes OCID et adresse réseau.

Remplacement des volumes d'initialisation de tous les noeuds d'un pool de noeuds gérés pour modifier les propriétés des noeuds

Lorsque vous souhaitez mettre à jour une ou plusieurs des propriétés de noeud suivantes spécifiées pour le pool de noeuds, vous pouvez cycler tous les noeuds d'un pool de noeuds pour remplacer leurs volumes d'initialisation :

  • BootVolumeSizeInGBs
  • ImageId
  • KmsKeyId
  • KubernetesVersion
  • NodeMetadata
  • SshPublicKey

Lors du cyclage de tous les noeuds d'un pool de noeuds pour remplacer leurs volumes d'initialisation, tenez compte des points suivants :

  • Si vous mettez à jour une ou plusieurs des propriétés de la liste, les mises à jour de propriété sont appliquées à tous les noeuds du pool de noeuds.
  • Si vous ne mettez à jour aucune des propriétés de la liste, les noeuds du pool de noeuds ne sont pas cyclés et les volumes d'initialisation ne sont pas remplacés.
  • Si vous mettez à jour une propriété qui ne figure pas dans la liste, le cyclage du noeud et l'opération de remplacement du volume d'initialisation échouent.

Le remplacement des volumes d'initialisation de tous les noeuds d'un pool de noeuds peut s'avérer utile lorsque vous souhaitez :

Remplacement des volumes d'initialisation de noeuds individuels gérés et autogérés

Vous pouvez cycler des noeuds gérés individuels ou des noeuds autogérés pour remplacer leurs volumes d'initialisation lorsque le remplacement de volume d'initialisation est tout ce dont vous avez besoin.

Lors du cyclage de noeuds gérés individuels ou de noeuds autogérés pour remplacer leurs volumes d'initialisation, tenez compte des points suivants :

  • Pour les noeuds gérés et les noeuds autogérés, la configuration de noeud existante est préservée lors du cyclage des noeuds pour remplacer les volumes d'initialisation. Dans le cas des noeuds gérés, les mises à jour des propriétés de noeud indiquées pour le pool de noeuds sont ignorées.
  • Vous pouvez utiliser la console, l'interface de ligne de commande ou l'API pour cycler et remplacer les volumes d'initialisation des noeuds gérés.
  • Vous devez utiliser l'interface de ligne de commande ou l'API pour cycler et remplacer les volumes d'initialisation des noeuds autogérés. Vous ne pouvez pas utiliser la console pour cycler et remplacer les volumes d'initialisation des noeuds autogérés.

Equilibrage de la disponibilité et du coût des services lors du cyclage et du remplacement des volumes d'initialisation des noeuds gérés dans les pools de noeuds

Lorsque vous cyclez tous les noeuds gérés d'un pool de noeuds pour remplacer leurs volumes d'initialisation, plus le nombre de noeuds que vous autorisez à ne pas être disponibles pendant l'opération de remplacement du volume d'initialisation est élevé, plus Kubernetes Engine peut mettre à jour les noeuds en parallèle sans augmenter les coûts. Cependant, plus le nombre de noeuds que vous autorisez à être indisponibles est élevé, plus la disponibilité du service risque d'être compromise.

Afin d'adapter le comportement de Kubernetes Engine à vos propres exigences en matière de disponibilité et de coût du service, vous pouvez indiquer une valeur pour maxUnavailable. Pour plus d'informations, reportez-vous à Equilibrage de la disponibilité et du coût des services lors du cyclage des noeuds gérés dans les pools de noeuds.

Cordonage et purge lors du cyclage et du remplacement des volumes d'initialisation des noeuds

Lorsque vous sélectionnez un pool de noeuds et indiquez que vous souhaitez cycler et remplacer les volumes d'initialisation de ses noeuds de processus actifs, Kubernetes Engine connecte et draine automatiquement les noeuds gérés existants. Kubernetes Engine utilise les options de cordon et de purge indiquées pour le pool de noeuds.

Lorsque vous sélectionnez un noeud de processus actif individuel (noeud géré ou noeud autogéré) et que vous souhaitez cycler et remplacer le volume d'initialisation de ce noeud, vous pouvez spécifier les options Cordon et purge. Dans le cas de noeuds gérés, les options Cordon et purge que vous spécifiez pour un noeud géré remplacent les options Cordon et purge spécifiées pour le pool de noeuds.

Pour plus d'informations, reportez-vous à la section Cordoning and Draining Managed Nodes Before Shut Down or Termination

Remplacement des volumes d'initialisation des noeuds de processus actif

  • Pour remplacer les volumes d'initialisation de tous les noeuds de processus actif d'un pool de noeuds gérés :

    1. Dans la page de liste Clusters, sélectionnez le nom du cluster contenant les noeuds de processus actif dont vous souhaitez remplacer les volumes d'initialisation. Si vous avez besoin d'aide pour trouver la page de liste ou le cluster, reportez-vous à Liste des clusters.
    2. Sélectionnez l'onglet Pools de noeuds, puis le nom du pool de noeuds contenant les noeuds de processus actifs dont vous souhaitez remplacer les volumes d'initialisation.
    3. Dans le menu Actions, sélectionnez Modifier et modifiez au moins l'une des propriétés prises en charge répertoriées dans Remplacement des volumes d'initialisation de tous les noeuds d'un pool de noeuds gérés pour modifier les propriétés de noeud.
    4. Dans le menu Actions, sélectionnez Noeuds de cycle.

      Recommandation : utilisez les budgets alloués en cas d'interruption de pod pour votre application afin d'assurer qu'un nombre suffisant d'unités de réplique est exécuté pendant toute l'opération. Pour plus d'informations, reportez-vous à Spécification d'un budget d'interruption pour votre application dans la documentation Kubernetes.

    5. Dans la boîte de dialogue Noeuds de cycle :

      1. Sélectionnez Remplacer le volume d'initialisation dans la liste Options de recyclage.
      2. Contrôler le nombre de noeuds à mettre à jour en parallèle et équilibrer la disponibilité et le coût du service en indiquant :
        • Nombre maximal de noeuds indisponibles (nombre ou pourcentage maximal de noeuds indisponibles) : nombre maximal de noeuds pouvant être indisponibles dans le pool de noeuds lors de l'opération de remplacement du volume d'initialisation (exprimé sous forme d'entier ou de pourcentage). Si vous indiquez un nombre entier pour le nombre de noeuds non disponibles, n'indiquez pas de nombre supérieur à la valeur Nombre de noeuds.

        Reportez-vous à Equilibrage de la disponibilité et du coût du service lors du cyclage et du remplacement des volumes d'initialisation des noeuds gérés dans les pools de noeuds.

      3. Sélectionnez Noeuds de cycle pour démarrer l'opération de remplacement du volume d'initialisation.

      Kubernetes Engine utilise les options Cordon et purge indiquées pour le pool de noeuds afin de connecter et purger les noeuds de processus actif. Pour plus d'informations, reportez-vous à la section Cordoning and Draining Managed Nodes Before Shut Down or Termination.

    6. Surveillez la progression de l'opération en affichant le statut de la demande de travail associée dans l'onglet Demandes de travail (reportez-vous à Obtention des détails d'une demande de travail).

    Pour remplacer le volume d'initialisation d'un noeud géré spécifique :

    1. Dans la page de liste Clusters, sélectionnez le nom du cluster contenant le noeud de processus actif dont vous souhaitez remplacer le volume d'initialisation. Si vous avez besoin d'aide pour trouver la page de liste ou le cluster, reportez-vous à Liste des clusters.
    2. Sélectionnez l'onglet Pools de noeuds, puis le nom du pool de noeuds contenant le noeud de processus actif dont vous souhaitez remplacer le volume d'initialisation.
    3. Dans l'onglet Noeuds, sélectionnez Noeud de cycle dans le menu Actions (trois points) en regard du noeud dont vous souhaitez remplacer le volume d'initialisation.

    4. Dans la boîte de dialogue Noeud de cycle :
      1. Sélectionnez Remplacer le volume d'initialisation dans la liste Options de recyclage.
      2. Indiquez quand et comment raccorder et vider le noeud de processus actif avant d'effectuer l'action de remplacement du volume d'initialisation, en spécifiant :

        • Délai de grâce d'expulsion (minutes) : durée pendant laquelle le cordon et la purge du noeud de processus actif doivent être activés avant d'effectuer l'action. Acceptez la valeur par défaut (60 minutes, soit la valeur maximale) ou indiquez une autre valeur. Par exemple, vous pouvez autoriser 30 minutes à câbler un noeud de travail et à le vider de ses charges globales. Pour effectuer l'action immédiatement, sans cordonner ni drainer le noeud de processus actif, spécifiez 0 minute.
        • Forcer l'action après la période de grâce : indique si l'action doit être exécutée à la fin de la période de grâce d'expulsion, même si le noeud de processus actif n'a pas été correctement cordonné et vidé. Par défaut, cette option n'est pas sélectionnée.

        Reportez-vous à la section Cordoning and Draining Managed Nodes Before Shut Down or Termination.

      3. Sélectionnez Noeud de cycle pour démarrer l'opération.
    5. Surveillez la progression de l'opération en affichant le statut de la demande de travail associée dans l'onglet Demandes de travail (reportez-vous à Obtention des détails d'une demande de travail).

  • Pour remplacer les volumes d'initialisation de tous les noeuds de processus actif d'un pool de noeuds gérés

    Pour remplacer les volumes d'initialisation de tous les noeuds de processus actif d'un pool de noeuds gérés, utilisez la commande oci ce node-pool update et les paramètres requis :

    oci ce node-pool update --node-pool-id <node-pool-ocid> --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":\"BOOT_VOLUME_REPLACE\",\"maximumUnavailable\":<value>}" --<property-to-update> <new-value> [OPTIONS]

    --<property-to-update> <new-value> est au moins l'une des propriétés prises en charge répertoriées dans la section Remplacement des volumes d'initialisation de tous les noeuds d'un pool de noeuds gérés pour modifier les propriétés de noeud, spécifiée comme suit :

    • --node-source-details "{\"sourceType\":\"IMAGE\", \"imageId\":\"<image-id-for-bvr>\", \"bootVolumeSizeInGBs\":<boot-volume-size>}"
    • --node-metadata "{\"key1\":\"value1\"}"
    • --ssh-public-key "<key>"
    • --kms-key-id "<key-ocid>"
    • --kubernetes-version <k8s-version>

    Par exemple :

    oci ce node-pool update --node-pool-id ocid1.nodepool.oc1.iad.aaaaaaa______eya --node-pool-cycling-details "{\"isNodeCyclingEnabled\":true,\"cycleModes\":\"BOOT_VOLUME_REPLACE\",\"maximumUnavailable\":1}" --node-metadata "{\"foo\":\"bar\"}"
                                

    Pour remplacer le volume d'initialisation d'un noeud géré ou d'un noeud autogéré spécifique

    Pour remplacer le volume d'initialisation d'un noeud géré ou d'un noeud autogéré spécifique, utilisez la commande oci ce cluster replace-boot-volume-cluster-node et les paramètres requis :

    oci ce cluster replace-boot-volume-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]

    Par exemple :

    oci ce cluster replace-boot-volume-cluster-node --cluster-id ocid1.cluster.oc1.iad.aaaaaaaaaf______jrd --node-id ocid1.instance.oc1.iad.anu__flq --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"
  • Pour remplacer les volumes d'initialisation de tous les noeuds de processus actif d'un pool de noeuds gérés à l'aide de l'API OCI, procédez comme suit :

    Exécutez l'opération UpdateNodePool pour remplacer les volumes d'initialisation de tous les noeuds de processus actif d'un pool de noeuds gérés.

    Pour remplacer le volume d'initialisation d'un noeud géré spécifique à l'aide de l'API OCI, procédez comme suit :

    Exécutez l'opération ReplaceBootVolumeClusterNode pour remplacer le volume d'initialisation d'un noeud géré spécifique à l'aide de l'API OCI.

    Pour remplacer le volume d'initialisation d'un noeud géré ou d'un noeud autogéré à l'aide de l'API Kubernetes :

    Remarque

    Pour utiliser l'API Kubernetes afin de remplacer le volume d'initialisation d'un noeud géré ou d'un noeud autogéré qui utilise une image personnalisée (plutôt qu'une image de plate-forme ou une image OKE), une stratégie IAM doit fournir l'accès à l'image personnalisée. Si une telle stratégie n'existe pas déjà, créez-en une avec l'instruction de stratégie suivante :

    ALLOW any-user to read instance-images in TENANCY where request.principal.type = 'cluster'

    Reportez-vous à Configuration de stratégies pour la création et le déploiement de clusters.

    1. Créez un fichier YAML pour définir une ressource personnalisée NodeOperationRule, comme suit :
      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: <rule-name>
      spec:
        actions:
          - "replaceBootVolume"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "<value>"
          matchCustomLabels:
            <custom-key>: "<value>"
        maxParallelism: <n>
        nodeEvictionSettings:
          evictionGracePeriod: <number-of-minutes>
          isForceActionAfterGraceDuration: <true|false>
      

      où :

      • name: <rule-name> indique le nom de votre choix pour la ressource personnalisée NodeOperationRule. Par exemple, name: my-bvr-rule
      • oke.oraclecloud.com/node_operation: "<value>" indique la valeur de votre choix pour la clé de libellé oke.oraclecloud.com/node_operation. Les noeuds pour lesquels vous souhaitez remplacer les volumes d'initialisation doivent être associés à cette paire clé-valeur d'étiquette. Par exemple :
            matchTriggerLabel:
              oke.oraclecloud.com/node_operation: "my-bvr-value"

        La valeur que vous indiquez pour la clé de libellé oke.oraclecloud.com/node_operation doit être conforme aux exigences de la rubrique Libellés et sélecteurs de la documentation Kubernetes. Seules les exigences basées sur l'égalité de Kubernetes sont prises en charge.

      • matchCustomLabels indique éventuellement un libellé personnalisé avec la paire clé-valeur de votre choix au format <custom-key>: "<value>". Vous pouvez éventuellement spécifier une paire clé-valeur de libellé personnalisée pour répondre à votre propre cas d'utilisation. Par exemple :
            matchCustomLabels:
              deployment: "green"

        La paire clé-valeur de libellé personnalisé que vous indiquez doit être conforme aux exigences de la rubrique Libellés et sélecteurs de la documentation Kubernetes. Seules les exigences basées sur l'égalité de Kubernetes sont prises en charge.

        Si vous spécifiez une paire clé-valeur d'étiquette personnalisée dans le manifeste, les volumes d'initialisation ne sont remplacés que pour les noeuds qui ont cette étiquette personnalisée et l'étiquette oke.oraclecloud.com/node_operation: "<value>".

      • maxParallelism: <n> indique le nombre de noeuds de processus actifs pour lesquels remplacer les volumes d'initialisation en parallèle, jusqu'à un maximum de 20.
      • evictionGracePeriod: <number-of-minutes> indique la durée pendant laquelle les noeuds de processus actif de cordon et de purge doivent être autorisés avant le remplacement des volumes d'initialisation. Acceptez la valeur par défaut (60 minutes, soit la valeur maximale) ou indiquez une autre valeur. Par exemple, vous pouvez accorder 30 minutes aux nœuds de travail en cordon et les vider de leurs charges de travail. Pour remplacer immédiatement les volumes d'initialisation des noeuds de processus actifs, sans les cordonner et les vider, spécifiez 0 minute.
      • isForceActionAfterGraceDuration: <true|false> indique si le volume d'initialisation des noeuds de processus actif doit être remplacé à la fin de la période de grâce d'expulsion, même s'ils n'ont pas été correctement cordonnés et vidés. La valeur par défaut est false si aucune valeur n'est indiquée.

      Par exemple :

      apiVersion: oci.oraclecloud.com/v1beta1
      kind: NodeOperationRule
      metadata:
        name: my-bvr-rule
      spec:
        actions:
          - "replaceBootVolume"
        nodeSelector:
          matchTriggerLabel:
            oke.oraclecloud.com/node_operation: "my-bvr-value"
          matchCustomLabels:
            deployment: "green"
        maxParallelism: 2
        nodeEvictionSettings:
          evictionGracePeriod: 60
          isForceActionAfterGraceDuration: true
      
    2. Utilisez kubectl pour appliquer le fichier yaml au cluster en saisissant la commande suivante :

      kubectl apply -f <filename>.yaml
    3. Utilisez kubectl pour confirmer que la ressource personnalisée NodeOperationRule a été créée en saisissant la commande suivante :

      kubectl get nor
    4. Utilisez kubectl pour ajouter au noeud un libellé indiquant la valeur de la clé de libellé oke.oraclecloud.com/node_operation en saisissant la commande suivante :

      kubectl label node <node-name> oke.oraclecloud.com/node_operation=<value>

      Par exemple :

      kubectl label node 10.0.10.53 oke.oraclecloud.com/node_operation=my-bvr-value
    5. Si vous avez inclus un élément matchCustomLabels dans le manifeste pour spécifier une paire clé-valeur de libellé personnalisée, utilisez kubectl pour ajouter un libellé au noeud qui spécifie la paire clé-valeur en saisissant ce qui suit :
      kubectl label node <node-name> <custom-key>=<value>

      Par exemple :

      kubectl label node 10.0.10.53 deployment=green
    6. (Facultatif) Vous pouvez afficher l'action de remplacement du volume d'initialisation en cours en saisissant la commande suivante :

      kubectl describe nor <rule-name>
      Par exemple :
      kubectl describe nor my-bvr-rule
      Exemple de sortie :
      Name:         my-bvr-rule
      Namespace:   
      Labels:       <none>
      Annotations:  <none>
      API Version:  oci.oraclecloud.com/v1beta1
      Kind:         NodeOperationRule
      Metadata:
        Creation Timestamp:  2025-02-11T00:11:11Z
        Finalizers:
          nodeoperationrule.oci.oraclecloud.com/finalizers
        Generation:        1
        Resource Version:  244259806
        UID:               xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      Spec:
        Actions:
          replaceBootVolume
        Max Parallelism:  2
        Node Eviction Settings:
          Eviction Grace Period:                 60
          Is Force Action After Grace Duration:  true
        Node Selector:
          Match Trigger Label:
            oke.oraclecloud.com/node_operation:  my-bvr-value
          Match Custom Label:
            deployment: green
      Status:
        Back Off Nodes:
        Canceled Nodes:
        In Progress Nodes:
        	Node Name:        10.0.10.53
          Work Request Id:  ocid1.clustersworkrequest.oc1.phx.aaaa______jda
        Pending Nodes:
        Succeeded Nodes:
      Events:
        Type    Reason                  Age   From               Message
        ----    ------                  ----  ----               -------
        Normal  StartedNodeOperation    1m   NodeOperationRule  Started node operation on node with work request ID: 10.0.10.105: ocid1.clustersworkrequest.oc1.phx.aaaa______jda
      ```
      

Remplacement des volumes d'initialisation des noeuds autogérés après la rotation des informations d'identification de cluster

Si vous avez ajouté un noeud autogéré à un cluster et que vous effectuez ensuite une rotation des informations d'identification du cluster, le remplacement du volume d'initialisation du noeud autogéré nécessite des étapes supplémentaires (en plus de celles décrites dans Remplacement des volumes d'initialisation des noeuds de processus actif). Les étapes supplémentaires sont requises car le certificat d'autorité de certification du cluster est référencé dans le script cloud-init de noeuds autogérés.

Supposons que vous avez déjà effectué la rotation du certificat CA du cluster auquel un noeud autogéré a été ajouté, en suivant les instructions de la section Rotation des informations d'identification de cluster. Si vous souhaitez à présent remplacer le volume d'initialisation du noeud autogéré, vous devez d'abord modifier le script cloud-init du noeud autogéré. Vous devez remplacer le certificat CA précédent du cluster référencé dans le script par le certificat CA actuel du cluster. Suivez les étapes ci-après :

  1. Obtenez les détails de l'instance de calcul hébergeant le noeud autogéré en saisissant ce qui suit :
    oci compute instance get --instance-id <instance-ocid>

    Par exemple :

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra

    Des détails sur l'instance de calcul sont renvoyés.

  2. Localisez l'OCID du volume d'initialisation (indiqué dans source-details dans la sortie de la commande oci compute instance get) et notez-le en saisissant la commande suivante :

    oci compute instance get --instance-id <instance-ocid> --query 'data."source-details"."boot-volume-id"' --raw-output
    

    Par exemple :

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra --query 'data."source-details"."boot-volume-id"' --raw-output
    

    Exemple de sortie :

    ocid1.bootvolume.oc1.phx.aaaa______g4a

    Vous utiliserez l'OCID de volume d'initialisation ultérieurement.

  3. Localisez les valeurs metadata affichées dans la sortie comme suit :

    "metadata": {
    "ssh_authorized_keys": "<key-value>",
    "user_data": "<existing-base64-encoded-init-script>"
    }

    ssh_authorized_keys est présent lorsque l'accès SSH au noeud a été configuré (ce qui est généralement le cas, mais pas toujours).

    Par exemple :

    "metadata": {
    "ssh_authorized_keys": "ssh-rsa AAAA_____ example@acme.com",
    "user_data": "IyEv___1234___PSIK"
    }
    La valeur de user_data est le script cloud-init utilisé à l'origine pour ajouter l'instance de calcul au cluster en tant que noeud autogéré, au format encodé en base64. Le script cloud-init indique l'adresse privée d'API Kubernetes du cluster et le précédent certificat d'autorité de certification encodé en base64 du cluster.
  4. Copiez les valeurs ssh_authorized_keys et user_data et enregistrez-les dans un nouveau fichier nommé metadata.json, en saisissant la commande suivante :
    oci compute instance get --instance-id <instance-ocid> --query 'data.metadata' --raw-output > metadata.json

    Exemple de fichier metadata.json :

    {
    "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
    "user_data": "IyEv___1234___PSIK"
    }
  5. Copiez la valeur de user_data (script cloud-init d'origine encodé en base64) et décodez-la en saisissant la commande suivante :
    echo "<existing-base64-encoded-init-script>" | base64 --decode

    Par exemple :

    echo "IyEv___1234___PSIK" | base64 --decode

    La sortie décodée est le script cloud-init d'origine. Par exemple :

    #!/usr/bin/env bash
    bash /etc/oke/oke-install.sh \
      --apiserver-endpoint "10.0.0.12" \
      --kubelet-ca-cert "LS0txxxx______Cg=="

    La valeur de --kubelet-ca-cert est le certificat CA précédent du cluster, au format encodé en base64.

  6. Enregistrez la sortie décodée en tant que fichier texte nommé my-cloud-init-file.
  7. Obtenez le certificat CA actuel du cluster (c'est-à-dire le certificat CA du cluster après rotation) en saisissant :
    oci ce cluster create-kubeconfig --cluster-id <cluster-ocid> --region <region-identifier> --file - | grep -oE "LS0t.*"

    Le certificat d'autorité de certification encodé en base64 en cours du cluster est renvoyé sous forme de chaîne alphanumérique longue, en commençant par les caractères LS0t. Par exemple :

    LS0tyyyy______aP==
  8. Dans le script cloud-init que vous avez enregistré dans my-cloud-init-file, remplacez la valeur d'origine de --kubelet-ca-cert par le certificat d'autorité de certification encodé en base64 en cours, puis enregistrez le fichier.

    Par exemple :

    #!/usr/bin/env bash
    bash /etc/oke/oke-install.sh \
      --apiserver-endpoint "10.0.0.12" \
      --kubelet-ca-cert "LS0tyyyy______aP=="
  9. Base64 encode le script cloud-init mis à jour dans my-cloud-init-file. Par exemple, entrez la commande suivante :
    base64 my-cloud-init-file

    Le script cloud-init mis à jour est encodé en base64 et renvoyé sous la forme d'une longue chaîne alphanumérique. Par exemple :

    IyEv___5678___PSIK
  10. Mettez à jour le fichier metadata.json que vous avez créé précédemment, comme suit :

    • Le cas échéant, conservez la valeur de ssh_authorized_keys inchangée.
    • Remplacez la valeur de user_data par la chaîne alphanumérique codée en base64 que vous venez de créer à partir du script cloud-init mis à jour.

    Par exemple :

    {
          "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
          "user_data": "IyEv___5678___PSIK"
    }
  11. Utilisez l'OCID de volume d'initialisation que vous avez noté précédemment pour obtenir des détails sur le volume d'initialisation existant, en saisissant la commande suivante :
    oci bv boot-volume get --boot-volume-id <boot-volume-ocid> --query 'data.{ "image_id": "image-id", "kms_key_id": "kms-key-id", "boot-volume-size-in-gbs": "boot-volume-size-in-gbs" }' --raw-output

    Par exemple :

    oci bv boot-volume get --boot-volume-id ocid1.bootvolume.oc1.phx.aaaa______g4a --query 'data.{ "image_id": "image-id", "kms_key_id": "kms-key-id", "boot-volume-size-in-gbs": "boot-volume-size-in-gbs" }' --raw-output

    Exemple de sortie :

    {
      "image_id": "ocid1.image.oc1.phx.aaaa____cra",
      "boot-volume-size-in-gbs": 100,
      "kms_key_id": null
    }
  12. Utilisez la sortie pour indiquer les mêmes valeurs pour les propriétés source-details de l'instance de calcul dans un nouveau fichier json nommé my-instance-source-details.json, au format suivant :
    {
    "image-id": "<returned-bv-image-ocid>",
    "source-type": "image",
    "boot-volume-size-in-gbs": <returned-bv-size>,
    "kms_key_id": <returned-bv-kms-key-ocid>
    "isPreserveBootVolumeEnabled": true
    }

    Vous n'avez pas besoin d'inclure de propriétés de volume d'initialisation dans le fichier my-instance-source-details.json qui présentent une valeur null dans la sortie de la commande oci bv boot-volume get. Par exemple, si le volume d'initialisation n'est pas chiffré avec une clé gérée par l'utilisateur, la valeur de kms_key_id est affichée sous la forme null.

    Par exemple :

    {
    "image-id": "ocid1.image.oc1.phx.aaaa____cra",
    "source-type": "image",
    "boot-volume-size-in-gbs": 100,
    "isPreserveBootVolumeEnabled": true
    }

    Vous devez fournir une valeur pour image-id afin de mettre à jour les propriétés user_data (en particulier, pour mettre à jour le script cloud-init avec le nouveau certificat d'autorité de certification).

  13. Mettez à jour les détails de l'instance de calcul hébergeant le noeud autogéré en saisissant

    oci compute instance update --instance-id ocid1.instance.oc1.phx.any______blra --metadata file://metadata.json --source-details file://my-instance-source-details.json
     
  14. Vérifiez que l'instance de calcul hébergeant le noeud autogéré a la valeur mise à jour pour user_data, en saisissant ce qui suit :

    oci compute instance get --instance-id <instance-ocid>

    Par exemple :

    oci compute instance get --instance-id ocid1.instance.oc1.phx.any______blra

    Les détails mis à jour sur l'instance de calcul hébergeant le noeud autogéré sont renvoyés.

    {
      "data": {
        ...
        "metadata": {
          "ssh_authorized_keys": "ssh-rsa AAAA_____ user@acme.com",
          "user_data": "IyEv___5678___PSIK"
        ...

    Une fois la valeur user_data mise à jour vers le fichier cloud-init encodé en base64 contenant le nouveau certificat d'autorité de certification de cluster, vous pouvez désormais remplacer le volume d'initialisation du noeud autogéré.

  15. Remplacez le volume d'initialisation du noeud autogéré en saisissant la commande suivante :
    oci ce cluster replace-boot-volume-cluster-node --cluster-id <cluster-ocid> --node-id <instance-ocid> [OPTIONS]

    Par exemple :

    oci ce cluster replace-boot-volume-cluster-node --cluster-id ocid1.cluster.oc1.phx.aaaa______xoq --node-id ocid1.instance.oc1.phx.any______blra --node-eviction-settings "{\"evictionGraceDuration\": \"PT0M\",\"isForceActionAfterGraceDuration\": true}"

    Pour plus d'informations, reportez-vous à Remplacement des volumes d'initialisation des noeuds de processus actif.