Personalize a configuração do containerd em nós do GKE

Esta página mostra como personalizar a configuração do tempo de execução do contentor do containerd nos seus nós do Google Kubernetes Engine (GKE). Antes de ler este documento, certifique-se de que sabe o que é um tempo de execução do contentor e por que motivo o quer personalizar.

Acerca da configuração do containerd no GKE

Pode configurar manualmente um conjunto de opções no tempo de execução do containerd em nós do GKE que executam um sistema operativo como o SO otimizado para contentores. A personalização do tempo de execução permite-lhe configurar requisitos especiais, como o acesso a registos de imagens privados. Para definir estas opções, crie um ficheiro YAML denominado ficheiro de configuração de tempo de execução e transmita o ficheiro para o GKE quando criar ou atualizar um cluster.

Este método de personalização do containerd permite-lhe evitar a implementação de DaemonSets privilegiados, que representam um risco de segurança. Quando fornece ao GKE um ficheiro de configuração de tempo de execução, o GKE recria os nós e atualiza o ficheiro config.toml do containerd em todos os nós com a sua configuração. A configuração persiste durante o encerramento, as atualizações e as recriações dos nós.

O ficheiro de configuração de tempo de execução só lhe permite configurar opções no containerd. O GKE também suporta a configuração de opções kubelet específicas e opções de kernel do Linux de baixo nível através de um ficheiro separado denominado ficheiro de configuração do sistema do nó. Para mais detalhes, consulte o artigo Personalizar a configuração do sistema de nós.

Limitações

Não pode usar um ficheiro de configuração de tempo de execução para alterar as definições do containerd em imagens de nós do Ubuntu. Apenas o SO otimizado para contentores com o containerd é suportado. Esta é a imagem do nó predefinida para todos os clusters do GKE.

Opções de configuração do containerd disponíveis

A tabela seguinte descreve as opções que pode configurar através de um ficheiro de configuração de tempo de execução:

Opções do ficheiro de configuração do tempo de execução

Aceda a registos de imagens privados com credenciais privadas que armazena no Secret Manager.

Para obter instruções, consulte o artigo Aceda a registos privados com certificados de AC privada.

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

Esta configuração tem os seguintes campos:

  • enabled: true: permite a configuração do registo privado. Se definir enabled: false, elimine todos os outros campos no item privateRegistryAccessConfig.
  • certificateAuthorityDomainConfig: contém até cinco definições de certificados e FQDNs.
  • gcpSecretManagerCertificateConfig: contém um certificado armazenado no Secret Manager e uma matriz de FQDNs.
  • secretURI: a localização do certificado no Secret Manager.
  • fqdns: uma lista de nomes de domínios totalmente qualificados de registos privados. Também pode usar endereços IPv4, mas recomendamos que use o FQDN.

Aplique a configuração do containerd a novos clusters

Esta secção mostra como aplicar um ficheiro de configuração do containerd quando cria um novo cluster do GKE.

Execute o seguinte comando:

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

Substitua o seguinte:

  • CLUSTER_NAME: o nome do novo cluster.
  • LOCATION: a localização do Compute Engine do seu novo cluster.
  • PATH_TO_CONFIG_FILE: o caminho para o ficheiro de configuração que criou, como ~/containerd-configuration.yaml.

Pode ativar a configuração do registo privado em novos clusters padrão executando o comando gcloud container clusters create com as mesmas opções.

Aplique a configuração do containerd a clusters existentes

Esta secção mostra como aplicar uma configuração do containerd a clusters e nós existentes.

Verifique os âmbitos de acesso

Os clusters existentes têm de ter o âmbito de acesso cloud-platform para usar esta funcionalidade. Esta secção mostra como verificar os âmbitos de acesso e atualizar um cluster existente com um ficheiro de configuração do registo privado novo ou modificado.

Para ver detalhes sobre os âmbitos de acesso predefinidos em novos clusters, consulte o artigo Âmbitos de acesso no GKE.

Verifique os âmbitos de acesso do Autopilot

Execute o seguinte comando:

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

Se o seu cluster não tiver o âmbito de acesso https://www.googleapis.com/auth/cloud-platform, crie um novo cluster com este âmbito de acesso.

Verifique os âmbitos de acesso padrão

Para verificar os âmbitos de acesso do cluster Standard, verifique um conjunto de nós:

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

Substitua NODE_POOL_NAME pelo nome do conjunto de nós.

Se o seu cluster não tiver o âmbito de acesso https://www.googleapis.com/auth/cloud-platform, crie um novo conjunto de nós com o âmbito de acesso cloud-platform e elimine o conjunto de nós existente.

Atualize o cluster para usar o ficheiro de configuração

Execute o seguinte comando:

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

Volte a criar nós em clusters padrão

Se o cluster Standard não usar atualizações automáticas, tem de recriar manualmente os conjuntos de nós para aplicar a nova configuração. Para acionar uma recriação manual do nó, atualize o cluster para a mesma versão do GKE que já usa.

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

Substitua VERSION pela mesma versão de patch do GKE que o cluster já usa.

Desative as opções de configuração do containerd

Para remover a configuração personalizada, faça o seguinte:

  1. Atualize o ficheiro de configuração para especificar enabled: false no item de configuração que quer desativar e elimine todos os outros campos no item, como no seguinte exemplo:

    privateRegistryAccessConfig:
      enabled: false
  2. Aplique o ficheiro de configuração atualizado ao cluster. Para obter instruções, consulte o artigo Aplique a configuração do containerd a clusters existentes.