Personalizzare la configurazione di containerd nei nodi GKE


Questa pagina mostra come personalizzare la configurazione del runtime del contenitore containerd sui nodi Google Kubernetes Engine (GKE). Prima di leggere questo documento, assicurati di conoscere bene che cos'è un runtime del contenitore e perché dovresti personalizzarlo.

Informazioni sulla configurazione di containerd in GKE

Puoi configurare manualmente un insieme di opzioni nel runtime containerd sui nodi GKE che eseguono un sistema operativo come Container-Optimized OS. La personalizzazione del runtime ti consente di configurare requisiti speciali come l'accesso ai registry di immagini private. Per impostare queste opzioni, crea un file YAML chiamato file di configurazione di runtime e passalo a GKE quando crei o aggiorni un cluster.

Questo metodo di personalizzazione di containerd ti consente di evitare di eseguire il deployment di DaemonSet con privilegi, che rappresentano un rischio per la sicurezza. Quando fornisci a GKE un file di configurazione di runtime, GKE ricrea i nodi e aggiorna il file config.toml di containerd su ogni nodo con la tua configurazione. La configurazione viene mantenuta durante l'interruzione, gli upgrade e le ricostruzioni dei nodi.

Il file di configurazione di runtime ti consente di configurare solo le opzioni in containerd. GKE supporta anche la configurazione di opzioni kubelet specifiche e opzioni del kernel Linux a basso livello utilizzando un file separato chiamato file di configurazione del sistema del nodo. Per maggiori dettagli, consulta Personalizzare la configurazione del sistema del nodo.

Limitazioni

Non puoi utilizzare un file di configurazione del runtime per modificare le impostazioni di containerd nelle immagini dei nodi Ubuntu. È supportato solo Container-Optimized OS con containerd. Questa è l'immagine del nodo predefinita per tutti i cluster GKE.

Opzioni di configurazione di containerd disponibili

La tabella seguente descrive le opzioni che puoi configurare utilizzando un file di configurazione di runtime:

Opzioni del file di configurazione di runtime

Accedi ai registry di immagini private con credenziali private archiviate in Secret Manager.

Per le istruzioni, consulta Accedere ai registry privati con certificati CA privati.

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

Questa configurazione ha i seguenti campi:

  • enabled: true: abilita la configurazione del registry privato. Se imposti enabled: false, elimina tutti gli altri campi nell'elemento privateRegistryAccessConfig.
  • certificateAuthorityDomainConfig: contiene fino a cinque definizioni di certificati e FQDN.
  • gcpSecretManagerCertificateConfig: contiene un certificato archiviato in Secret Manager e un array di FQDN.
  • secretURI: la posizione del certificato in Secret Manager.
  • fqdns: un elenco di nomi di dominio completi di registrar privati. Puoi anche utilizzare indirizzi IPv4, ma consigliamo di utilizzare il FQDN.

Applica la configurazione di containerd ai nuovi cluster

Questa sezione mostra come applicare un file di configurazione containerd quando crei un nuovo cluster GKE.

Esegui questo comando:

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

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del nuovo cluster.
  • LOCATION: la località Compute Engine del nuovo cluster.
  • PATH_TO_CONFIG_FILE: il percorso del file di configurazione che hai creato, ad esempio ~/containerd-configuration.yaml.

Puoi attivare la configurazione del registry privato sui nuovi cluster standard eseguendo il comando gcloud container clusters create con le stesse opzioni.

Applica la configurazione di containerd ai cluster esistenti

Questa sezione illustra come applicare una configurazione di containerd a cluster e nodi esistenti.

Controllare gli ambiti di accesso

I cluster esistenti devono avere l'ambito di accesso cloud-platform per utilizzare questa funzionalità. Questa sezione mostra come controllare gli ambiti di accesso e aggiornare un cluster esistente con un file di configurazione del registry privato nuovo o modificato.

Per informazioni dettagliate sugli ambiti di accesso predefiniti nei nuovi cluster, consulta Ambiti di accesso in GKE.

Controllare gli ambiti di accesso di Autopilot

Esegui questo comando:

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

Se il tuo cluster non ha l'ambito di accesso https://www.googleapis.com/auth/cloud-platform, crea un nuovo cluster con questo ambito di accesso.

Controlla gli ambiti di accesso standard

Per controllare gli ambiti di accesso al cluster standard, controlla un pool di nodi:

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

Sostituisci NODE_POOL_NAME con il nome del pool di nodi.

Se il tuo cluster non ha l'ambito di accesso https://www.googleapis.com/auth/cloud-platform, crea un nuovo pool di nodi con l'ambito di accesso cloud-platform ed elimina il pool di nodi esistente.

Aggiorna il cluster in modo che utilizzi il file di configurazione

Esegui questo comando:

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

Ricrea i nodi nei cluster standard

Se il tuo cluster standard non utilizza gli upgrade automatici, devi ricreare manualmente i pool di nodi per applicare la nuova configurazione. Per attivare una ricreazione manuale dei nodi, esegui l'upgrade del cluster alla stessa versione GKE già in uso.

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

Sostituisci VERSION con la stessa versione della patch GKE già in uso nel cluster.

Disattivare le opzioni di configurazione di containerd

Per rimuovere la configurazione personalizzata:

  1. Aggiorna il file di configurazione in modo da specificare enabled: false nell'elemento di configurazione che vuoi disattivare ed elimina gli altri campi dell'elemento, come nell'esempio seguente:

    privateRegistryAccessConfig:
      enabled: false
  2. Applica il file di configurazione aggiornato al tuo cluster. Per le istruzioni, consulta Applicare la configurazione di containerd ai cluster esistenti.