Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 21, 2026

El complemento sin credenciales automatiza la autenticación para extraer imágenes y elimina la necesidad de configurar imagePullSecrets de forma repetida. En este tema se describe cómo instalarlo, configurarlo y utilizarlo, junto con notas importantes sobre su uso.

Funcionamiento

Cuando utiliza Container Registry (ACR) como origen de imágenes sin habilitar la extracción anónima, su clúster ACK debe proporcionar un nombre de usuario y una contraseña para autenticar cada extracción. La solución habitual consiste en almacenar estas credenciales en un Secret, pero este enfoque presenta varios inconvenientes:

  • Los Secrets son texto plano codificado en Base64, lo que representa un riesgo de seguridad si quedan expuestos.

  • Debe especificar manualmente imagePullSecrets para cada carga de trabajo.

  • Los Secrets no se pueden compartir entre namespaces.

El complemento sin credenciales funciona de la siguiente manera:

  1. El complemento obtiene credenciales temporales de la instancia de ACR.

  2. El complemento guarda las credenciales temporales en un Secret.

  3. El complemento asocia el Secret con los ServiceAccounts especificados en su configuración.

  4. Las cargas de trabajo que usan estos ServiceAccounts pueden extraer imágenes automáticamente con las credenciales temporales almacenadas en el Secret.

El complemento sin credenciales puede gestionar ServiceAccounts en varios namespaces y actualizar periódicamente las credenciales temporales. Esto reduce los riesgos de seguridad y elimina la necesidad de agregar manualmente imagePullSecrets a sus cargas de trabajo. El uso del complemento sin credenciales es gratuito.

image

Comparación de complementos

ACK ofrece el complemento aliyun-acr-credential-helper en dos ediciones: administrada y autoadministrada. Solo puede instalar una edición a la vez. A continuación se comparan ambas ediciones.

Elemento

aliyun-acr-credential-helper (administrado)

aliyun-acr-credential-helper (autoadministrado)

Versiones de clúster compatibles

Versión 1.22 o posterior de clústeres administrados de ACK, clústeres serverless de ACK o clústeres ACK Edge

Versión 1.20 o posterior de clústeres administrados de ACK o clústeres dedicados de ACK

Funciones

  • No requiere administración manual

  • Admite la extracción de imágenes entre cuentas mediante RRSA

  • Permite consultar los registros del complemento

  • Admite la extracción de imágenes entre cuentas mediante un rol de RAM de worker, RRSA o un par de AccessKey

Para actualizar un clúster, consulte Manually upgrade a cluster .

Requisitos previos

  • Su clúster ejecuta una versión compatible con el complemento sin credenciales. Para obtener más información, consulte la tabla anterior.

  • Cuenta con una instancia de ACR Enterprise Edition.

    Importante
    • El complemento sin credenciales solo admite instancias de ACR Enterprise Edition e instancias de ACR Personal Edition creadas el 8 de septiembre de 2024 o antes. Si no puede usar el complemento sin credenciales, consulte How do I use imagePullSecrets?.

  • Se otorgaron permisos al rol de RAM que usa el complemento sin credenciales. Para obtener más información, consulte Otorgar permisos.

  • Se estableció conectividad de red entre la instancia de ACR Enterprise Edition y el clúster ACK.

    Configurar la conectividad de red

    Antes de extraer una imagen, compruebe que la instancia de ACR Enterprise Edition y el clúster ACK puedan comunicarse entre sí y que los nombres de dominio necesarios se resuelvan correctamente. Puede usar uno de los siguientes métodos para extraer imágenes dentro de la misma cuenta:

    • Control de acceso VPC de ACR: si la instancia de ACR Enterprise Edition y el clúster ACK están en la misma región, el clúster ACK puede acceder a la instancia de ACR a través de una VPC. Para obtener más información, consulte Configure network access control.

    • Conexión de emparejamiento de VPC: si la instancia de ACR y el clúster ACK no están en la misma VPC, puede usar una conexión de emparejamiento para unir ambas VPC. De esta forma, el clúster ACC accede a la instancia de ACR Enterprise Edition. El emparejamiento de VPC es gratuito cuando las VPC están en la misma región, pero genera cargos si se encuentran en regiones distintas. Para obtener más información, consulte Billing. Los bloques CIDR de las dos VPC no deben superponerse. Si los bloques CIDR en uso se superponen en gran medida, deberá modificar la arquitectura de red existente.

      Procedimiento de conexión de emparejamiento de VPC

      1. Enable private domain name resolution for the ACR instance

        Después de conectar la instancia de ACR Enterprise Edition a la VPC, podrá acceder a la instancia dentro de la VPC mediante su nombre de dominio privado. Una vez completada la configuración, obtenga el ID de la VPC y la dirección IP privada de la instancia de ACR Enterprise Edition.
      2. Obtain the domain name and IP address of the ACR instance

        Obtenga el nombre de dominio y la dirección IP del servicio de autenticación utilizado para acceder a la instancia de ACR Enterprise Edition, así como el nombre de dominio y la dirección IP del bucket de OSS asociado.
      3. Create a VPC peering connection and configure a route table

        Debe agregar entradas de ruta que apunten a la VPC homóloga en ambos extremos de la conexión de emparejamiento de VPC. Esto permite habilitar la comunicación privada entre las VPC del clúster ACK y la instancia de ACR Enterprise Edition. En el extremo del clúster ACK, también debe configurar entradas de ruta para la dirección IP del servicio de autenticación y la dirección IP del bucket de OSS asociado.
      4. Resuelva el nombre de dominio de la instancia de ACR para el clúster ACK

        Utilice métodos como adding a private DNS record o bien un node pool custom data script para modificar por lotes el archivo /etc/hosts . Esto resuelve el nombre de dominio de la instancia de ACR hacia su dirección IP privada y permite que el clúster ACK reenvíe el tráfico a la VPC de la instancia de ACR mediante las entradas de ruta configuradas.
    • Internet: si tanto la instancia de ACR Enterprise Edition como el clúster ACK tienen acceso a internet, las imágenes se pueden transferir por esa vía. Para obtener más información, consulte Configure public access control for an ACR instance y Enable internet access for a cluster.

Usar el complemento sin credenciales administrado

Paso 1: Instalar el complemento

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Add-ons.

  3. En la página Add-ons, haga clic en la pestaña Security, busque la tarjeta aliyun-acr-credential-helper (managed) y luego haga clic en Install.

  4. En la página Install add-on aliyun-acr-credential-helper, revise la configuración de AcrInstanceInfo y las demás opciones. AcrInstanceInfo contiene los ajustes de cada instancia de ACR asociada al complemento. Las demás opciones corresponden a la configuración del complemento. Si no necesita cambiar los namespaces ni los ServiceAccounts que supervisa el complemento, mantenga la configuración predeterminada.

    Después de instalar el complemento, puede modificar su configuración haciendo clic en Configurations en la tarjeta aliyun-acr-credential-helper (managed), ubicada en la página Add-ons .

    Configuración de asociación de instancias de ACR:

    AcrInstanceInfo

    Descripción

    InstanceId

    ID de la instancia de ACR. Puede obtenerlo desde la consola de Container Registry.

    Importante

    Deje este campo vacío para las instancias de ACR Personal Edition. Este campo es obligatorio para las instancias de ACR Enterprise Edition.

    regionId

    ID de la región donde se despliega la instancia de ACR. Puede obtenerlo desde la consola de Container Registry.

    Importante

    Este parámetro es obligatorio para extraer imágenes entre regiones.

    domains

    Nombres de dominio que utiliza el complemento sin credenciales para acceder a la instancia de ACR. De forma predeterminada, incluye todos los nombres de dominio (internet y VPC) de la instancia de ACR especificada. Para indicar varios nombres de dominio, sepárelos con comas (,).

    Configuración para la extracción de imágenes entre cuentas

    Esta configuración aplica a la extracción de imágenes entre cuentas. Si no necesita esta función, deje los campos vacíos.

    assumeRoleARN

    No se requiere configuración para las extracciones dentro de la misma cuenta. Para las extracciones entre cuentas, consulte Pull images across accounts.

    expireDuration

    rrsaRoleARN

    rrsaOIDCProviderRoleARN

    Configuración del complemento

    Parámetro

    Descripción

    Enable RRSA

    Seleccione esta casilla para habilitar RRSA. No se requiere configuración para las extracciones dentro de la misma cuenta. Para las extracciones entre cuentas, consulte Pull images across accounts.

    watchNamespace

    Namespaces donde desea habilitar la extracción de imágenes sin credenciales. El valor predeterminado es default. Establezca el valor en all para habilitar esta función en todos los namespaces. Para especificar varios namespaces, sepárelos con comas (,). Se recomienda indicar únicamente los namespaces de su negocio y evitar el uso de all o de namespaces destinados a componentes del sistema del clúster, con el fin de prevenir interrupciones en la extracción de imágenes del sistema.

    serviceAccount

    Especifica el ServiceAccount al que se aplica el complemento sin credenciales administrado. El valor predeterminado es Default. El valor Default aplica el complemento al ServiceAccount predeterminado de los namespaces indicados. Si establece el valor en *, el complemento se aplica a todos los ServiceAccounts de dichos namespaces. Para especificar varios ServiceAccounts, sepárelos con una coma (,).

    expiringThreshold

    Umbral de caducidad de las credenciales en el complemento. El valor predeterminado es 15m.

    notifyEmail

    No requiere configuración.

Paso 2: Extraer una imagen

Después de instalar y configurar el complemento sin credenciales, especifique un ServiceAccount asociado al complemento cuando cree una carga de trabajo. Esto habilita la extracción de imágenes sin credenciales.

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 el complemento sin credenciales autoadministrado

Paso 1: Instalar el complemento

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Add-ons.

  3. En la página Add-ons, haga clic en la pestaña Security, busque la tarjeta aliyun-acr-credential-helper y luego haga clic en Install.

  4. En la página Parameters, seleccione un modo de permiso en la lista desplegable tokenMode y haga clic en OK. Después de instalar el complemento, debe configurarlo antes de poder extraer imágenes. Para obtener más información, consulte Step 2: Update the add-on configuration (add an ACR instance).

    tokenMode

    Descripción

    auto

    (Recomendado) El complemento detecta la fecha de creación del clúster y elige automáticamente un modo de permiso. Los clústeres creados antes del 3 de abril de 2023 usan el modo workerRole. Los clústeres creados el 3 de abril de 2023 o después usan el modo managedRole.

    Importante

    Las versiones de aliyun-acr-credential-helper publicadas el 3 de abril de 2023 o después incluyen un parámetro que le permite personalizar el rol de RAM del que depende el complemento. Para obtener más información, consulte [Product Change] Announcement on changing the permissions required by the aliyun-acr-credential-helper add-on.

    managedRole

    El complemento usa el rol AliyunCSManagedAcrRole autorizado en Prerequisites para obtener permisos.

    workerRole

    El complemento usa el rol de RAM de worker del clúster para obtener permisos. Debe otorgar permisos específicos a dicho rol de RAM de worker.

    Seleccionar workerRole como modo del complemento

    Si selecciona workerRole como modo de permiso del complemento, el rol de RAM de worker del clúster debe contar con los siguientes permisos. Para obtener información sobre cómo otorgar permisos, consulte Manage RAM role permissions.

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

    Seleccione este modo si necesita extraer imágenes entre cuentas asumiendo un rol.

Paso 2: Actualizar la configuración del complemento

Una vez instalado el complemento sin credenciales, debe configurar el ConfigMap acr-configuration para agregar una instancia de ACR antes de extraer imágenes. Puede hacerlo mediante la consola o kubectl.

Consola

  1. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Configurations > ConfigMaps.

  2. En la página ConfigMaps, seleccione kube-system en la lista desplegable Namespace. Luego, haga clic en el ConfigMap acr-configuration y modifique los ajustes tal como se describe en la siguiente tabla.

    Parámetro

    Descripción

    watch-namespace

    Namespaces donde desea habilitar la extracción de imágenes sin credenciales. El valor predeterminado es default. Establezca el valor en all para habilitar esta función en todos los namespaces. Para especificar varios namespaces, sepárelos con comas (,). Se recomienda indicar únicamente los namespaces de su negocio y evitar el uso de all o de namespaces destinados a componentes del sistema del clúster, con el fin de prevenir interrupciones en la extracción de imágenes del sistema.

    acr-api-version

    Mantenga el valor predeterminado.

    expiring-threshold

    Umbral de caducidad de las credenciales en el complemento. El valor predeterminado es 15m (15 minutos).

    acr-registry-info

    Arreglo con la información de las instancias de ACR en formato de cadena YAML multilínea. Cada instancia se configura con un conjunto de tres parámetros.

    • instanceId: ID de la instancia de ACR. Puede obtenerlo desde la consola de Container Registry.

      Importante

      Deje este campo vacío para las instancias de ACR Personal Edition. Este campo es obligatorio para las instancias de ACR Enterprise Edition.

    • regionId: ID de la región donde se despliega la instancia de ACR. Puede obtenerlo desde la consola de Container Registry.

      Importante

      Este parámetro es obligatorio para extraer imágenes entre regiones. Para ver un ejemplo de configuración, consulte la sección siguiente.

    • domains: Nombres de dominio que utiliza el complemento sin credenciales para acceder a la instancia de ACR. De forma predeterminada, incluye todos los nombres de dominio de la instancia de ACR especificada mediante instanceId. Para indicar varios nombres de dominio, sepárelos con comas (,).

    Ejemplo de configuración para extracciones entre regiones

    Cuando utilice varias instancias de ACR en distintas regiones, debe especificar el ID y la región de cada instancia.

    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 asociados al complemento sin credenciales. Para especificar varios ServiceAccounts, sepárelos con comas (,). Si establece el valor en default, el complemento se asocia al ServiceAccount predeterminado de cada namespace indicado. Si establece el valor en "*", el complemento se asocia a todos los ServiceAccounts de dichos namespaces.

kubectl

  1. Ejecute el siguiente comando para editar el ConfigMap acr-configuration. Consulte la siguiente tabla para conocer los detalles de configuración.

    kubectl edit cm acr-configuration -n kube-system

    Clave del parámetro

    Descripción

    Valor

    service-account

    ServiceAccounts a los que se dirige el complemento sin credenciales.

    El valor predeterminado es default.

    Nota

    Para especificar varios ServiceAccounts, sepárelos con comas (,). Si establece el valor en "*", se aplica a todos los ServiceAccounts de los namespaces indicados.

    acr-registry-info

    Arreglo con la información de las instancias de ACR en formato de cadena YAML multilínea. Cada instancia se configura con un conjunto de tres parámetros.

    Nota

    Parámetros de información de la instancia:

    • instanceId: ID de la instancia. Es obligatorio para las instancias de Enterprise Edition.

    • regionId: Opcional. Toma como valor predeterminado la región local.

    • domains: Opcional. Toma como valor predeterminado todos los nombres de dominio de la instancia correspondiente. Para especificar varios nombres de dominio, sepárelos con comas (,).

    Ejemplo de configuración para una instancia de ACR Enterprise Edition:

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

    watch-namespace

    Namespaces donde desea habilitar la extracción de imágenes sin credenciales.

    El valor predeterminado es default. Establezca el valor en all para habilitar esta función en todos los namespaces. Para especificar varios namespaces, sepárelos con comas (,).

    Nota

    Se recomienda indicar únicamente los namespaces de su negocio y evitar el uso de all o de namespaces destinados a componentes del sistema del clúster, con el fin de prevenir interrupciones en la extracción de imágenes del sistema.

    expiring-threshold

    Umbral de caducidad de las credenciales almacenadas en caché local.

    El valor predeterminado es 15m (15 minutos).

Paso 3: Extraer una imagen

Después de instalar y configurar el complemento sin credenciales, especifique un ServiceAccount asociado al complemento cuando cree una carga de trabajo. Esto habilita la extracción de imágenes sin credenciales.

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

Preguntas frecuentes

Habilitar el uso inmediato de ServiceAccounts

Importante

Esta función requiere aliyun-acr-credential-helper v23.02.06.1-74e2172-aliyun o una versión posterior.

Cuando está habilitada, el complemento sin credenciales usa un Webhook para supervisar los cambios de ServiceAccount en el clúster. Al crear un nuevo ServiceAccount, el complemento inyecta inmediatamente el Secret sin credenciales. Esto resulta útil en escenarios donde un ServiceAccount se emplea justo después de su creación, como cuando un Helm Chart crea simultáneamente un ServiceAccount y un Deployment. Esta función puede afectar el rendimiento del complemento, por lo que no se recomienda para uso general.

Complemento administrado

Para habilitar esta función, instale el complemento acr-credential-helper-webhook en su clúster:

  1. En la página Clústeres de ACK, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Add-ons.

  2. En la página Add-ons, haga clic en la pestaña Security, busque la tarjeta acr-credential-helper-webhook (managed) y luego haga clic en Install.

Complemento autoadministrado

Para habilitar esta función, agregue los siguientes campos al ConfigMap acr-configuration:

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

Parámetro

Descripción

enable

Especifica si se habilita la función de Webhook.

  • true: Habilita la función.

  • false: Deshabilita la función.

failure-policy

Política para manejar excepciones durante la creación de un ServiceAccount.

  • Ignore: Ignora la excepción y permite que el ServiceAccount se cree con normalidad. Es posible que no se adjunte el Secret de extracción de imágenes.

  • Fail: Detiene la creación del ServiceAccount en caso de excepción. No se recomienda, ya que puede provocar fallos en el despliegue.

Importante

Debido a una limitación del API Server del clúster, si timeout-seconds se establece en 15, failure-policy se establece en Fail y usted crea continuamente 10 ServiceAccounts por segundo, la creación de los ServiceAccounts fallará.

timeout-seconds

Tiempo de espera para una sola solicitud de creación de ServiceAccount. Si se supera este límite, el sistema responde según la configuración de failure-policy. El valor predeterminado es 10 segundos (s).

Solucionar errores al extraer imágenes

Una posible causa es que la configuración del complemento sin credenciales sea incorrecta. Por ejemplo:

  • La información de la instancia configurada en el complemento sin credenciales no coincide con la instancia de ACR.

  • La dirección de la imagen utilizada para la extracción no coincide con el nombre de dominio especificado en la información de la instancia del complemento.

Siga los pasos de este tema para solucionar el problema.

Si el complemento está bien configurado pero la extracción de la imagen sigue fallando, es probable que exista un conflicto entre el campo imagePullSecrets especificado manualmente en el YAML de la carga de trabajo y el complemento sin credenciales. Para resolverlo, elimine manualmente el campo imagePullSecrets y vuelva a crear el Pod.

¿Cómo uso imagePullSecrets?

Las instancias de ACR Personal Edition creadas a partir del 9 de septiembre de 2024 no admiten el complemento sin credenciales. Para estas instancias, se recomienda almacenar el nombre de usuario y la contraseña en un Secret y hacer referencia a él en el campo imagePullSecrets.

Importante
  • El complemento sin credenciales es incompatible con un campo imagePullSecrets especificado manualmente.

  • El Secret debe estar en el mismo namespace que la carga de trabajo.

Ejemplo de uso de imagePullSecrets

Ejecute el siguiente comando y reemplace los parámetros para crear un Secret con su nombre de usuario y contraseña.

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

Utilice el Secret en su carga de trabajo:

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.

Temas relacionados