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


Neste documento, mostramos como personalizar a configuração do ambiente de execução do contêiner containerd nos nós do Google Kubernetes Engine (GKE). Antes de ler este documento, é necessário saber o que um ambiente de execução do contêiner e por que você deve personalizá-lo.

Sobre a configuração do containerd no GKE

É possível configurar manualmente um conjunto de opções no ambiente de execução containerd em nós do GKE que executam um sistema operacional como o Container-Optimized OS. Personalizar o ambiente de execução permite configurar requisitos especiais, como acesso a registros de imagens particulares. Para definir essas opções, crie um arquivo YAML chamado arquivo de configuração do ambiente de execução e transmita-o para o GKE ao criar ou atualizar um cluster.

Esse método de personalização do containerd permite evitar a implantação de DaemonSets privilegiados, que são um risco para a segurança. Quando você fornece ao GKE um arquivo de configuração do ambiente de execução, ele recria os nós e atualiza o arquivo config.toml do containerd em cada nó com a configuração. A configuração persiste com o encerramento, upgrades e recriações do nó.

O arquivo de configuração do ambiente de execução só permite configurar opções no containerd. O GKE também permite configurar opções específicas de kubelet e opções do kernel do Linux de baixo nível usando um arquivo separado chamado de arquivo de configuração do sistema de nós. Para mais detalhes, consulte Como personalizar a configuração do sistema de nós.

Limitações

Não é possível usar um arquivo de configuração do ambiente de execução para mudar as configurações do containerd nas imagens de nó do Ubuntu. Somente o Container-Optimized OS com o containerd é aceito. Essa é a imagem de nó padrão para todos os clusters do GKE.

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

A tabela a seguir descreve as opções que podem ser configuradas usando um arquivo de configuração do ambiente de execução:

Opções do arquivo de configuração do ambiente de execução

Acesse registros de imagens particulares com credenciais particulares que você armazena no Secret Manager.

Para instruções, consulte Acessar registros particulares com certificados de AC particulares.

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

Essa configuração tem os seguintes campos:

  • enabled: true: ativa a configuração do registro particular. Se você definir enabled: false, exclua todos os outros campos no item privateRegistryAccessConfig.
  • certificateAuthorityDomainConfig: contém até cinco definições de certificado e FQDN.
  • gcpSecretManagerCertificateConfig: contém um certificado armazenado no Secret Manager e uma matriz de FQDNs.
  • secretURI: o local do certificado no Secret Manager.
  • fqdns: uma lista de nomes de domínio totalmente qualificados de registros particulares. Também é possível usar endereços IPv4, mas recomendamos usar o FQDN.

Aplicar a configuração do containerd a novos clusters

Nesta seção, mostramos como aplicar um arquivo de configuração do containerd ao criar um novo cluster do GKE.

Execute este comando:

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

Substitua:

  • CLUSTER_NAME: o nome do novo cluster.
  • LOCATION: o local do Compute Engine do novo cluster.
  • PATH_TO_CONFIG_FILE: o caminho para o arquivo de configuração que você criou, como ~/containerd-configuration.yaml.

É possível ativar a configuração do registro particular em novos clusters padrão executando o comando gcloud container clusters create com as mesmas opções.

Aplicar a configuração do containerd a clusters já existentes

Nesta seção, mostramos como aplicar uma configuração do containerd a clusters e nós já existentes.

Verificar os escopos de acesso

Os clusters já existentes precisam ter o escopo de acesso cloud-platform para usar esse recurso. Nesta seção, mostramos como verificar os escopos de acesso e atualizar um cluster já existente com um arquivo de configuração de registro particular novo ou modificado.

Para detalhes sobre os escopos de acesso padrão em novos clusters, consulte Escopos de acesso no GKE.

Verificar os escopos de acesso do Autopilot

Execute este comando:

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

Se o cluster não tiver o escopo de acesso https://www.googleapis.com/auth/cloud-platform, crie um novo cluster com esse escopo.

Verificar os escopos de acesso Standard

Para verificar os escopos de acesso do cluster Standard, verifique um pool 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 pool de nós.

Se o cluster não tiver o escopo de acesso https://www.googleapis.com/auth/cloud-platform, crie um novo pool de nós com o escopo de acesso cloud-platform e exclua o pool de nós que já existe.

Atualizar o cluster para que use o arquivo de configuração

Execute este comando:

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

Recriar nós em clusters Standard

Quando o cluster padrão não usa upgrades automáticos, é necessário recriar manualmente os pools de nós para aplicar a nova configuração. Para acionar uma recriação manual de nós, faça upgrade do cluster para a mesma versão do GKE que ele já usa.

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

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

Desativar opções de configuração do containerd

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

  1. Atualize o arquivo de configuração para especificar enabled: false no item de configuração que você quer desativar e exclua todos os outros campos do item, como no exemplo a seguir:

    privateRegistryAccessConfig:
      enabled: false
  2. Aplique o arquivo de configuração atualizado ao cluster. Para instruções, acesse Aplicar a configuração do containerd a clusters já existentes.