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 Google Cloud conteúdo, consulte Tarefas e papéis de usuário comuns do GKE.
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 ao componente.
Opcionalmente, você pode fornecer seu próprio servidor de registro de contêineres para que as imagens do sistema sejam extraídas do seu servidor de registro particular.
O Google Distributed Cloud não oferece suporte a 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 de registro de contêineres
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êineres particular, use a ferramenta de linha de comando gkectl ou o Terraform.
gkectl
Adicione a
privateRegistryseção ao arquivo de configuração do cluster de administrador antes de criar o cluster.Quando essa seção é preenchida:
Ao executar o comando
gkectl prepareantes da criação ou do upgrade do cluster, o comando extrai as imagens do arquivo tar especificado no campobundlePathno 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 servidor de registro particular.
Se a rede estiver protegida por um servidor proxy, preencha a
proxyseção.
Terraform
- Siga as etapas na guia "Terraform" em Criar um cluster de administrador para preencher o arquivo de configuração do cluster de administrador.
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 particular.CA_CERT: os dados do certificado de CA da chave pública, mas com todas as novas linhas substituídas pela string\n.
Execute o seguinte comando para substituir novas linhas por
\n:awk 'ORS="\\n" {print}' PUBLIC_KEY_PATHSubstitua
PUBLIC_KEY_PATHpelo caminho da chave pública.Copie a saída do comando anterior e cole-a na variável de marcador
CA_CERT.
Se a rede estiver protegida por um servidor proxy, adicione o seguinte:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }Substitua:
PROXY_SERVER_ADDRESS: o endereço HTTP do servidor proxy. Inclua o número da porta mesmo que ele seja igual à porta padrão do esquema.BYPASS_LIST: uma lista separada por vírgulas de endereços IP, intervalos de endereços IP, nomes de host e nomes de domínio que não podem passar pelo servidor proxy.
Exemplo:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"Quando o Google Distributed Cloud envia uma solicitação para um desses endereços, hosts ou domínios, a solicitação ignora o servidor proxy e é enviada diretamente para o destino.
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, em seguida, criar o cluster de inicialização.
Ao executar o comando
gkectl register bootstrap,gkectlsolicita 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 servidor de registro particular.
Limitações com clusters avançados e o pacote completo
Há dois pacotes do Google Distributed Cloud disponíveis: completo e normal. 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 de administrador. Se o nome do arquivo não terminar em -full, o pacote normal estará na estação de trabalho de administrador.
Se você criou a estação de trabalho de administrador usando o comando gkeadm, o comando 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 no uso do pacote completo com um registro particular, conforme mostrado abaixo:
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:
- Faça o download do pacote de tamanho normal para a sua estação de trabalho de administrador.
- Atualize o nome do arquivo no campo
bundlePathno arquivo de configuração do cluster de administrador.
Versão 1.32: o uso do pacote completo é compatível, mas o comando
gkectl prepareextrai imagens degcr.io/gke-on-prem-releaseem vez do arquivo tar. No entanto, o comando envia as imagens para o registro particular para que as imagens do sistema sejam extraídas do registro particular durante a criação ou o upgrade do cluster.
Diferenças entre clusters normais e avançados
O cluster avançado apresenta várias diferenças importantes em comparação com os clusters padrão:
- Ao usar um registro particular, as imagens parecem ser extraídas de
gcr.io, não do nome do host do registro particular. Essa mudança é esperada, mesmo que as imagens sejam extraídas do servidor de registro particular. - As extrações de imagem usam credenciais do arquivo
/etc/containerd/config.tomlem cada máquina que se conecta ao registro particular, em vez do secretprivate-registry-credsdentro do cluster. - Para todas as imagens
gcr.io, o cluster primeiro tenta extrair do registro particular. Se a imagem não estiver no registro particular, o sistema a extrairá degcr.iopela Internet. Para interromper esse fallback, configurenoProxyou use regras de firewall para bloquear o tráfegogcr.io.
Para verificar se as imagens são extraídas da origem correta, consulte Verificar se as imagens são extraídas do servidor de registro.
Verificar se as imagens são extraídas do servidor de registro
A maneira de verificar se as imagens estão sendo extraídas do servidor de registro depende 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_KUBECONFIGpelo caminho do arquivo kubeconfig para o cluster de administrador;A saída desse comando mostra todas as imagens no cluster. É possível 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 o
containerdestá extraindo imagens do registro local examinando o conteúdo de um arquivo chamadoconfig.toml, conforme mostrado nas etapas a seguir:- Faça login em um nó e examine o conteúdo do arquivo
/etc/containerd/config.toml. Verifique o campo
plugins."io.containerd.grpc.v1.cri".registry.mirrorsdoconfig.tomlarquivo para saber se o servidor de registro está listado noendpointcampo.A seguir, um trecho de um arquivo
config.tomlde exemplo.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"] ...Se o espelho do registro aparecer no campo
endpoint, o nó estará extraindo imagens do espelho do registro, em vez do Artifact Registry.
- Faça login em um nó e examine o conteúdo do arquivo