Nesta página, descrevemos como fazer login no Docker ou no Helm usando o auxiliar de credenciais do Serviço Gerenciado do Harbor (MHS, na sigla em inglês) ou os secrets da CLI.
As instâncias de registro do Harbor no Google Distributed Cloud (GDC) com isolamento físico usam o Identity-Aware Proxy (IAP) para autenticação. É possível fazer login na instância do registro do Harbor pela CLI do Docker ou do Helm usando um dos seguintes métodos:
- Auxiliar de credenciais do MHS (
docker-credential-mhs): usa sua identidade autenticada do GDC para processar a autenticação do IAP automaticamente. Depois que você faz login com a CLI gdcloud, odocker-credential-mhsbusca sua identidade de usuário autenticada e verifica seu acesso com o Harbor. Após a verificação, o Harbor fornece um token de curta duração ao Docker ou ao Helm para que você possa realizar operações de registro sem criar ou gerenciar secrets de CLI separados. - Secrets da CLI: usa um secret estático da CLI do seu perfil de usuário do Harbor. Depois de fazer login na interface da Web do Harbor usando o IAP pela primeira vez, é possível recuperar o secret da CLI e usá-lo como senha ao fazer login na CLI do Docker ou do Helm. Esse método só está disponível com a interface do Harbor.
Antes de começar
Para configurar a autenticação do Docker e do Helm para instâncias de registro do Harbor, é
necessário ter o auxiliar de credenciais do MHS (docker-credential-mhs) instalado no
ambiente. O auxiliar de credenciais está incluído por padrão no
pacote da CLI gdcloud. Para mais informações, consulte a
visão geral da CLI gdcloud.
Papéis necessários do IAM
Para configurar a autenticação para instâncias do registro do Harbor, entre em contato com o administrador do projeto do IAM para solicitar o papel de Leitor de instâncias do Harbor (harbor-instance-viewer), que permite receber, listar e assistir instâncias do Harbor no namespace do projeto. Esse papel inclui as permissões necessárias para visualizar os detalhes das
instâncias atuais do Harbor para que você possa recuperar os URLs do registro para
autenticação.
Fazer login com o auxiliar de credenciais do MHS
A forma de autenticação com o docker-credential-mhs depende do cliente da CLI:
é possível configurar o Docker para buscar credenciais automaticamente ou recuperar
credenciais temporárias diretamente para fazer login no Docker.
Faça login no Docker.
Para autenticar com o Docker, siga estas etapas:
Faça login no servidor de API Management com a CLI gdcloud seguindo as instruções em Fazer login.
Configure o Docker para usar o auxiliar de credenciais do MHS
docker-credential-mhs:TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) docker-credential-mhs configure-docker --registries=${REGISTRY}Substitua:
PROJECT_NAME: o nome do projeto de locatário. Esse é o mesmo nome de projeto que você forneceu ao criar sua instância do Harbor.HARBOR_INSTANCE_NAME: o nome da instância do Harbor que você criou em Criar instâncias de registro do Harbor.
Siga as instruções em Configurar o Docker para confiar na AC raiz do Harbor.
Opcional: verifique se o auxiliar de credenciais foi configurado corretamente verificando se a entrada
mhsfoi adicionada a~/.docker/config.json:cat DOCKER_CONFIG_PATHSubstitua
DOCKER_CONFIG_PATHpelo caminho para o arquivo de configuração do Docker, como~/.docker/config.json.O resultado será o seguinte:
{ "auths": { "10.200.0.1": { "auth": "YWRtaW46YWRtaW4=" }, "10.200.16.5:10443": { "auth": "YWRtaW46ZEROVVJCVWE1a1FBcE4xQQ==" } }, "credHelpers": { "asia.gcr.io": "gcloud", "eu.gcr.io": "gcloud", "gcr.io": "gcloud", "marketplace.gcr.io": "gcloud", "myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs", "staging-k8s.gcr.io": "gcloud", "us-central1-docker.pkg.dev": "gcloud", "us.gcr.io": "gcloud" } }Este exemplo mostra uma saída bem-sucedida de
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs".Configure o projeto de locatário na CLI gdcloud:
TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECTA seguinte saída é mostrada:
Updated property [core/project].Identifique um projeto do Harbor ao qual você tem acesso de gerenciamento. Se não houver um, crie um projeto do Harbor.
Realize operações do Docker, como enviar ou extrair uma imagem:
TENANT_PROJECT=PROJECT_NAME HARBOR_INSTANCE_NAME=HARBOR_INSTANCE_NAME REGISTRY=$(kubectl get harborinstance $HARBOR_INSTANCE_NAME -n $TENANT_PROJECT -o jsonpath='{.status.url}' | sed s#https://##) HARBOR_PROJECT=HARBOR_PROJECT_NAME # Push image docker pull nginx docker tag nginx ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest docker push ${REGISTRY}/${HARBOR_PROJECT}/nginx:latest # Pull image docker pull ${REGISTRY}/${HARBOR_PROJECT}/nginx:latestA saída bem-sucedida é semelhante a esta:
# Push image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker push ${REGISTRY}/harbor-project/nginx:latest The push refers to repository [myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx] e4e9e9ad93c2: Pushed 6ac729401225: Pushed 8ce189049cb5: Pushed 296af1bd2844: Pushed 63d7ce983cd5: Pushed b33db0c3c3a8: Pushed 98b5f35ea9d3: Pushed latest: digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc size: 1778 # Pull image root@gpc-adhoc-70846130vm-bootstrapper-zone1:~# docker pull ${REGISTRY}/library/nginx:latest latest: Pulling from library/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latestSe a operação não for bem-sucedida, você verá a seguinte saída:
E1025 19:21:39.322290 1273587 get.go:24] failed to get user name: user is not logged in or login expired, please login againNeste exemplo, a sessão de autenticação do GDC expirou, e você precisa fazer login novamente. Para mais informações, consulte Fazer login.
Fazer login no Helm
Para autenticar com o Helm, siga estas etapas:
Depois de autenticar com o GDC, recupere as credenciais do usuário do auxiliar de credenciais:
echo $REGISTRY | docker-credential-mhs getO resultado será o seguinte:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}Faça login na CLI do Helm com as credenciais. Quando for solicitado que você insira as credenciais, use as credenciais retornadas pelo auxiliar de credenciais.
helm registry login $REGISTRY Username: tokenreview$fop-infrastructure-operator@example.com Password: STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bwUma saída bem-sucedida para essa operação é semelhante a esta:
Login Succeeded
Fazer login com secrets da CLI
Para fazer login no Docker ou no Helm com secrets da CLI, siga estas etapas:
- Faça login no Harbor com uma conta de usuário do IAP.
- Clique no seu nome de usuário e selecione Perfil do usuário.
- Para copiar a chave secreta da CLI associada à sua conta, clique em Copiar.
Opcional: para exibir botões para gerar automaticamente ou criar manualmente uma nova chave secreta da CLI, clique em Mais no seu perfil de usuário.
Se você gerou uma nova chave secreta da CLI, clique em Copiar para copiá-la.
Use o secret da CLI como senha ao fazer login no Harbor pela CLI do Docker ou do Helm:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URLSubstitua:
USERNAME: o nome de usuário da conta do Harbor.CLI_SECRET: a chave secreta da CLI gerada.HARBOR_INSTANCE_URL: o URL da instância do Harbor.
A seguir
Depois de fazer login no Docker e no Helm, seu registro estará conectado e você poderá começar a usá-lo: