Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Pull de imagens de uma instância do ACR Enterprise Edition na mesma conta usando o add-on sem credenciais

Última atualização: Sep 21, 2026

O add-on sem credenciais automatiza a autenticação para o pull de imagens, eliminando a necessidade de configurar imagePullSecrets repetidamente. Este tópico descreve como instalar, configurar e usar o add-on, além de notas de uso importantes.

Como funciona

Ao usar o Container Registry (ACR) como source de imagens sem ativar o pull anônimo de imagens, seu cluster ACK deve fornecer um nome de usuário e uma senha para autenticar cada pull de imagem. A solução comum é armazenar essas credenciais em um Secret, mas essa abordagem tem várias desvantagens:

  • Os Secrets são textos simples codificados em Base64, o que representa um risco de segurança se expostos.

  • É necessário especificar imagePullSecrets manualmente para cada workload.

  • Os Secrets não podem ser compartilhados entre namespaces.

O add-on sem credenciais funciona da seguinte forma:

  1. O add-on obtém credenciais temporárias da instância do ACR.

  2. O add-on salva as credenciais temporárias em um Secret.

  3. O add-on associa o Secret aos ServiceAccounts especificados em sua configuração.

  4. Os workloads que usam esses ServiceAccounts podem então fazer o pull de imagens automaticamente usando as credenciais temporárias armazenadas no Secret.

O add-on sem credenciais permite que você gerencie ServiceAccounts em vários namespaces e atualize periodicamente as credenciais temporárias. Isso reduz os riscos de segurança e elimina a necessidade de adicionar imagePullSecrets manualmente aos seus workloads. O add-on sem credenciais é gratuito.

image

Comparação de add-ons

O ACK fornece o add-on aliyun-acr-credential-helper em duas edições: gerenciada e autogerenciada. Você pode instalar apenas uma edição por vez. A tabela a seguir compara as duas edições.

Item

aliyun-acr-credential-helper (managed)

aliyun-acr-credential-helper (self-managed)

Versões de cluster suportadas

Versão 1.22 ou posterior de clusters ACK gerenciados, clusters ACK serverless ou clusters ACK Edge

Versão 1.20 ou posterior de clusters ACK gerenciados ou clusters ACK dedicados

Recursos

  • Não requer autogerenciamento

  • Suporta pull de imagens entre contas usando RRSA

  • Suporta consulta de logs do add-on

  • Suporta pull de imagens entre contas usando uma função RAM de worker, RRSA ou um par de AccessKey

Para atualizar um cluster, consulte Manually upgrade a cluster .

Pré-requisitos

  • Seu cluster executa uma versão suportada pelo add-on sem credenciais. Para mais informações, consulte a tabela anterior.

  • Você possui uma instância do ACR Enterprise Edition.

    Importante
    • O add-on sem credenciais suporta apenas instâncias do ACR Enterprise Edition e instâncias do ACR Personal Edition criadas até 8 de setembro de 2024. Se você não puder usar o add-on sem credenciais, consulte How do I use imagePullSecrets?.

  • As permissões são concedidas à função RAM usada pelo add-on sem credenciais. Para mais informações, consulte Conceder permissões.

  • A conectividade de rede está estabelecida entre a instância do ACR Enterprise Edition e o cluster ACK.

    Configure conectividade de rede

    Antes de fazer o pull de uma imagem, certifique-se de que a instância do ACR Enterprise Edition e o cluster ACK possam se comunicar e que os nomes de domínio necessários possam ser resolvidos. Você pode usar um dos seguintes métodos para fazer o pull de imagens na mesma conta:

    • Controle de acesso VPC do ACR: Se a instância do ACR Enterprise Edition e o cluster ACK estiverem na mesma região, o cluster ACK poderá acessar a instância do ACR por meio de uma VPC. Para mais informações, consulte Configure network access control.

    • Conexão de peering de VPC: Se a instância do ACR e o cluster ACK não estiverem na mesma VPC, você poderá usar uma conexão de peering de VPC para conectar as duas VPCs. Isso permite que o cluster ACK acesse a instância do ACR Enterprise Edition. O peering de VPC é gratuito para VPCs na mesma região, mas incorre em cobranças para VPCs em regiões diferentes. Para mais informações, consulte Billing. Os blocos CIDR das duas VPCs não podem se sobrepor. Se os blocos CIDR em uso se sobrepuserem em grande parte, modifique a arquitetura de rede existente.

      Procedimento de conexão de peering de VPC

      1. Enable private domain name resolution for the ACR instance

        Após conectar a instância do ACR Enterprise Edition à VPC, você pode acessar a instância dentro da VPC usando seu nome de domínio privado. Após a configuração, obtenha o id da VPC e o endereço IP privado da instância do ACR Enterprise Edition.
      2. Obtain the domain name and IP address of the ACR instance

        Obtenha o nome de domínio e o endereço IP do service de autenticação usado para acessar a instância do ACR Enterprise Edition, bem como o nome de domínio e o endereço IP do bucket OSS associado.
      3. Create a VPC peering connection and configure a route table

        Você deve adicionar entradas de rota que apontem para a VPC par em ambas as extremidades da conexão de peering de VPC para ative a comunicação privada entre as VPCs do cluster ACK e da instância do ACR Enterprise Edition. Na extremidade do cluster ACK da conexão de peering de VPC, você também deve configurar entradas de rota para o endereço IP do service de autenticação e o endereço IP do bucket OSS associado.
      4. Resolver o nome de domínio da instância do ACR para o cluster ACK

        Use métodos como adding a private DNS record ou use um node pool custom data script para modifique em lote o arquivo /etc/hosts . Isso resolve o nome de domínio da instância do ACR para seu endereço IP privado, permitindo que o cluster ACK encaminhe o tráfego para a VPC da instância do ACR por meio das entradas de rota configuradas.
    • Internet: Se tanto a instância do ACR Enterprise Edition quanto o cluster ACK puderem acessar a internet, as imagens poderão ser transferidas pela internet. Para mais informações, consulte Configure public access control for an ACR instance e Enable internet access for a cluster.

Usar o add-on sem credenciais gerenciado

Etapa 1: Instale o add-on

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Add-ons.

  3. Na página Add-ons, clique na guia Security, localize o cartão aliyun-acr-credential-helper (managed) e clique em Install.

  4. Na página Install add-on aliyun-acr-credential-helper, visualize as configurações de AcrInstanceInfo e outras opções. AcrInstanceInfo contém as configurações para cada instância do ACR associada ao add-on. As outras opções são configurações do add-on. Se você não precisar alterar os namespaces ou ServiceAccounts que o add-on monitora, poderá manter as configurações padrão.

    Após a instalação do add-on, você pode alterar suas configurações clicando em Configurations no cartão aliyun-acr-credential-helper (managed) na página Add-ons .

    Configurações de associação de instância do ACR:

    AcrInstanceInfo

    Descrição

    InstanceId

    O id da instância do ACR. Você pode obter o id no console do Container Registry.

    Importante

    Deixe este campo em branco para instâncias do ACR Personal Edition. Este campo é obrigatório para instâncias do ACR Enterprise Edition.

    regionId

    O id da região onde a instância do ACR está implantada. Você pode obter o id no console do Container Registry.

    Importante

    Este parâmetro é obrigatório para o pull de imagens entre regiões.

    domains

    Os nomes de domínio usados pelo add-on sem credenciais para acessar a instância do ACR. Por padrão, isso inclui todos os nomes de domínio (internet e VPC) da instância do ACR especificada. Para especificar vários nomes de domínio, separe-os por vírgulas (,).

    Configurações para pull de imagens entre contas

    Essas configurações se aplicam ao pull de imagens entre contas. Se você não precisar desse recurso, deixe os campos em branco.

    assumeRoleARN

    Nenhuma configuração é necessária para o pull na mesma conta. Para o pull entre contas, consulte Pull images across accounts.

    expireDuration

    rrsaRoleARN

    rrsaOIDCProviderRoleARN

    Configurações do add-on

    Parâmetro

    Descrição

    Enable RRSA

    Selecione esta caixa de seleção para ative o RRSA. Nenhuma configuração é necessária para o pull na mesma conta. Para o pull entre contas, consulte Pull images across accounts.

    watchNamespace

    Os namespaces onde você deseja ative o pull de imagens sem credenciais. O valor padrão é default. Defina o valor como all para ative esse recurso para todos os namespaces. Para especificar vários namespaces, separe-os por vírgulas (,). Recomendamos que você especifique apenas seus namespaces de negócios e evite usar all ou namespaces para componentes do sistema do cluster para evitar interrupções no pull de imagens do sistema.

    serviceAccount

    Especifica o ServiceAccount ao qual o add-on sem credenciais gerenciado se aplica. O valor padrão é Default. O valor Default aplica o add-on ao ServiceAccount padrão nos namespaces especificados. Se você definir o valor como *, o add-on se aplicará a todos os ServiceAccounts nos namespaces especificados. Para especificar vários ServiceAccounts, separe-os por vírgula (,).

    expiringThreshold

    O limiar de expiração para credenciais no add-on. O valor padrão é 15m.

    notifyEmail

    Nenhuma configuração é necessária.

Etapa 2: Fazer o pull de uma imagem

Após instalar e configurar o add-on sem credenciais, especifique um ServiceAccount associado ao add-on ao criar um workload. Isso ativa o pull de imagens sem credenciais.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      serviceAccountName: my-service-account # Specify a ServiceAccount that is associated with the credential-free add-on.
      containers:
      - name: nginx
        image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Specify the ACR image address.
        ports:
        - containerPort: 80

Usar o add-on sem credenciais autogerenciado

Etapa 1: Instale o add-on

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Add-ons.

  3. Na página Add-ons, clique na guia Security, localize o cartão aliyun-acr-credential-helper e clique em Install.

  4. Na página Parameters, selecione um modo de permissão na lista suspensa tokenMode e clique em OK. Após a instalação do add-on, você precisa configurar o ConfigMap antes de poder fazer o pull de imagens. Para mais informações, consulte Step 2: Update the add-on configuration (add an ACR instance).

    tokenMode

    Descrição

    auto

    (Recomendado) O add-on detecta o horário de criação do cluster e escolhe automaticamente um modo de permissão. Clusters criados antes de 3 de abril de 2023 usam o modo workerRole. Clusters criados em ou após 3 de abril de 2023 usam o modo managedRole.

    Importante

    As versões do aliyun-acr-credential-helper lançadas em ou após 3 de abril de 2023 fornecem um parâmetro que permite personalizar a função RAM da qual o add-on depende. Para mais informações, consulte [Product Change] Announcement on changing the permissions required by the aliyun-acr-credential-helper add-on.

    managedRole

    O add-on usa a função AliyunCSManagedAcrRole autorizada em Prerequisites para obter permissões.

    workerRole

    O add-on usa a função RAM de worker do cluster para obter permissões. Você precisa conceder permissões específicas à função RAM de worker.

    Selecione workerRole como o modo do add-on

    Se você selecione workerRole como o modo de permissão do add-on, a função RAM de worker do cluster deverá ter as seguintes permissões. Para obter informações sobre como conceder permissões, consulte Manage RAM role permissions.

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
    Importante

    Selecione este modo se precisar fazer o pull de imagens entre contas assumindo uma função.

Etapa 2: Atualize a configuração do add-on

Após a instalação do add-on sem credenciais, configure o ConfigMap acr-configuration para adicionar uma instância do ACR antes de poder fazer o pull de imagens. Você pode fazer isso usando o console ou o kubectl.

Console

  1. Na página Clusters, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Configurations > ConfigMaps.

  2. Na página ConfigMaps, selecione kube-system na lista suspensa Namespace. Em seguida, clique no ConfigMap acr-configuration e modifique as configurações conforme descrito na tabela a seguir.

    Parâmetro

    Descrição

    watch-namespace

    Os namespaces onde você deseja ative o pull de imagens sem credenciais. O valor padrão é default. Defina o valor como all para ative esse recurso para todos os namespaces. Para especificar vários namespaces, separe-os por vírgulas (,). Recomendamos que você especifique apenas seus namespaces de negócios e evite usar all ou namespaces para componentes do sistema do cluster para evitar interrupções no pull de imagens do sistema.

    acr-api-version

    Mantenha o valor padrão.

    expiring-threshold

    O limiar de expiração para credenciais no add-on. O valor padrão é 15m (15 minutos).

    acr-registry-info

    Uma matriz de informações da instância do ACR no formato de string YAML de várias linhas. Cada instância é configurada com um conjunto de três parâmetros.

    • instanceId: O id da instância do ACR. Você pode obter o id no console do Container Registry.

      Importante

      Deixe este campo em branco para instâncias do ACR Personal Edition. Este campo é obrigatório para instâncias do ACR Enterprise Edition.

    • regionId: O id da região onde a instância do ACR está implantada. Você pode obter o id no console do Container Registry.

      Importante

      Este parâmetro é obrigatório para o pull de imagens entre regiões. Para um exemplo de configuração, consulte a seção abaixo.

    • domains: Os nomes de domínio usados pelo add-on sem credenciais para acessar a instância do ACR. Por padrão, isso inclui todos os nomes de domínio da instância do ACR especificada por instanceId. Para especificar vários nomes de domínio, separe-os por vírgulas (,).

    Exemplo de configuração para pull entre regiões

    Ao usar várias instâncias do ACR em regiões diferentes, você deve especificar o id e a região para cada instância.

    data:
        service-account: "default"
        watch-namespace: "all"
        expiring-threshold: "15m"
        notify-email: "c*@aliyuncs.com"
        acr-registry-info: |
          - instanceId: "cri-instanceId"
            regionId: "cn-beijing"
          - instanceId: "cri-instanceId"
            regionId: "cn-hangzhou"      

    service-account

    Os ServiceAccounts associados ao add-on sem credenciais. Para especificar vários ServiceAccounts, separe-os por vírgulas (,). Se você definir o valor como default, o add-on se associa ao ServiceAccount padrão em cada namespace especificado. Se você definir o valor como "*", o add-on se associa a todos os ServiceAccounts nos namespaces especificados.

kubectl

  1. Execute o seguinte comando e edite o ConfigMap acr-configuration. Consulte a tabela a seguir para obter detalhes da configuração.

    kubectl edit cm acr-configuration -n kube-system

    Chave do parâmetro

    Descrição

    Valor

    service-account

    Os ServiceAccounts que o add-on sem credenciais tem como alvo.

    O valor padrão é default.

    Nota

    Para especificar vários ServiceAccounts, separe-os por vírgulas (,). Se você definir o valor como "*", ele se aplicará a todos os ServiceAccounts nos namespaces especificados.

    acr-registry-info

    Uma matriz de informações da instância do ACR no formato de string YAML de várias linhas. Cada instância é configurada com um conjunto de três parâmetros.

    Nota

    Parâmetros de informações da instância:

    • instanceId: O id da instância. Isso é obrigatório para instâncias Enterprise Edition.

    • regionId: Opcional. O padrão é a região local.

    • domains: Opcional. O padrão são todos os nomes de domínio da instância correspondente. Para especificar vários nomes de domínio, separe-os por vírgulas (,).

    Exemplo de configuração para uma instância do ACR Enterprise Edition:

    - instanceId: <cri-instanceId>
      regionId: "cn-hangzhou"
      domains: "xxx.com,yyy.com"

    watch-namespace

    Os namespaces onde você deseja ative o pull de imagens sem credenciais.

    O valor padrão é default. Defina o valor como all para ative esse recurso para todos os namespaces. Para especificar vários namespaces, separe-os por vírgulas (,).

    Nota

    Recomendamos que você especifique apenas seus namespaces de negócios e evite usar all ou namespaces para componentes do sistema do cluster para evitar interrupções no pull de imagens do sistema.

    expiring-threshold

    O limiar de expiração para credenciais armazenadas em cache localmente.

    O valor padrão é 15m (15 minutos).

Etapa 3: Fazer o pull de uma imagem

Após instalar e configurar o add-on sem credenciais, especifique um ServiceAccount associado ao add-on ao crie um workload. Isso ativa o pull de imagens sem credenciais.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      serviceAccountName: my-service-account # Specify a ServiceAccount that is associated with the credential-free add-on.
      containers:
      - name: nginx
        image: "******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest" # Specify the ACR image address.
        ports:
        - containerPort: 80

Perguntas frequentes

Ative o uso imediato de ServiceAccounts

Importante

Este recurso requer o aliyun-acr-credential-helper v23.02.06.1-74e2172-aliyun ou posterior.

Quando ativado, o add-on sem credenciais usa um Webhook para monitorar alterações do ServiceAccount no cluster. Quando um novo ServiceAccount é criado, o add-on injeta imediatamente o Secret sem credenciais. Isso é útil para cenários em que um ServiceAccount é usado imediatamente após a criação, como quando um Helm Chart cria um ServiceAccount e um Deployment simultaneamente. Este recurso pode afetar o desempenho do add-on e não é recomendado para uso geral.

Add-on gerenciado

Para ative este recurso, instale o add-on acr-credential-helper-webhook em seu cluster:

  1. Na página Clusters do ACK, clique no nome do seu cluster. No painel de navegação à esquerda, clique em Add-ons.

  2. Na página Add-ons, clique na guia Security, localize o cartão acr-credential-helper-webhook (managed) e clique em Install.

Add-on autogerenciado

Para ative este recurso, adicione os seguintes campos ao ConfigMap acr-configuration:

data:
  webhook-configuration: |
    enable: true
    failure-policy: Ignore
    timeout-seconds: 10

Parâmetro

Descrição

enable

Especifica se deve ative o recurso Webhook.

  • true: Ativa o recurso.

  • false: Desativa o recurso.

failure-policy

A política para lidar com exceções durante a criação do ServiceAccount.

  • Ignore: Ignora a exceção e permite que o ServiceAccount seja criado normalmente. O Secret de pull de imagem pode não ser anexado.

  • Fail: Interrompe a criação do ServiceAccount em caso de exceção. Isso não é recomendado, pois pode causar falhas de deployment.

Importante

Devido a uma limitação do API Server do cluster, se timeout-seconds estiver definido como 15, failure-policy estiver definido como Fail e você crie continuamente 10 ServiceAccounts por segundo, a criação dos ServiceAccounts falhará.

timeout-seconds

O período de tempo limite para uma única solicitação de criação de ServiceAccount. Se o tempo limite for excedido, o sistema responderá de acordo com a configuração de failure-policy. O valor padrão é 10 segundos (s).

Solucionar problemas de falhas no pull de imagens

Uma possível causa é uma configuração incorreta do add-on sem credenciais, por exemplo:

  • As informações da instância configuradas no add-on sem credenciais não correspondem à instância do ACR.

  • O endereço da imagem usado para o pull não corresponde ao nome de domínio especificado nas informações da instância do add-on.

Siga as etapas neste tópico para solucionar o problema.

Se o add-on estiver configurado corretamente, mas o pull da imagem ainda falhar, isso pode ser devido a um conflito entre um campo imagePullSecrets especificado manualmente no YAML do workload e o add-on sem credenciais. Para resolver isso, remova manualmente o campo imagePullSecrets e recrie o Pod.

Como uso imagePullSecrets?

As instâncias do ACR Personal Edition criadas em ou após 9 de setembro de 2024 não suportam o add-on sem credenciais. Para essas instâncias, recomendamos que você armazene o nome de usuário e a senha em um Secret e faça referência a ele no campo imagePullSecrets.

Importante
  • O add-on sem credenciais é incompatível com um campo imagePullSecrets especificado manualmente.

  • O Secret deve estar no mesmo namespace do workload.

Exemplo de uso de imagePullSecrets

Execute o seguinte comando, substitua os parâmetros e crie um Secret com seu nome de usuário e senha.

kubectl create secret docker-registry image-secret-1 \
  --docker-server=<registry-server> \
  --docker-username=<name> \
  --docker-password=<password> \
  --docker-email=<email>

Use o Secret em seu workload:

apiVersion: apps/v1
kind: Deployment 
metadata:
  name: nginx-test
  namespace: default 
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx 
    spec:
      imagePullSecrets:
      - name: image-secret-1  # Use the Secret created in the previous step.
      containers:
      - name: nginx 
        image: <acrID>.cr.aliyuncs.com/<repo>/nginx:latest  # Replace with the ACR image address.

Tópicos relacionados