从ACR免密拉取镜像

更新时间:2025-02-19 11:46:24

ACK的免密组件支持自动化完成拉取镜像时的认证流程,跳过配置imagePullSecrets的重复操作。您可通过本文了解免密组件安装、配置、使用的流程及注意事项。

工作原理

使用ACR作为镜像来源时,如果没有为实例配置公开匿名拉取,那么每次拉取镜像时,ACK集群都需要提供用户名与登录密码进行认证。常用的方法是将用户名与登录密码存储在Secrets中,但会存在以下问题:

  • Secret是采取了Base64编码的明文,有泄露的风险。

  • 需要为每个工作负载手动填入imagePullSecrets

  • Secret不支持跨命名空间使用。

免密组件的工作流程如下:

  1. 免密组件从ACR实例获取临时账号和临时密码。

  2. 免密组件将临时账号和临时密码保存到Secret中。

  3. 免密组件将Secret关联到组件配置中已指定的ServiceAccount。

  4. 使用这些ServiceAccount的工作负载默认会使用Secret中保存的临时账号和密码拉取镜像。

免密组件支持同时管理多个命名空间的ServiceAccount,并会按照配置定时更新临时账号和密码,以降低泄露风险,且无需您手动在工作负载中填入imagePullSecrets,免密组件不收取费用。

image
重要
  • 免密组件目前仅支持与ACR企业版及20240908日及更早创建的ACR个人版配合使用。

  • 20240909日及之后新建的ACR个人版不支持使用免密组件。使用新建的ACR个人版实例时,建议通过Secret保存用户名与登录密码的方式,在imagePullSecrets字段中使用。

免密组件对比

目前ACK提供了 aliyun-acr-credential-helper 组件,该组件有托管与自行运维两种形态,同时只能安装其中一种。两种版本的详细对比,请参见下表。

差异项

aliyun-acr-credential-helper(托管形态)

aliyun-acr-credential-helper(自行运维)

差异项

aliyun-acr-credential-helper(托管形态)

aliyun-acr-credential-helper(自行运维)

支持集群版本

  • 1.22及以上版本的ACK集群Pro

  • 1.22及以上版本的ACK Serverless集群

  • 1.22及以上版本的ACK Edge集群

  • 1.20.0及以上版本的ACK集群Pro

  • 1.20.0及以上版本的ACK专有集群

组件部署方式

部署在集群控制面

通过工作负载部署在集群中,默认在集群的kube-system命名空间下创建一个0.50.5GPod

查询组件日志

不支持

支持

跨账号拉取ACR镜像支持方式

仅支持RRSA

支持Worker Role、RRSA、AK/SK

支持ServiceAccount创建后即时使用(详细说明请参见使用免密组件拉取容器镜像

不支持

支持

控制台显示的卡片(您可通过控制台组件管理页面确认您已安装的组件形态)

image

image

前提条件

  • 集群版本受到免密组件的支持,请参见上方的表格。

  • 容器镜像服务ACR实例为企业版或202498日或更早创建的个人版。

  • 已为免密组件使用的RAM角色授权

使用托管形态

安装组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面,选择安全页签,找到aliyun-acr-credential-helper托管卡片,单击安装

  4. 安装组件 aliyun-acr-credential-helper页面,可以看到AcrInstanceInfo配置以及一些其他选项。AcrInstanceInfo对应的是组件关联的每个ACR实例相关的配置,而其他选项则是组件本身的配置,它们的说明如下。

    说明

    ACR实例相关配置及组件配置在安装完成后都支持修改。

    image

    关联ACR实例配置:

    AcrInstanceInfo

    说明

    AcrInstanceInfo

    说明

    InstanceId

    ACR实例ID,可通过容器镜像服务控制台获取。

    重要

    使用个人版ACR实例时请留空,使用企业版ACR实例时必填。

    regionId

    ACR实例所在地域的RegionId,可通过容器镜像服务控制台获取。

    重要

    跨地域拉取镜像时必填。

    domains

    免密插件访问ACR实例所使用的域名。默认为上方填入的ACR实例的所有域名(公网、VPC)。若要指定个别域名,多个以英文半角逗号(,)分隔。

    跨账号拉取镜像场景配置

    适用于跨账号拉取镜像的场景。如无需求,请留空。

    assumeRoleARN

    ACR实例所有者的RAM角色ARN。

    expireDuration

    跨账号拉取时临时凭证的有效时间。取值范围[3600, 43200],默认值3600,单位为秒。同时需要将B用户创建角色的最大会话时间调整为43200。

    rrsaRoleARN

    集群所有者的RAM角色ARN。

    rrsaOIDCProviderRoleARN

    集群的提供商ARN。

    组件配置:

    配置项

    说明

    配置项

    说明

    是否开启RRSA

    勾选后即可开启RRSA,适用于需要在ACR实例配置中完成跨账号拉取场景配置。

    watchNamespace

    期望能免密拉取镜像的命名空间,默认值default。当取值为all时,表示期望所有Namespace均能免密拉取。如需指定多个Namespace,请使用英文半角逗号(,)分隔。推荐配置业务Namespace,尽量避免配置all或者集群系统组件相关的Namespace,以免影响集群系统组件镜像的拉取。

    serviceAccount

    使免密组件托管版作用于指定的Service Account。默认值Default。取值为Default时,会作用于所有指定Namespace的默认Service Account。如果设置为(*), 表示支持指定命名空间下的所有ServiceAccount。如果需要配置多个,请使用以英文半角逗号(,)分隔。

    expiringThreshold

    组件内凭证过期阈值。默认值为15m。建议使用15min。即在凭证过期前15m组件自动更新凭证。

    notifyEmail

    无需配置。

变更组件配置

组件管理页面,单击aliyun-acr-credential-helper托管卡片上的配置,可变更组件配置。配置项的说明请参照上方的表格。

image

拉取镜像

安装并配置完成免密组件后,在创建工作负载时指定免密组件已关联的ServiceAccount,即可实现免密拉取镜像。

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 # 指定免密组件已经关联的ServiceAccount
      containers:
      - name: nginx
        image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # 指定ACR镜像地址
        ports:
        - containerPort: 80

更多操作

跨账号拉取镜像

免密组件托管版支持基于适用于服务账户的RAM角色(RAM Roles for Service Accounts,简称RRSA)跨账号拉取镜像。

重要
  • RRSA功能目前仅支持在1.22及以上版本的ACK集群基础版ACK集群ProACK Serverless集群Pro中拉取ACR企业版实例的镜像。

  • 当开启RRSA功能后,由组件生成的凭证将不支持个人版非公开镜像拉取,同时也不支持本文中提到的其他的鉴权方式。

  • 启用免密插件的RRSA功能首先需要在集群基本信息中启用RRSA,再进行免密插件RRSA的相关配置。若操作顺序颠倒,在配置完成后,则需要删除免密插件的Pod,RRSA功能才会生效。

  1. 启用集群的RRSA功能。具体操作,请参见启用RRSA功能

    集群中RRSA功能开启后,在基本信息页签的安全与审计区域,将鼠标悬浮至RRSA OIDC右侧已开启上面,即可查看提供商的URL链接和ARN信息。image

  2. 配置跨账号RAM用户的容器镜像服务资源访问权限。

    集群开启RRSA功能后,需要按照以下步骤进行配置。假设A用户为集群所有者,B用户为容器镜像服务实例所有者,现在需要授权A用户的集群具备访问B用户容器镜像服务资源的权限。

    1. 配置A用户的RAM角色

      A用户中创建一个角色,添加AliyunSTSAssumeRoleAccess权限策略,授予这个角色具有角色扮演的权限。按照如下修改其信任策略。

        • 将示例中的<oidc_issuer_url>替换为上一步获取的当前集群中OIDC提供商的URL。

        • 将示例中的<oidc_provider_arn>替换为上一步获取的当前集群OIDC提供商的ARN。

      {
        "Statement": [
          {
            "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>"
              ]
            }
          }
        ],
        "Version": "1"
      }
    2. 配置B用户的RAM角色

      B用户中创建一个拥有ACR相关权限的角色,单击RAM角色名称。选择信任策略,添加A用户角色ARN。对B用户的角色添加如下权限策略,授予这个角色获取实例信息及拉取镜像权限。

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

      RAM角色可以为其设置RAM角色最大会话时间,设置时间范围为3600秒到43200秒,而角色会话时间在下文的配置项中步骤7中的expireDuration也需要设置。推荐此处取值的设置和配置项的expireDuration的值一致。允许expireDuration小于等于角色最大会话时间。

  3. 登录容器服务管理控制台,在左侧导航栏单击集群列表

  4. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择集群信息

  5. 在左侧导航栏,选择运维管理 > 组件管理

  6. 组件管理页面,选择安全页签,找到aliyun-acr-credential-helper托管,单击卡片中的配置

  7. aliyun-acr-credential-helper参数配置对话框,单击右侧的添加,输入assumeRoleARN,expireDurationrrsaRoleARNrrsaOIDCProviderRoleARN。单击确定配置项.jpg

使用自行运维形态

安装组件

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 组件管理页面,单击安全页签,找到aliyun-acr-credential-helper,单击安装

  4. 参数配置页面,通过tokenMode选择组件权限模式,然后单击确定。组件安装完成后,在拉取镜像前,请参见使用免密组件拉取容器镜像完成组件配置。

    tokenMode

    说明

    tokenMode

    说明

    auto

    (推荐)组件会检测集群创建时间,并自动决定权限模式。集群在20230403日之前创建将使用workerRole模式,集群在20230403日及之后创建将使用managedRole模式。

    重要

    aliyun-acr-credential-helper20230403日后发布的版本中提供了配置项,支持自定义组件依赖的RAM角色。详细信息,请参见【产品变更】关于变更aliyun-acr-credential-helper组件依赖权限的公告

    managedRole

    组件将使用前提条件中授权的AliyunCSManagedAcrRole角色获取权限。

    workerRole

    组件将使用集群Worker RAM角色获取权限。需为Worker RAM角色授予特定权限,请参见使用免密组件拉取容器镜像

    重要

    如需通过角色扮演跨账号拉取镜像,请选择此模式。

变更组件配置

免密组件安装完成后,在拉取镜像时,需要通过控制台或kubectl对免密组件配置项acr-configuration进行配置。

控制台
kubectl
  1. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择配置管理 > 配置项

  2. 配置项页面顶部的命名空间下拉列表,选择kube-system,然后单击配置项acr-configuration,参考下列说明修改配置。

    组件配置

    说明

    watch-namespace

    期望能免密拉取镜像的Namespace。默认值为default。当取值为all时,表示期望所有Namespace均能免密拉取。配置多个Namespace时以英文半角逗号(,)分隔。推荐配置生效Namespace为您的业务Namespace,尽量避免配置all或者集群系统组件相关的Namespace,以免影响集群系统组件镜像的拉取。

    acr-api-version

    保持默认。

    expiring-threshold

    组件内凭证过期阈值。默认值为15m。建议使用15min。即在凭证过期前15m组件自动更新凭证。

    acr-registry-info

    容器镜像的实例信息数组,YAML多行字符串格式,每个实例以三元组方式配置。

    • instanceId:ACR实例ID,可通过容器镜像服务控制台获取。

      重要

      使用个人版ACR实例时请留空,使用企业版ACR实例时必填。

    • regionId:ACR实例所在地域的RegionId。可通过容器镜像服务控制台获取。

      重要

      跨地域拉取镜像时必填。

    • domains:免密插件访问ACR实例所使用的域名。默认填入instanceIdACR实例的所有域名。若要指定个别域名,多个以英文半角逗号(,)分隔。

    配置示例

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

    service-account

    免密组件关联的ServiceAccount,多个ServiceAccount以英文半角逗号(,)分隔。取值为default时,组件会关联每个watch-namespace中填入的指定Namespace的默认ServiceAccount。取值为“*”时,组件会关联指定Namespace的所有ServiceAccount。

12

  1. 执行以下命令,参考下列配置说明,编辑acr-configuration

    kubectl edit cm acr-configuration -n kube-system

    配置项键

    配置项键说明

    配置项值

    service-account

    使免密组件作用于指定的服务账号。

    默认为default

    说明

    如果要配置多个请以英文半角逗号(,)分隔。如果设置为“*”, 表示支持指定命名空间下的所有ServiceAccount。

    acr-registry-info

    容器镜像的实例信息数组,YAML多行字符串格式,每个实例以三元组方式配置。

    说明

    实例信息三元组:

    • instanceId:实例ID,企业版实例必须配置此项。

    • regionId:可选,默认为本地地域。

    • domains:可选,默认为相应实例的所有域名。若要指定个别域名,多个以英文半角逗号(,)分隔。

    企业版容器镜像实例,配置示例如下:

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

    watch-namespace

    期望能免密拉取镜像的Namespace。

    默认值为default。当取值为all时,表示期望所有Namespace均能免密拉取。如需配置多个Namespace时,以英文半角逗号(,)分隔。

    说明

    推荐配置生效Namespace为您的业务Namespace,尽量避免配置all或者集群系统组件相关Namespace,以免影响集群系统组件镜像的拉取。

    expiring-threshold

    本地缓存凭证过期阈值。

    默认值为15m

    说明

    建议使用15min。即在缓存过期15分钟前进行凭证更新。

拉取镜像

安装并配置完成免密组件后,在创建工作负载时指定免密组件已关联的ServiceAccount,即可实现免密拉取镜像。

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 # 指定免密组件已经关联的ServiceAccount
      containers:
      - name: nginx
        image: ******.cn-hangzhou.cr.aliyuncs.com/nginx/nginx:latest # 指定ACR镜像地址
        ports:
        - containerPort: 80

注意事项

使用ACR个人版

关联ACR个人版实例时,请将instanceId留空。

data:
    service-account: default
    watch-namespace: all
    expiring-threshold: 15m
    notify-email: c*@example.com 
    acr-registry-info: |
      - instanceId: ""  # ACR个人版ID留空
        regionId: cn-xxxx

组件模式选择workerRole

组件权限模式选择workerRole时,集群Worker RAM角色必须拥有以下权限:

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

更多操作

跨账号拉取镜像

免密组件非托管版支持使用以下三种方式进行跨账号拉取镜像,它们的实现原理不同,但目的都是使ACR:

  • 使用RRSA:使A用户集群中的特定ServiceAccount扮演B用户的角色,使用这些ServiceAccountPod可以拉取B用户的私有镜像。

  • 使用Worker RAM角色扮演:使A用户集群的Worker RAM角色扮演B用户拥有ACR相关权限的RAM角色,然后免密组件通过Worker RAM拉取B用户的私有镜像。需要使用此种方法时,免密组件需要使用workerRole模式。

  • 使用RAM用户的AKSK:A用户的免密组件保存B用户的RAM用户的AKSK,拉取B用户的私有镜像。这种方法配置较为简单,但是RAM用户的AKSK直接明文保存,有泄露的风险。

使用RRSA
使用Worker RAM角色扮演
使用RAM用户的AK及SK
重要
  • RRSA功能目前仅支持在1.22及以上版本的ACK集群基础版ACK集群ProACK Serverless集群Pro中拉取ACR企业版实例的镜像。

  • 开启RRSA功能需要将免密组件非托管版升级到v23.02.06.1-74e2172-aliyun或以上版本。

  • 启用免密插件的RRSA功能首先需要在集群基本信息中启用RRSA,再进行免密插件RRSA的相关配置。若操作顺序颠倒,在配置完成后,则需要删除免密插件的Pod,RRSA功能才会生效。

  1. 启用集群的RRSA功能。具体操作,请参见启用RRSA功能

    集群中RRSA功能开启后,在基本信息页签的安全与审计区域,将鼠标悬浮至RRSA OIDC右侧已开启上面,即可查看提供商的URL链接和ARN信息。image

  2. 配置跨账号RAM用户的容器镜像服务资源访问权限。

    集群开启RRSA功能后,需要按照以下步骤进行配置。假设A用户为集群所有者,B用户为容器镜像服务实例所有者,现在需要授权A用户的集群具备访问B用户容器镜像服务资源的权限。

    1. A用户中创建一个角色,添加AliyunSTSAssumeRoleAccess权限策略,授予这个角色具有角色扮演的权限。按照如下修改其信任策略。

      • 将示例中的<oidc_issuer_url>替换为上一步获取的当前集群中OIDC提供商的URL。

      • 将示例中的<oidc_provider_arn>替换为上一步获取的当前集群OIDC提供商的ARN。

      {
        "Statement": [
          {
            "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>"
              ]
            }
          }
        ],
        "Version": "1"
      }
    2. B用户中创建一个拥有ACR相关权限的角色,选择信任策略管理,添加A用户角色ARN。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "RAM": [
                <A用户创建角色的ARN>
              ]
            }
          }
        ],
        "Version": "1"
      }

      然后对B用户的角色添加如下权限策略,授予这个角色获取实例信息及拉取镜像权限。

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

      RAM角色可以设置角色最大会话时间,可设置时间范围为3600秒到43200秒,而角色会话时间在下文的配置项中的expireDuration也需要设置。推荐此处取值的设置和配置项的expireDuration的值一致。允许expireDuration小于等于角色最大会话时间。

  3. 设置acr-configuration配置项

    按照如下配置内容,修改acr-configuration配置项中ConfigMap的配置。

    data:
      service-account: "default"
      watch-namespace: "all"
      expiring-threshold: "15m"
      notify-email: "c*@example.com"
      acr-registry-info: |
        - instanceId: "cri-xxx"
          regionId: "cn-hangzhou"
          domains: "instance.default.domain.com,instance.custom.domain.com"
          rrsaRoleARN: aUserRoleARN
          rrsaOIDCProviderRoleARN: aUserClusterOIDCProviderRoleARN
          assumeRoleARN: bUserRoleARN
          expireDuration: 3600
      rrsa:
        enable: true

    配置项键

    配置项说明

    取值示例

    rrsaRoleARN

    上文中A用户创建的角色的ARN。

    acs:ram::aaa

    rrsaOIDCProviderRoleARN

    上文中A用户ACK控制台集群基本信息中的提供商ARN。

    acs:ram::bbb

    assumeRoleARN

    上文中B用户创建的角色的ARN。

    acs:ram::ccc

    expireDuration

    上文中B用户创建的角色的会话时间,等同于免密组件生成的临时凭证的有效期。

    重要

    expireDuration的值不应大于B用户RAM角色的最大会话时间。

    默认为3600。取值范围为[3600, 43200],单位为秒(s)。

重要
  • 免密组件非托管版需要使用workerRole模式。

  • B用户(RAM角色)需要拥有拉取指定私有仓库下的私有镜像的权限(B用户RAM角色有cr.*相关的权限)。

  • B用户(RAM角色)允许A用户的ACK Worker RAM角色扮演(信任策略)。

  • A用户下的ACK集群的Worker RAM角色拥有扮演B用户(RAM角色)的权限(AliyunAssumeRoleAccess)。

  1. 创建B用户的受信实体为阿里云账号类型的RAM角色,并确保该RAM角色拥有拉取B用户私有镜像的权限。具体操作请参见创建可信实体为阿里云账号的RAM角色

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  2. 在创建的B用户的RAM角色上配置信任策略,允许A用户(需要拉取B用户下的私有镜像)的ACK集群的Worker RAM角色来扮演B用户。

    查看A用户的ACK集群的Worker RAM角色的ARN信息。

    1. 查看ARN信息具体步骤,请参见如何查看RAM角色的ARN?

    2. 配置信任策略。

      1. RAM控制台左侧导航栏,单击角色,找到目标RAM角色并单击RAM角色名称。

      2. RAM角色基本信息页,单击信任策略管理页签,然后使用A用户的Worker RAM角色的ARN修改信任策略。RamRoleARN

  3. 确认A用户的Worker RAM角色拥有AssumeRole权限。具体操作,请参见查看权限策略基本信息AssumeRule权限

  4. 调整组件配置,新增assumeRoleARN配置。

    配置内容为您在B用户下新建RAM角色的ARN。关于查看ARN信息的具体步骤,请参见如何查看RAM角色的ARN?。acr-configuration配置示例如下。

    data:
        service-account: "default"
        watch-namespace: "all"
        expiring-threshold: "15m"
        notify-email:"c*@example.com"
        acr-registry-info: |
          - instanceId: ""
            regionId: "cn-beijing"
            domains: "registry.cn-beijing.aliyuncs.com"
            assumeRoleARN: "acs:ram::.*:role/kubernetesworkerrole-test"
            expireDuration: 3600

展开查看操作步骤

  1. B用户的下创建一个RAM用户并确保该RAM用户拥有cr.*的相关权限。

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  2. 配置kube-system命名空间中的配置项acr-configuration,并填入创建的RAM用户的访问密钥AccessKey IDAccessKey Secret。

    此方式可以使免密组件直接使用创建的RAM用户拉取私有镜像。查看访问密钥的具体步骤,请参见查看RAM用户的AccessKey信息

    acr-configuration配置示例如下。

    data:
        service-account: "default"
        watch-namespace: "all"
        expiring-threshold: "15m"
        notify-email:"c*@example.com"
        acr-registry-info: |
          - instanceId: ""
            customAccessKey: "xxxxx" // 此处填写已创建的RAM用户的AccessKey ID。
            customAccessKeySecret: "xxxxxx" // 此处填写已创建的RAM用户的AccessKey Secret。

如何开启ServiceAccount创建即时使用功能

重要

开启ServiceAccount创建即时使用功能需要将免密组件升级到v23.02.06.1-74e2172-aliyun或以上版本。

启用Webhook功能后,免密组件会通过Webhook监测集群内ServiceAccount变化。当新的ServiceAccount被创建后,组件会立即为其注入免密Secret。这个功能适用于ServiceAccount创建后需要立即使用的场景,例如,通过Helm Chart同时创建ServiceAccountDeployment的场景。因对组件性能有一定影响,其他场景中不推荐开启该功能。

需要开始此功能,请在acr-configuration中添加下列字段:

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

配置项

说明

配置项

说明

enable

是否开启Webhook功能。

  • true:开启。

  • false:不开启。

failure-policy

当本功能出现异常时,对ServiceAccount的处理策略。

  • Ignore:忽略异常,ServiceAccount正常创建完成(但可能不会附上可拉取镜像的Secret)。

  • Fail:异常时中断ServiceAccount的创建(不推荐,可能导致业务部署失败)。

重要

受集群API Server的限制,当timeout-seconds设置为15failure-policy设置为Fail,持续每秒创建10ServiceAccount时,会出现创建ServiceAccount失败的情况。

timeout-seconds

本功能的单个ServiceAccount创建请求处理超时时长,超出该时长则按照failure-policy配置进行反馈。默认值为10,单位秒(s)。

相关文档

组件变更记录,请参见aliyun-acr-credential-helper

  • 本页导读 (1)
  • 工作原理
  • 免密组件对比
  • 前提条件
  • 使用托管形态
  • 安装组件
  • 变更组件配置
  • 拉取镜像
  • 更多操作
  • 使用自行运维形态
  • 安装组件
  • 变更组件配置
  • 拉取镜像
  • 注意事项
  • 更多操作
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等