Personnaliser la configuration containerd dans les nœuds GKE


Cette page explique comment personnaliser la configuration de l'environnement d'exécution des conteneurs containerd sur vos nœuds Google Kubernetes Engine (GKE). Avant de lire ce document, assurez-vous de maîtriser ce qu'est un environnement d'exécution de conteneur et pourquoi vous souhaitez le personnaliser.

À propos de la configuration containerd dans GKE

Vous pouvez configurer manuellement un ensemble d'options dans l'environnement d'exécution containerd sur des nœuds GKE exécutant un système d'exploitation tel que Container-Optimized OS. La personnalisation de l'environnement d'exécution vous permet de configurer des exigences spéciales telles que l'accès aux registres d'images privés. Pour définir ces options, vous devez créer un fichier YAML appelé fichier de configuration de l'environnement d'exécution et le transmettez à GKE lorsque vous créez ou mettez à jour un cluster.

Cette méthode de personnalisation de containerd vous permet d'éviter de déployer des DaemonSet privilégiés, qui constituent un risque pour la sécurité. Lorsque vous fournissez un fichier de configuration d'exécution à GKE, GKE recrée vos nœuds et met à jour le fichier config.toml containerd sur chaque nœud avec votre configuration. La configuration persiste lors de l'arrêt, des mises à niveau et des recréation des nœuds.

Le fichier de configuration de l'environnement d'exécution vous permet uniquement de configurer des options dans containerd. GKE accepte également la configuration d'options kubelet spécifiques et d'options de noyau Linux de bas niveau à l'aide d'un fichier distinct appelé fichier de configuration du système de nœud. Pour en savoir plus, consultez la page Personnaliser la configuration du système de nœud.

Limites

Vous ne pouvez pas utiliser un fichier de configuration d'exécution pour modifier les paramètres containerd dans les images de nœuds Ubuntu. Seul Container-Optimized OS avec containerd est compatible. Il s'agit de l'image de nœud par défaut pour tous les clusters GKE.

Options de configuration containerd disponibles

Le tableau suivant décrit les options que vous pouvez configurer à l'aide d'un fichier de configuration d'environnement d'exécution:

Options du fichier de configuration de l'environnement d'exécution

Accédez à des registres d'images privés à l'aide d'identifiants privés que vous stockez dans Secret Manager.

Pour obtenir des instructions, consultez la section Accéder aux registres privés avec des certificats CA privés.

privateRegistryAccessConfig:
  enabled: true
  certificateAuthorityDomainConfig:
  - gcpSecretManagerCertificateConfig:
      secretURI: "SECRET_LOCATION"
    fqdns:
    - "FQDN1"
    - "FQDN2"

Cette configuration comporte les champs suivants:

  • enabled: true: active la configuration du registre privé. Si vous définissez enabled: false, supprimez tous les autres champs de l'élément privateRegistryAccessConfig.
  • certificateAuthorityDomainConfig: contient jusqu'à cinq définitions de certificat et de noms de domaine complet.
  • gcpSecretManagerCertificateConfig: contient un certificat stocké dans Secret Manager et un tableau de noms de domaine complets.
  • secretURI: emplacement du certificat dans Secret Manager.
  • fqdns: liste de noms de domaine complets des registres privés. Vous pouvez également utiliser des adresses IPv4, mais nous vous recommandons d'utiliser le nom de domaine complet.

Appliquer la configuration containerd aux nouveaux clusters

Cette section explique comment appliquer un fichier de configuration containerd lorsque vous créez un cluster GKE.

Exécutez la commande ci-dessous.

gcloud container clusters create-auto CLUSTER_NAME \
    --location=LOCATION \
    --scopes="cloud-platform" \
    --containerd-config-from-file="PATH_TO_CONFIG_FILE"

Remplacez les éléments suivants :

  • CLUSTER_NAME : nom de votre nouveau cluster
  • LOCATION : emplacement Compute Engine du nouveau cluster.
  • PATH_TO_CONFIG_FILE: chemin d'accès au fichier de configuration que vous avez créé, par exemple ~/containerd-configuration.yaml.

Vous pouvez activer la configuration de registre privé sur les nouveaux clusters Standard en exécutant la commande gcloud container clusters create avec les mêmes options.

Appliquer la configuration containerd aux clusters existants

Cette section vous explique comment appliquer une configuration containerd à des clusters et à des nœuds existants.

Vérifier les niveaux d'accès

Les clusters existants doivent disposer du niveau d'accès cloud-platform pour utiliser cette fonctionnalité. Cette section explique comment vérifier vos niveaux d'accès et mettre à jour un cluster existant avec un fichier de configuration de registre privé nouveau ou modifié.

Pour en savoir plus sur les niveaux d'accès par défaut dans les nouveaux clusters, consultez la section Niveaux d'accès dans GKE.

Vérifier les niveaux d'accès à Autopilot

Exécutez la commande ci-dessous.

gcloud container clusters describe CLUSTER_NAME \
    --location=LOCATION \
    --flatten=nodeConfig \
    --format='csv[delimiter="\\n",no-heading](oauthScopes)'

Si votre cluster ne dispose pas du niveau d'accès https://www.googleapis.com/auth/cloud-platform, créez un cluster avec ce niveau d'accès.

Vérifier les niveaux d'accès standards

Pour vérifier les niveaux d'accès à votre cluster standard, vérifiez un pool de nœuds:

gcloud container node-pools describe NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --flatten=nodeConfig \
    --format='csv[delimiter="\\n",no-heading](oauthScopes)'

Remplacez NODE_POOL_NAME par le nom du pool de nœuds.

Si votre cluster ne dispose pas du niveau d'accès https://www.googleapis.com/auth/cloud-platform, créez un pool de nœuds doté du niveau d'accès cloud-platform et supprimez le pool de nœuds existant.

Mettre à jour le cluster pour utiliser votre fichier de configuration

Exécutez la commande ci-dessous.

gcloud container clusters update CLUSTER_NAME \
    --location=LOCATION \
    --containerd-config-from-file="PATH_TO_CONFIG_FILE"

Recréer des nœuds dans des clusters standards

Si votre cluster standard n'utilise pas les mises à niveau automatiques, vous devez recréer manuellement vos pools de nœuds pour appliquer la nouvelle configuration. Pour déclencher une recréation manuelle des nœuds, mettez à niveau votre cluster vers la version GKE qu'il utilise déjà.

gcloud container clusters upgrade CLUSTER_NAME \
    --location=LOCATION \
    --cluster-version=VERSION

Remplacez VERSION par la même version de correctifs de GKE que celle utilisée par le cluster.

Désactiver les options de configuration containerd

Pour supprimer votre configuration personnalisée, procédez comme suit:

  1. Mettez à jour le fichier de configuration pour spécifier enabled: false dans l'élément de configuration que vous souhaitez désactiver et supprimez tous les autres champs de l'élément, comme dans l'exemple suivant:

    privateRegistryAccessConfig:
      enabled: false
  2. Appliquez le fichier de configuration mis à jour au cluster : Pour obtenir des instructions, consultez la page Appliquer la configuration containerd aux clusters existants.