Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Pull images from an ACR Enterprise Edition instance in the same account using the credential-free add-on

Última atualização: Sep 17, 2026

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

Como funciona

Ao utilizar o Container Registry (ACR) como fonte de imagens sem habilitar o acesso anônimo, seu cluster ACK precisa fornecer nome de usuário e senha para autenticar cada operação de pull. A solução comum é armazenar essas credenciais em um Secret, mas essa abordagem apresenta várias desvantagens:

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

  • Você deve especificar manualmente o imagePullSecrets para cada workload.

  • Não é possível compartilhar Secrets entre namespaces diferentes.

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 definidos em sua configuração.

  4. Workloads que utilizam esses ServiceAccounts conseguem puxar imagens automaticamente por meio das credenciais temporárias armazenadas no Secret.

Esse add-on gerencia ServiceAccounts em múltiplos namespaces e renova periodicamente as credenciais temporárias. Tal mecanismo reduz riscos de segurança e remove a obrigação de adicionar manualmente o imagePullSecrets aos seus workloads. O uso do add-on sem credenciais é gratuito.

image

Comparação entre add-ons

O ACK oferece 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 versões.

Item

aliyun-acr-credential-helper (gerenciado)

aliyun-acr-credential-helper (autogerenciado)

Versões de cluster suportadas

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

Versão 1,20 ou posterior de clusters gerenciados ACK ou clusters dedicados ACK

Recursos

  • Dispensa autogerenciamento

  • Suporta pull de imagens entre contas via RRSA

  • Permite consultar logs do add-on

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

Para atualizar um cluster, consulte Manually upgrade a cluster .

Pré-requisitos

  • O cluster executa uma versão compatível com o add-on sem credenciais. Para mais detalhes, veja 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. Caso não possa utilizar este add-on, consulte How do I use imagePullSecrets?.

  • A função RAM utilizada pelo add-on sem credenciais tem as permissões adequadas. Para mais informações, consulte Conceder permissões.

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

    Configurar conectividade de rede

    Antes de puxar uma imagem, certifique-se de que a instância do ACR Enterprise Edition e o cluster ACK conseguem se comunicar e que os nomes de domínio necessários podem ser resolvidos. Utilize um dos métodos abaixo para puxar imagens dentro da 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 poderá acessar a instância via VPC. Para mais informações, consulte Configure network access control.

    • Conexão de peering VPC: Quando a instância do ACR e o cluster ACK não estão na mesma VPC, utilize uma conexão de peering para ligar as duas redes. Isso permite que o cluster acesse a instância do ACR Enterprise Edition. O peering VPC é gratuito para VPCs na mesma região, mas gera custos quando as VPCs estão em regiões diferentes. Para mais detalhes, consulte Billing. Os blocos CIDR das duas VPCs não podem se sobrepor. Caso haja grande sobreposição nos blocos CIDR em uso, modifique a arquitetura de rede existente.

      Procedimento de conexão de peering VPC

      1. Enable private domain name resolution for the ACR instance

        Após conectar a instância do ACR Enterprise Edition à VPC, você poderá acessá-la dentro da VPC usando seu nome de domínio privado. Depois da 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 serviço 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

        Adicione entradas de rota apontando para a VPC par em ambas as extremidades da conexão de peering VPC para habilitar 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, configure também entradas de rota para o endereço IP do serviço de autenticação e para o endereço IP do bucket OSS associado.
      4. Resolva o nome de domínio da instância do ACR para o cluster ACK

        Utilize métodos como adding a private DNS record ou use um node pool custom data script para modificar em lote o arquivo /etc/hosts . Isso resolve o nome de domínio da instância do ACR para seu endereço IP privado e permite que o cluster ACK encaminhe tráfego para a VPC da instância através das entradas de rota configuradas.
    • Internet: Se tanto a instância do ACR Enterprise Edition quanto o cluster ACK tiverem acesso à internet, as imagens poderão ser transferidas pela rede pública. 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: Instalar o add-on

  1. Faça login no console 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 aba 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. O campo AcrInstanceInfo contém as definições de cada instância do ACR associada ao add-on. As demais opções referem-se às configurações gerais do componente. Caso não precise alterar os namespaces ou ServiceAccounts monitorados, mantenha as configurações padrão.

    Após a instalação, altere as configurações clicando em Configurations no cartão aliyun-acr-credential-helper (managed) dentro da página Add-ons .

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

    AcrInstanceInfo

    Descrição

    InstanceId

    ID da instância do ACR. Obtenha esse 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

    ID da região onde a instância do ACR está implantada. Obtenha esse ID no console do Container Registry.

    Importante

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

    domains

    Nomes de domínio usados pelo add-on sem credenciais para acessar a instância do ACR. Por padrão, inclui todos os domínios (internet e VPC) da instância especificada. Para definir múltiplos domínios, separe-os por vírgulas (,).

    Configurações para pull de imagens entre contas

    Estas configurações aplicam-se a pulls de imagens entre contas. Se não precisar desse recurso, deixe os campos em branco.

    assumeRoleARN

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

    expireDuration

    rrsaRoleARN

    rrsaOIDCProviderRoleARN

    Configurações do add-on

    Parâmetro

    Descrição

    Enable RRSA

    Marque esta caixa para ativar o RRSA. Nenhuma configuração é necessária para pulls na mesma conta. Para pulls entre contas, consulte Pull images across accounts.

    watchNamespace

    Namespaces onde deseja habilitar o pull de imagens sem credenciais. O valor padrão édefault. Defina como all para ativar esse recurso em todos os namespaces. Para especificar vários namespaces, separe-os por vírgulas (,). Recomendamos especificar apenas seus namespaces de negócios e evitar o uso de all ou namespaces de componentes do sistema para evitar interrupções nos pulls de imagens do sistema.

    serviceAccount

    Define 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 definido como *, o add-on se aplica a todos os ServiceAccounts nos namespaces indicados. Para especificar vários ServiceAccounts, separe-os por vírgula (,).

    expiringThreshold

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

    notifyEmail

    Nenhuma configuração necessária.

Etapa 2: Puxar uma imagem

Após instalar e configurar o add-on sem credenciais, especifique um ServiceAccount associado ao add-on ao criar um workload. Isso habilita 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: Instalar o add-on

  1. Faça login no console 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 aba 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, configure o add-on antes de puxar 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 a data de criação do cluster e escolhe automaticamente o 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

    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 utiliza a função RAM de worker do cluster para obter permissões. Conceda permissões específicas à função RAM de worker.

    Selecionar workerRole como modo do add-on

    Se selecionar workerRole como modo de permissão, a função RAM de worker do cluster deve ter as seguintes permissões. Para saber 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 puxar imagens entre contas assumindo uma função.

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

Depois de instalar o add-on sem credenciais, configure o ConfigMap acr-configuration para adicionar uma instância do ACR antes de puxar imagens. Realize essa tarefa via console ou 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

    Namespaces onde deseja habilitar o pull de imagens sem credenciais. O valor padrão é default. Defina como all para ativar esse recurso em todos os namespaces. Para especificar vários namespaces, separe-os por vírgulas (,). Recomendamos especificar apenas seus namespaces de negócios e evitar o uso de all ou namespaces de componentes do sistema para evitar interrupções nos pulls de imagens do sistema.

    acr-api-version

    Mantenha o valor padrão.

    expiring-threshold

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

    acr-registry-info

    Array de informações da instância do ACR no formato de string YAML multilinha. Cada instância é configurada com um conjunto de três parâmetros.

    • instanceId: ID da instância do ACR. Obtenha esse 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: ID da região onde a instância do ACR está implantada. Obtenha esse ID no console do Container Registry.

      Importante

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

    • domains: Nomes de domínio usados pelo add-on sem credenciais para acessar a instância do ACR. Por padrão, inclui todos os domínios da instância especificada por instanceId. Para definir múltiplos domínios, separe-os por vírgulas (,).

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

    Ao usar múltiplas instâncias do ACR em regiões diferentes, especifique o ID e a região de 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

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

kubectl

  1. Execute o comando a seguir para editar o ConfigMap acr-configuration. Consulte a tabela abaixo para detalhes da configuração.

    kubectl edit cm acr-configuration -n kube-system

    Chave do parâmetro

    Descrição

    Valor

    service-account

    ServiceAccounts alvo do add-on sem credenciais.

    O valor padrão é default.

    Nota

    Para especificar vários ServiceAccounts, separe-os por vírgulas (,). Se definido como "*", aplica-se a todos os ServiceAccounts nos namespaces especificados.

    acr-registry-info

    Array de informações da instância do ACR no formato de string YAML multilinha. Cada instância é configurada com um conjunto de três parâmetros.

    Nota

    Parâmetros de informação da instância:

    • instanceId: ID da instância. Obrigatório para instâncias Enterprise Edition.

    • regionId: Opcional. Assume como padrão a região local.

    • domains: Opcional. Assume como padrão todos os nomes de domínio da instância correspondente. Para especificar múltiplos domínios, 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

    Namespaces onde deseja habilitar o pull de imagens sem credenciais.

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

    Nota

    Recomendamos especificar apenas seus namespaces de negócios e evitar o uso de all ou namespaces de componentes do sistema para evitar interrupções nos pulls de imagens do sistema.

    expiring-threshold

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

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

Etapa 3: Puxar uma imagem

Após instalar e configurar o add-on sem credenciais, especifique um ServiceAccount associado ao add-on ao criar um workload. Isso habilita 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

Habilitar uso imediato de ServiceAccounts

Importante

Este recurso requer a versã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 nos ServiceAccounts do cluster. Ao criar um novo ServiceAccount, o add-on injeta imediatamente o Secret sem credenciais. Isso é útil em cenários onde um ServiceAccount é utilizado logo após sua criação, como quando um Helm Chart cria simultaneamente um ServiceAccount e um Deployment. Esse recurso pode afetar o desempenho do add-on e não é recomendado para uso geral.

Managed add-on

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

  1. Na página Clusters 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 aba Security, localize o cartão acr-credential-helper-webhook (managed) e clique em Install.

Self-managed add-on

Para ativar 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

Define se o recurso Webhook deve ser ativado.

  • true: Ativa o recurso.

  • false: Desativa o recurso.

failure-policy

Política para tratamento de 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 imagens pode não ser anexado.

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

Importante

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

timeout-seconds

Tempo limite para uma única solicitação de criação de ServiceAccount. Se o tempo for excedido, o sistema responde conforme a configuração de failure-policy. O valor padrão é 10 segundos (s).

Solucionar falhas no pull de imagens

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

  • As informações da instância configuradas no add-on 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 deste tópico para solucionar o problema.

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

Como usar imagePullSecrets?

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 armazenar o nome de usuário e a senha em um Secret e referenciá-lo 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 comando abaixo substituindo os parâmetros para criar 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>

Utilize o Secret no 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