Esta página descreve como iniciar sessão no Docker ou no Helm através do auxiliar de credenciais do serviço Harbor gerido (MHS) ou dos segredos da CLI.
Para oferecer flexibilidade, o Google Distributed Cloud (GDC) air-gapped oferece dois métodos de autenticação com o Docker e o Helm a partir da instância do registo do Harbor. O primeiro método consiste em usar o auxiliar de credenciais do Managed Harbor Service (MHS) e a sua identidade do GDC para iniciar sessão na CLI do Docker ou do Helm. Depois de se autenticar com o GDC, pode iniciar sessão no cliente Docker e realizar operações Docker sem ter de criar nem gerir segredos da CLI separados no Harbor.
O segundo método é usar segredos da CLI. Depois de se autenticar através do Identity-Aware Proxy (IAP) e iniciar sessão na interface do Harbor pela primeira vez, use a CLI do Docker ou do Helm para aceder ao Harbor. As CLIs do Docker e do Helm não conseguem processar o redirecionamento para o IAP, pelo que o Harbor fornece um segredo da CLI para usar ao iniciar sessão a partir do Docker ou do Helm. Este método só está disponível quando o Harbor usa a autenticação IAP.
Antes de começar
Para configurar a autenticação do Docker e do Helm para instâncias do registo do Harbor, tem de ter o seguinte:
- O auxiliar de credenciais do MHS
docker-credential-mhs
instalado no ambiente. O auxiliar de credenciais está incluído por predefinição no pacote da CLI gdcloud. Para mais informações, consulte a vista geral da CLI gdcloud. - A função de identidade e acesso necessária. Peça ao administrador de IAM da organização para lhe conceder a função Harbor Instance Viewer (
harbor-instance-viewer
).
Inicie sessão no Docker com a sua identidade da GDC
Use o auxiliar de credenciais do MHS com a sua identidade do GDC para iniciar sessão na CLI do Docker. Para fazer a autenticação com o Docker, siga estes passos:
Inicie sessão no servidor da API Management com a CLI GDC seguindo as instruções em Iniciar sessão.
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 o seguinte:
PROJECT_NAME
: o nome do seu projeto de inquilino. Este é o mesmo nome do projeto que indicou quando criou a sua instância do Harbor.HARBOR_INSTANCE_NAME
: o nome da instância do Harbor criada em Criar instâncias do registo do Harbor.
Siga as instruções em Configure o Docker para confiar na AC raiz do Harbor.
Opcional: verifique se o auxiliar de credenciais está configurado com êxito verificando se a entrada
mhs
foi adicionada a~/.docker/config.json
:cat DOCKER_CONFIG_PATH
Substitua
DOCKER_CONFIG_PATH
pelo caminho para o ficheiro de configuração do Docker. Por exemplo,~/.docker/config.json.
O resultado é semelhante ao 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 um resultado bem-sucedido de
"myinstance-e2e-test-user.org-1.zone1.google.gdch.test": "mhs"
.Configure o projeto de inquilino em
gdcloud
:TENANT_PROJECT=PROJECT_NAME gdcloud config set project $TENANT_PROJECT
É apresentado o seguinte resultado:
Updated property [core/project].
Identifique um projeto do Harbor ao qual tenha acesso de gestão. Crie um projeto do Harbor se não existir nenhum.
Realizar 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:latest
Um resultado bem-sucedido é semelhante ao seguinte:
# 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}/harbor-project/nginx:latest latest: Pulling from harbor-project/nginx Digest: sha256:7ba542bde95e6523a4b126f610553e3657b8108bc3175596ee7e911ae1219bfc Status: Image is up to date for myinstance-e2e-test-user.org-1.zone1.google.gdch.test/harbor-project/nginx:latest
Se a operação não for bem-sucedida, pode ver o seguinte resultado:
E1025 19:21:39.322290 1273587 get.go:24] failed to get user name: user is not logged in or login expired, please login again
Neste exemplo, a sessão de autenticação do GDC expirou e tem de iniciar sessão novamente no GDC. Para mais informações, consulte a secção Inicie sessão.
Inicie sessão no Helm com a sua identidade do GDC
Use o auxiliar de credenciais do MHS com a sua identidade do GDC para iniciar sessão na CLI Helm.
Para fazer a autenticação com o Helm, siga estes passos:
Depois de se autenticar com o GDC, obtenha as suas credenciais de utilizador do auxiliar de credenciais:
echo $REGISTRY | docker-credential-mhs get
O resultado é semelhante ao seguinte:
{"Username":"tokenreview$fop-infrastructure-operator@example.com","Secret":"STS-Bearer-3q2o6mBKk44Gzi4105vyiSnXMuixtnm-RnyxSgJtnYkNbGV7drpwgIuftinAXVlo0Im9kgoGmc2WcZTSjE-vh2a71Su7YjB6qIAjAQ5ABkY03AHNfkHhRZzxthumDIVAd08wm2weit3_NpMPgOnf9qMblds_Q0PAWk2OhpodBpCfyl3LWZpIZBaNVgtg-TB_7fjpEDOm-_Q5VYABScOgZFP_bw"}
Inicie sessão na CLI Helm com as credenciais. Quando lhe for pedido que introduza as credenciais, use as credenciais devolvidas 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_bw
Um resultado bem-sucedido para esta operação tem o seguinte aspeto:
Login Succeeded
Inicie sessão no Docker ou no Helm com segredos da CLI
Para iniciar sessão no Docker ou no Helm com segredos da CLI, siga estes passos:
- Inicie sessão no Harbor com uma conta de utilizador do IAP.
- Clique no seu nome de utilizador e selecione Perfil do utilizador.
- Para copiar o segredo da CLI associado à sua conta, clique em Copiar.
Opcional: para apresentar botões para gerar automaticamente ou criar manualmente um novo segredo da CLI, clique nas reticências
no seu perfil de utilizador.Se gerou um novo segredo da CLI, clique em
Copiar para o copiar.Agora, pode usar o seu segredo da CLI como palavra-passe quando iniciar sessão no Harbor a partir da CLI do Docker ou do Helm:
docker login -u USERNAME -p CLI_SECRET HARBOR_INSTANCE_URL
Substitua o seguinte:
USERNAME
: o nome de utilizador da conta do HarborCLI_SECRET
: o segredo da CLI gerado.HARBOR_INSTANCE_URL
: o URL da instância do Harbor.