Container Compute Service (ACS) permite fazer pull de imagens do Container Registry (ACR) sem senha para aumentar a eficiência e a segurança. Este tópico descreve como fazer pull de imagens do ACR sem senha em um cluster ACS.
Informações básicas
O Container Registry (ACR) oferece hospedagem segura e distribuição eficiente de artefatos nativos da nuvem em várias edições, incluindo ACR Personal Edition e ACR Enterprise Edition. Para mais informações, consulte Introdução ao Container Registry (ACR). O ACS fornece um método de configuração unificado para fazer pull de imagens do ACR sem senha em todas as edições do ACR.
Ao configurar o acesso sem senha para um cluster ACS, o sistema injeta automaticamente as informações de autenticação das imagens do ACR durante a criação de instâncias. Isso simplifica o processo de criação de instâncias e reduz o risco de exposição de senhas, aumentando a segurança.
Imagens Docker, repositórios auto-hospedados e outras imagens fora do ACR não suportam pull sem senha.
Pré-requisitos
Antes de configurar o pull sem senha de imagens do ACR em um cluster ACS, conclua as seguintes tarefas:
Crie um cluster ACS. Para mais informações, consulte Criar um cluster ACS.
-
Crie uma instância do ACR e configure o repositório de imagens e as imagens.
Para configurar uma instância do ACR Personal Edition, consulte Fazer push e pull de imagens usando uma instância Personal Edition.
Para configurar uma instância do ACR Enterprise Edition, consulte Fazer push e pull de imagens usando uma instância Enterprise Edition.
-
Se você utilizar uma instância do ACR Enterprise Edition, configure o método de acesso.
Instâncias recém-criadas do ACR Enterprise Edition ficam desconectadas por padrão. Configure as políticas de ACL apropriadas antes de acessar a instância pela Internet ou por uma Virtual Private Cloud (VPC).
Acesso pela Internet: Após ativar o acesso à rede pública, acesse diretamente as imagens da instância do ACR Enterprise Edition usando o nome de domínio público (com suporte a domínios cruzados). Para mais informações, consulte Configurar controle de acesso à rede pública.
Acesso via VPC: Para acessar uma instância do ACR Enterprise Edition por meio de uma VPC, ative a autorização necessária. Para mais informações, consulte Configurar controle de acesso à VPC.
Como funciona
O componente sem senha faz pull de imagens privadas lendo sua configuração no console. Após a configuração, esse componente cria automaticamente um Secret no cluster e o associa ao ServiceAccount especificado. Qualquer pod que utilize esse ServiceAccount usa automaticamente o Secret gerado pelo componente sem senha para fazer pull de imagens, viabilizando o pull sem senha.
Instale e configure o componente sem senha
Faça login no console do ACS. No painel de navegação à esquerda, clique em Clusters.
Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, clique em Add-ons.
Na página Add-ons, selecione a aba Security. Localize aliyun-acr-credential-helper e clique em Install.
-
Na caixa de diálogo Parameters, clique em Add ao lado de AcrInstanceInfo para adicionar várias entradas de instância do ACR. Use o exemplo abaixo para configuração e clique em OK.
-
Adicione AcrInstanceInfo.
NotaO cenário padrão é configurado da seguinte forma:
Para sincronizar uma instância do ACR Personal Edition, use a configuração padrão de AcrInstanceInfo.
Para sincronizar uma instância do ACR Enterprise Edition, insira o instanceID e mantenha os outros campos com seus valores padrão.
Chave do parâmetro
Descrição da chave do item de configuração
Valor
instanceID
ID da instância do ACR.
Encontre sua instância no Container Registry.
-
Enterprise Edition: Em Instance , localize o Instance ID. O valor é uma string que começa com
cri-. -
Personal Edition: Deixe este campo vazio para ativar o pull sem senha para a Personal Edition.
Valor padrão: vazio (configura a instância Personal Edition na região atual).
regionID
ID da região da instância do ACR.
ID da região onde reside sua instância do ACR. Por exemplo, o ID da região de Hangzhou é
cn-hangzhou.Valor padrão: a região do seu cluster ACS. Deixe vazio se a instância do ACR estiver na mesma região.
domains
Nomes de domínio usados para acessar a instância do ACR.
Nomes de domínio para fazer pull de imagens. Separe vários domínios com vírgulas (,).
Valor padrão: todos os domínios associados à instância do ACR especificada por instanceID (domínio público registry., domínio VPC registry-vpc., domínio interno registry-internal.*).
assumeRoleARN
(Opcional) O ARN da função RAM do proprietário do repositório de imagens obtido na etapa 4 de Configurar pull de imagens entre contas. Deixe vazio se não for fazer pull entre contas.
Exemplo: acs:ram::123456789012****:test-rrsa-acr
Valor padrão: vazio.
expireDuration
(Opcional) Período de validade das credenciais temporárias em cenários entre contas. Deixe vazio se não for fazer pull entre contas.
ImportanteO valor de expireDuration deve ser menor ou igual à Max Session Duration definida para a função do proprietário do repositório de imagens na etapa 4 de Configurar pull de imagens entre contas.
Valor padrão:
3600.rrsaRoleARN
(Opcional) O ARN da função RAM do cluster ACS obtido na etapa 3 de Configurar pull de imagens entre contas. Deixe vazio se não for fazer pull entre contas.
Exemplo: acs:ram::987654321012****:demo-role-for-rrsa
Valor padrão: vazio.
rrsaOIDCProviderRoleARN
(Opcional) O ARN do provider OIDC RRSA do cluster ACS obtido na etapa 2 de Configurar pull de imagens entre contas. Deixe vazio se não for fazer pull entre contas.
Exemplo: acs:ram::987654321012:oidc-provider/ack-rrsa-abcd1234
Valor padrão: vazio.
-
Configure os demais parâmetros.
Chave do parâmetro
Descrição da chave do item de configuração
Valor do item de configuração
Enable RRSA
Selecione para ativar o RRSA (requer a conclusão das configurações relacionadas ao RRSA).
Não selecionado por padrão. Após configurar os parâmetros do RRSA e selecionar esta opção, você pode fazer pull de imagens entre contas.
watchNamespace
Namespaces onde o pull de imagens sem senha está ativado.
O valor padrão é
default. Quando definido como all, indica que todos os namespaces devem suportar pulls de imagens sem senha. Para configurar múltiplos namespaces, separe-os com vírgulas (,).NotaRecomendamos especificar apenas os namespaces de suas aplicações. Evite definir como all ou usar namespaces de componentes do sistema para prevenir falhas no pull de imagens de componentes do sistema.
serviceAccount
Aplicar o componente sem senha à conta de serviço especificada.
Valor padrão:
default.NotaPara especificar múltiplos ServiceAccounts, separe-os com vírgulas (,). Use * para aplicar a todos os ServiceAccounts nos namespaces especificados.
expiringThreshold
Limiar de expiração para credenciais armazenadas em cache localmente.
Valor padrão:
15m.NotaRecomendamos usar 15m, que atualiza as credenciais 15 minutos antes de expirarem.
notifyEmail
Rótulo de e-mail no Secret gerado pelo componente sem senha.
Valor padrão:
xxx@aliyun.com.
-
Configure o pull de imagens entre contas
Usar RRSA para pull entre contas
RAM Roles for Service Accounts (RRSA) permite o isolamento de permissões no nível de pod em clusters ACS. Ao ativar o RRSA para seu cluster ACS e compartilhar o ARN da função autorizada com os proprietários do repositório de imagens, o componente sem senha pode fazer pull de imagens do ACR entre contas.
Atualmente, o RRSA suporta pull de imagens apenas de instâncias do ACR Enterprise Edition (Basic, Standard e Pro).
Após ativar o RRSA, as credenciais geradas pelo componente não podem fazer pull de imagens privadas da Personal Edition nem usar outros métodos de autenticação descritos neste tópico.
Para ativar o RRSA no plug-in sem senha, primeiro ative o RRSA e depois configure os parâmetros relacionados ao RRSA para o plug-in. Se você inverter essa ordem, exclua o pod do plug-in sem senha após a configuração para que o RRSA tenha efeito.
Ative o RRSA para seu cluster ACS. Para mais informações, consulte Ativar RRSA.
O ACS cria automaticamente um provider OIDC RRSA para o cluster. No console do cluster, acesse Basic Information > Security and Audit > RRSA > OIDC para visualizar a Provider URL e o Provider ARN.
-
O proprietário do cluster configura uma função RAM usando o provider OIDC e concede permissões de assunção de função.
-
Crie uma função RAM usando o provider OIDC ou associe uma função RAM existente ao provider OIDC para que o componente sem senha possa usar a função para acessar a OpenAPI.
Crie uma função RAM usando o provider OIDC
Faça login no console do Resource Access Management (RAM) com sua conta Alibaba Cloud.
No painel de navegação à esquerda, escolha . Na página Roles, clique em Create Role.
Na página Create Role, clique em Switch to Policy Editor. Defina Principal como Identity Provider. Configure a função conforme abaixo e clique em OK.
-
Use o exemplo de configuração a seguir.
Item de configuração
Descrição
IdP Type
OIDC.
Select IdP
acs-rrsa-<cluster_id>. Substitua <cluster_id> pelo ID do seu cluster.
Condition
-
oidc:iss: Mantenha o valor padrão.
-
oidc:aud: Mantenha o valor padrão.
-
oidc:sub: Defina o operador de condição como StringEquals. Use o formato system:serviceaccount:<namespace>:<serviceAccountName>.
-
<namespace>: Namespace da sua aplicação.
-
<serviceAccountName>: Nome da conta de serviço.
Para o plug-in sem senha, você deve usar
system:serviceaccount:kube-system:aliyun-acr-credential-helper. -
-
Na caixa de diálogo Create Role, defina Role Name como demo-role-for-rrsa. Clique em OK.
Associe uma função RAM existente ao provider OIDC
Faça login no console do Resource Access Management (RAM) com sua conta Alibaba Cloud.
No painel de navegação à esquerda, escolha . Clique no nome da função RAM desejada.
Na aba Trust Policy, clique em Edit Trust Policy. Para mais informações, consulte Modifique a política de confiança de uma função RAM.
-
Adicione a seguinte entrada de exemplo à lista
Statementna política de confiança.{ "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "oidc:aud": "sts.aliyuncs.com", "oidc:iss": "<oidc_issuer_url>", "oidc:sub": "system:serviceaccount:kube-system:aliyun-acr-credential-helper" } }, "Effect": "Allow", "Principal": { "Federated": [ "<oidc_provider_arn>" ] } }ImportanteSubstitua
<oidc_issuer_url>e<oidc_provider_arn>pela Provider URL e pelo Provider ARN obtidos na etapa 2.
Anexe a política de permissão
AliyunSTSAssumeRoleAccessà função RAM para que o componente sem senha possa assumir a função. Para mais informações, consulte Gerencie permissões de uma função RAM.Na página Basic Information > ARN, visualize o ARN da função RAM.
-
-
Configure uma função RAM para o proprietário do repositório de imagens, confie na função RAM do proprietário do cluster e conceda permissões de pull de imagens.
Crie uma função RAM. Para mais informações, consulte Criar uma função RAM com conta Alibaba Cloud como entidade confiável.
-
Confie na função RAM do cluster ACS para permitir que ela assuma a função do proprietário do repositório. Para mais informações, consulte Modifique a política de confiança de uma função RAM. Use o seguinte documento de política de exemplo:
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "RAM": [ "<acs_role_arn>" ] } } ], "Version": "1" }ImportanteSubstitua
<acs_role_arn>pelo ARN da função RAM do cluster ACS obtido na etapa 3. -
Conceda permissões de pull de imagens à função RAM.
-
Crie uma política personalizada no modo de edição de script. O conteúdo do documento de política é o seguinte. Recomendamos nomear a política como Name
AliyunACRBasicAccess. Para mais informações, consulte Criar uma política personalizada.{ "Version": "1", "Statement": [ { "Action": [ "cr:GetAuthorizationToken", "cr:ListInstanceEndpoint", "cr:PullRepository" ], "Resource": "*", "Effect": "Allow" } ] } Conceda a permissão
AliyunACRBasicAccessà função RAM. Para mais informações, consulte Gerencie permissões de uma função RAM.
-
[Opcional] Defina a Max Session Duration para a função RAM. Os valores válidos variam de 3600 a 43200 segundos. Se você definir a Max Session Duration, defina também o parâmetro expireDuration ao configurar AcrInstanceInfo na etapa 5.
Na página Basic Information > ARN, visualize o ARN da função RAM.
-
Na configuração do componente sem senha, selecione Enable RRSA e configure AcrInstanceInfo.
Modifique AcrInstanceInfo conforme abaixo.
Chave do parâmetro
Descrição
Valor do item de configuração
Enable RRSA
Selecione para ativar o RRSA (requer a conclusão das configurações relacionadas ao RRSA).
Selecionado
rrsaRoleARN
ARN da função RAM do cluster ACS obtido na etapa 3.
<acs_role_arn>rrsaOIDCProviderRoleARN
ARN do provider OIDC RRSA do cluster ACS obtido na etapa 2.
oidc_provider_arnassumeRoleARN
ARN da função RAM do proprietário do repositório de imagens obtido na etapa 4.
<acr_role_arn>expireDuration
Período de validade das credenciais temporárias geradas pelo componente sem senha.
ImportanteO valor de expireDuration deve ser menor ou igual à Max Session Duration definida para a função do proprietário do repositório de imagens na etapa 4.
Padrão: 3600. Intervalo válido: [3600, 43200]. Unidade: segundos.