Configurar espelhos de registro

Espelho do registro

Os espelhos de registro são designados para espelhar imagens de gcr.io e docker.io. Por exemplo, se você tentar extrair uma imagem gcr.io/kubernetes-e2e-test-images/nautilus:1.0, isso só funcionará se o serviço de registro tiver essa imagem no mesmo caminho, como 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0. Todas as imagens que não são gcr.io ainda funcionam normalmente. Por exemplo, ainda é possível extrair k8s.gcr.io/pause:3.1.

Usar um espelho de registro ajuda você a economizar no tráfego e oferece uma alternativa ao uso do gcr.io, caso precise isolar seus clusters de interrupções do gcr.io. Ele também permite que você realize sua própria verificação de vulnerabilidades.

Antes de começar

  • É preciso ter um servidor do Container Registry configurado na rede.
  • Se o servidor de registro executar um certificado TLS particular, você precisará ter o arquivo de autoridade de certificação (CA, na sigla em inglês).
  • Se o servidor de registros precisar de autenticação, você precisará ter as credenciais de login adequadas ou o arquivo de configuração do Docker.

Fazer upload de imagens de contêiner no servidor de registro

Faça upload das imagens do pacote de imagens para seu servidor de registro executando:

actl images push \
    --private-registry=PRIVATE_REGISTRY \
    --images ~/anthos-baremetal-private-mode

Substitua:

  • PRIVATE_REGISTRY com o endereço do registro particular (e a porta) e o subprojeto, como 172.18.0.20:5000/test-namespace.

  • Digite seu nome de usuário e senha quando solicitado ou selecione um arquivo de configuração do Docker. Se o servidor de registro não exigir credenciais, especifique --no-registry-credential.

Para mais informações sobre o comando actl images push, consulte:

actl images push --help

Usar seu próprio namespace

Se você quiser usar seu próprio namespace no servidor de registros em vez do namespace raiz, containerd poderá extrair desse subnamespace se você fornecer o endpoint da API para seu registro particular em registryMirrors.endpoint. O endpoint geralmente está no formato <REGISTRY_IP:PORT>/v2/<NAMESPACE>. Consulte o guia do usuário do seu registro particular para ver detalhes específicos.

Por exemplo, se você só tiver acesso a 172.18.0.20:5000/test-namespace/, poderá usar o seguinte comando para fazer upload de todas as imagens no namespace test-namespace:

actl images push \
    --images= ~/anthos-baremetal-private-mode \
    --private-registry=172.18.0.20:5000/test-namespace

Em seguida, no arquivo YAML do cluster, é possível inserir o seguinte para fazer o pull de containerd do subnamespace:

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

Criar clusters a partir do espelho de registro

Veja abaixo um exemplo de arquivo de configuração de cluster que usa seu próprio servidor de espelho de registro em vez de gcr.io.

Se o registro não exigir um certificado TLS particular, deixe o campo caCertPath em branco.

Se o servidor de registro não exigir um arquivo de configuração do Docker de autenticação, deixe o campo pullCredentialConfigPath em branco.

Para informações detalhadas sobre a configuração do cluster, consulte Configuração do cluster.

# Sample cluster config with registry mirror:
---
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin
  namespace: cluster-admin
spec:
  nodeConfig:
    containerRuntime: containerd
...

Todos os nós neste cluster usarão este espelho de registro 172.18.0.20:5000 em vez de gcr.io (e docker.io).

Failover para gcr.io

Se o cluster não conseguir extrair do espelho de registro, ele fará o failover automaticamente para gcr.io. É por isso que recomendamos fornecer um valor para privateRegistryConfigPath no arquivo de configuração do cluster. Se um valor não for fornecido, o cluster não poderá extrair de gcr.io caso o espelho de registro falhe.

# Sample cluster config with registry mirror:
---
privateRegistryConfigPath: /root/.docker/config.json
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json

Se você não precisa do recurso de failover de pull, não precisa adicionar um privateRegistryConfigPath ou adicionar gcr.io (e docker.io) à sua lista de permissões de proxy.

Atualizar endpoints de espelho de registro, certificados e credenciais de pull

Para atualizar endpoints de espelho do registro, certificados ou credenciais de pull:

  1. No arquivo de configuração do cluster, atualize o endpoint, o arquivo de certificado de CA e o caminho do arquivo de configuração de credencial.

  2. Aplique as alterações executando:

    actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG
    

A seguir