Configurar um Container Registry particular

Nesta página, explicamos como configurar um servidor de registro de contêineres para o Google Distributed Cloud (somente software) para VMware.

Esta página é destinada a administradores, arquitetos e operadores que configuram, monitoram e gerenciam a infraestrutura de tecnologia. Para saber mais sobre papéis comuns e tarefas de exemplo referenciados no conteúdo do Google Cloud , consulte Tarefas e papéis de usuário comuns do GKE Enterprise.

Visão geral

Por padrão, durante a criação ou o upgrade do cluster, o Google Distributed Cloud extrai imagens do sistema de gcr.io/gke-on-prem-release usando a conta de serviço de acesso a componentes. Se quiser, você pode fornecer seu próprio servidor de registro de contêiner para que as imagens do sistema sejam extraídas do seu servidor de registro particular.

O Google Distributed Cloud não é compatível com registros de contêineres não seguros. Ao iniciar o servidor de registro de contêineres, você precisa fornecer um certificado e uma chave. O certificado pode ser assinado por uma autoridade de certificação pública (CA, na sigla em inglês) ou autoassinado.

Criar um servidor do Container Registry

Para saber como criar um servidor de registro de contêineres, consulte Executar um registro acessível externamente na documentação do Docker.

Configurar o registro

Para usar um registro de contêiner particular, use a ferramenta de linha de comando gkectl ou o Terraform.

gkectl

Adicione a seção privateRegistry ao arquivo de configuração do cluster de administrador antes de criar o cluster.

Quando esta seção é preenchida:

  • Quando você executa o comando gkectl prepare antes da criação ou upgrade do cluster, ele extrai as imagens do arquivo tar especificado no campo bundlePath do arquivo de configuração do cluster de administrador e envia as imagens para o servidor de registro particular.

  • Durante a criação ou o upgrade do cluster, as imagens do sistema são extraídas do seu servidor de registro particular.

Terraform

  1. Siga as etapas na guia "Terraform" em Criar um cluster de administrador para preencher o arquivo de configuração do cluster de administrador.

  2. Adicione o seguinte ao arquivo de configuração do cluster de administrador:

    private_registry_config {
      address = "ADDRESS"
      ca_cert = "CA_CERT"
    }
    

    Substitua:

    • "ADDRESS": o endereço IP ou FQDN (nome de domínio totalmente qualificado) da máquina que executa o registro privado.

    • "CA_CERT": a chave pública do certificado da CA para o registro particular.

  3. Continue com as etapas na guia "Terraform" em Criar um cluster de administrador para verificar o arquivo de configuração e o plano do Terraform e criar o cluster de bootstrap.

  4. Ao executar o comando gkectl register bootstrap, o gkectl solicita que você insira o nome de usuário e a senha do registro particular.

Durante a criação do cluster, as imagens do sistema são extraídas do seu servidor de registro privado.

Limitações com clusters avançados e o pacote completo

Há dois pacotes do Google Distributed Cloud disponíveis: completo e regular. Para determinar qual pacote está na estação de trabalho de administrador, verifique o campo bundlePath no arquivo de configuração do cluster de administrador. Se o nome do arquivo terminar em -full, o pacote completo estará na estação de trabalho do administrador. Se o nome do arquivo não terminar em -full, o pacote normal estará na estação de trabalho do administrador.

Se você criou a estação de trabalho de administrador usando o comando gkeadm, ele cria a VM da estação de trabalho de administrador com o pacote completo e configura o campo bundlePath no arquivo de configuração do cluster de administrador.

Se o cluster avançado estiver ativado, haverá limitações ao usar o pacote completo com um registro particular, da seguinte forma:

  • Versão 1.31: o pacote completo não é compatível com um registro particular. Para usar um registro particular em um cluster avançado:

    1. Faça o download do pacote de tamanho normal para sua estação de trabalho de administrador.
    2. Atualize o nome do arquivo no campo bundlePath no arquivo de configuração do cluster de administrador.
  • Versão 1.32: o uso do pacote completo é compatível, mas o comando gkectl prepare extrai imagens de gcr.io/gke-on-prem-release em vez do arquivo tar. No entanto, o comando envia as imagens para seu registro particular para que as imagens do sistema sejam extraídas dele durante a criação ou o upgrade do cluster.

Verificar se as imagens foram extraídas do servidor de registro

A maneira de verificar se as imagens estão sendo extraídas do servidor de registro depende de se o cluster avançado está ativado.

  • Se o cluster avançado não estiver ativado, execute o seguinte comando:

    kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \
        --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"
    

    Substitua ADMIN_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig para o cluster de administrador;

    A saída desse comando mostra todas as imagens no cluster. Você pode verificar se todas as imagens do Google Distributed Cloud são do seu próprio servidor de registro.

  • Se o cluster avançado estiver ativado, siga estas etapas:

    É possível determinar se containerd está extraindo imagens do seu registro local examinando o conteúdo de um arquivo chamado config.toml, conforme mostrado nas seguintes etapas:

    1. Faça login em um nó e examine o conteúdo do arquivo /etc/containerd/config.toml.
    2. Verifique o campo plugins."io.containerd.grpc.v1.cri".registry.mirrors do arquivo config.toml para ver se o servidor de registro está listado no campo endpoint.

      Confira abaixo um trecho de um exemplo de arquivo config.toml.

      version = 2
      root = "/var/lib/containerd"
      state = "/run/containerd"
      ...
      [plugins."io.containerd.grpc.v1.cri".registry]
      [plugins."io.containerd.grpc.v1.cri".registry.configs]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"]
      [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls]
      ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt'
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
      [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"]
      endpoint = ["http://privateregistry.io", "http://privateregistry2.io"]
      ...
      
    3. Se o espelho do registro aparecer no campo endpoint, o nó estará extraindo imagens do espelho do registro, em vez do Artifact Registry.