日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用免密組件拉取容器鏡像

使用aliyun-acr-credential-helper組件,您可以配置ACK集群,以便在拉取企業(yè)版私有鏡像時自動獲取訪問憑據(jù),無需手動提供用戶名和密碼,從而實現(xiàn)在阿里云容器服務(wù)ACK集群中免密拉取容器鏡像服務(wù)ACR私有鏡像。

前提條件

使用說明

免密組件通過讀取ACK集群內(nèi)kube-system命名空間中acr-configuration的配置,進行私有鏡像拉取。免密組件配置完成后將會在集群中自動創(chuàng)建Secret,并關(guān)聯(lián)到配置中已指定的ServiceAccount。任何使用此ServiceAccount的Pod都會默認(rèn)使用免密組件生成的Secret進行鏡像拉取,從而實現(xiàn)免密拉取鏡像的效果。

重要

針對新創(chuàng)建ServiceAccount部署應(yīng)用的場景(例如部署Helm Chart),免密組件ServiceAccount關(guān)聯(lián)Secret可能存在延遲,建議使用Webhook功能。更多信息,請參見常見問題

免密組件拉取私有鏡像的使用條件如下。

類別

說明

鏡像

  • 支持拉取集群當(dāng)前RAM用戶容器鏡像服務(wù)中的私有鏡像。

  • 支持通過跨賬號授權(quán)或AccessKey ID和AccessKey Secret配置的方式,拉取其他RAM用戶的私有鏡像。

  • 支持拉取容器鏡像服務(wù)企業(yè)版實例中的私有鏡像。

集群及版本

  • 支持的集群類型:

    • 專有版Kubernetes集群:大于或等于1.11.2的版本默認(rèn)支持免密拉取鏡像。低于1.11.2版本請您手動升級,請參見手動升級集群

    • 托管版Kubernetes集群:所有版本。

  • 支持集群多命名空間免密拉取。

注意事項

類別

注意事項

拉取憑證imagePullSecrets

  • 在Kubernetes資源(例如無狀態(tài)應(yīng)用Deployment)模板中配置拉取憑證(imagePullSecret)會導(dǎo)致免密組件失效。如需使用免密組件,請勿手動配置拉取憑證(imagePullSecret)。

  • 免密組件默認(rèn)覆蓋ACK中所有命名空間中默認(rèn)的ServiceAccount的imagePullSecrets字段。被覆蓋的ServiceAccount會隨著對應(yīng)kube-system命名空間中acr-configuration配置項的service-account字段變動而變動。

ServiceAccount

  • 如果部署的Kubernetes資源(例如無狀態(tài)應(yīng)用Deployment)使用了自定義的ServiceAccount,需先調(diào)整免密組件配置文件中Service-Account字段,使其作用于自定義的ServiceAccount,再進行部署資源操作。

  • 在集群中創(chuàng)建新的ServiceAccount一段時間后,當(dāng)獲取imagepullsecrets字段的返回值包含以acr-credential開頭的Secret時,免密組件生成的憑證才會更新到應(yīng)用使用的ServiceAccount中,使用ServiceAccount的應(yīng)用才能使用憑證拉取鏡像。如果ServiceAccount創(chuàng)建完成后立即創(chuàng)建應(yīng)用,可能導(dǎo)致因鑒權(quán)失敗無法拉取。

地域

確認(rèn)Kubernetes集群所屬地域與要拉取的鏡像所在地域是否一致。

默認(rèn)配置僅可以拉取本地域的鏡像。如需跨地域拉取鏡像,請參見下文場景二:配置跨地域拉取鏡像

YAML格式

修改kube-system命名空間中的acr-configuration配置項時,請確認(rèn)縮進與給出的場景示例是否相同。建議直接復(fù)制對應(yīng)場景的YAML內(nèi)容到編輯器,修改對應(yīng)的值,然后直接應(yīng)用到集群,以保證YAML格式的正確性。

步驟一:安裝免密組件

如果您已安裝免密組件,請確保該組件為最新版本。否則,請升級該組件。此組件升級不會對業(yè)務(wù)造成影響。具體操作,請參見管理組件。關(guān)于aliyun-acr-credential-helper組件更多信息,請參見aliyun-acr-credential-helper

重要

免密組件aliyun-acr-credential-helper升級至最新版本后,會切換該組件所依賴的RAM角色。為兼容新老用戶的使用習(xí)慣,該組件提供了配置項,您可以自定義依賴于哪個RAM角色。關(guān)于切換RAM角色對使用方式的影響,請參見【產(chǎn)品變更】關(guān)于變更aliyun-acr-credential-helper組件依賴權(quán)限的公告

  1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

  2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇運維管理 > 組件管理

  3. 組件管理頁面,單擊安全頁簽,找到aliyun-acr-credential-helper,單擊安裝

  4. 參數(shù)配置頁面,組件使用的權(quán)限模式保持默認(rèn)值auto,然后單擊確定

    當(dāng)ACK托管版集群升級到最新版本,aliyun-acr-credential-helper組件提供了tokenMode配置項,組件安裝后也可以進行修改。組件修改后,Pod將會重建。2023年04月03日之前創(chuàng)建的集群為老集群,2023年04月03日及之后創(chuàng)建的集群為新集群。具體配置項內(nèi)容如下。

    tokenMode

    說明

    auto

    默認(rèn)值,表示自動確定是否使用managedRole。新集群使用managedRole模式,老集群使用workerRole模式。

    managedRole

    使用managedRole模式。

    workerRole

    使用workerRole模式。

步驟二:修改配置項

企業(yè)版的容器鏡像服務(wù)參考如下配置,個人版請參見如何拉取個人版實例中的私有鏡像

  1. 免密組件安裝完成后,在拉取鏡像時,需要對免密組件配置項acr-configuration進行配置。

    通過控制臺配置

    1. 登錄容器服務(wù)管理控制臺,在左側(cè)導(dǎo)航欄選擇集群

    2. 集群列表頁面,單擊目標(biāo)集群名稱,然后在左側(cè)導(dǎo)航欄,選擇配置管理 > 配置項

    3. 配置項頁面頂部的命名空間下拉列表,選擇kube-system,然后找到配置項acr-configuration,設(shè)置配置項的值。

      如果您沒有acr-configuration配置項,請參見創(chuàng)建配置項。關(guān)于如何更新配置項,請參見修改配置項

      • 單擊其右側(cè)的編輯,設(shè)置配置項鍵和值。

      • 單擊其右側(cè)的YAML編輯,設(shè)置配置項鍵和值。

    12

    通過kubectl命令行配置

    1. 執(zhí)行以下命令,打開acr-configuration配置項的編輯頁。

      kubectl edit cm acr-configuration -n kube-system
    2. 根據(jù)實際情況設(shè)置acr-configuration配置項的值。

    acr-configuration配置項的鍵和值說明如下。

    配置項鍵

    配置項鍵說明

    配置項值

    service-account

    使免密組件作用于指定的服務(wù)賬號。

    默認(rèn)為default

    說明

    如果要配置多個請以英文半角逗號(,)分隔。如果設(shè)置為“*”, 表示支持指定命名空間下的所有ServiceAccount。

    acr-registry-info

    容器鏡像的實例信息數(shù)組,YAML多行字符串格式,每個實例以三元組方式配置。

    說明

    實例信息三元組:

    • instanceId:實例ID,企業(yè)版實例必須配置此項。

    • regionId:可選,默認(rèn)為本地地域。

    • domains:可選,默認(rèn)為相應(yīng)實例的所有域名。若要指定個別域名,多個以英文半角逗號(,)分隔。

    企業(yè)版容器鏡像實例,配置示例如下:

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

    watch-namespace

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

    默認(rèn)值為default。當(dāng)取值為all時,表示期望所有Namespace均能免密拉取。如需配置多個Namespace時,以英文半角逗號(,)分隔。

    說明

    推薦配置生效Namespace為您的業(yè)務(wù)Namespace,盡量避免配置all或者集群系統(tǒng)組件相關(guān)Namespace,以免影響集群系統(tǒng)組件鏡像的拉取。

    expiring-threshold

    本地緩存憑證過期閾值。

    默認(rèn)值為15m

    說明

    建議使用15min。即在緩存過期15分鐘前進行憑證更新。

步驟三:根據(jù)實際場景配置拉取鏡像

不同場景下,私有鏡像拉取權(quán)限的配置方式不同。

配置策略

適用場景

場景一:配置同賬號拉取鏡像

默認(rèn)拉取策略,適用于同賬號場景。

場景二:配置跨地域拉取鏡像

跨地域場景。

場景三:配置跨賬號拉取鏡像

使用RRSA進行跨賬號拉取鏡像

跨賬號場景。

使用角色扮演進行跨賬號拉取鏡像

  • 依賴Worker Role的集群,tokenMode則使用workerRole模式。

  • 跨賬號場景。

使用RAM用戶(子賬號)的AccessKey ID和AccessKey Secret進行跨賬號拉取鏡像

跨賬號場景。

使用RAM用戶的AK(AccessKey ID)和SK(AccessKey Secret)進行鏡像拉取時,需要將訪問密鑰寫入ConfigMap,此方式存在一定的密鑰泄露風(fēng)險。請確保AccessKey ID和AccessKey Secret所屬的RAM角色僅擁有拉取容器鏡像的相關(guān)權(quán)限。推薦使用其他兩種跨賬號拉取方式。

您可以根據(jù)實際場景需要,選擇以下三種場景中對應(yīng)的場景進行配置。

場景一:配置同賬號拉取鏡像

  1. 創(chuàng)建自定義權(quán)限策略,策略內(nèi)容如下。具體操作,請參見步驟一:創(chuàng)建自定義權(quán)限策略

    {
        "Version": "1",
        "Statement": [
            {
                "Action": [
                    "cr:GetAuthorizationToken",
                    "cr:ListInstanceEndpoint",
                    "cr:PullRepository"
                ],
                "Resource": "*",
                "Effect": "Allow"
            }
        ]
    }
  2. 為集群的Worker RAM角色授權(quán)。具體操作,請參見步驟二:為集群的Worker RAM角色授權(quán)

  3. 設(shè)置acr-configuration配置項,即修改acr-configuration配置項中ConfigMap的配置,用于拉取企業(yè)版的私有鏡像。

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

場景二:配置跨地域拉取鏡像

如需拉取的鏡像與當(dāng)前ACK集群不屬于同一地域時,您需要修改配置項acr-configuration中的ConfigMap

重要

開啟跨地域拉取鏡像后,免密組件將通過公網(wǎng)調(diào)用目標(biāo)地域的OpenAPI,集群必須具有出公網(wǎng)能力。

例如,默認(rèn)倉庫同時拉取北京地域與杭州地域的鏡像時,需要按照以下內(nèi)容,修改acr-configuration配置項中ConfigMap的配置。

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"            

場景三:配置跨賬號拉取鏡像

您可以通過以下三種方式進行跨賬號拉取鏡像。

  • 使用RRSA進行跨賬號拉取:A用戶扮演B用戶的角色拉取B用戶的私有鏡像。

  • 使用角色扮演進行跨賬號拉取:A用戶扮演B用戶的角色拉取B用戶的私有鏡像。

  • 使用RAM用戶(子賬號)的AK及SK進行跨賬號拉取:A用戶使用B用戶的子賬號拉取B用戶的私有鏡像。

使用RRSA進行跨賬號拉取

基于適用于服務(wù)賬戶的RAM角色(RAM Roles for Service Accounts,簡稱RRSA)功能,可以在集群內(nèi)為組件實現(xiàn)Pod維度的權(quán)限隔離。

RRSA功能目前僅支持在1.22及以上版本的集群(即ACK標(biāo)準(zhǔn)版、ACK Pro版、ACK Serverless集群基礎(chǔ)版ACK Serverless集群Pro版)中拉取ACR企業(yè)版實例(基礎(chǔ)版,標(biāo)準(zhǔn)版,高級版)的鏡像。

重要
  • 開啟RRSA功能需要將組件升級到v23.02.06.1-74e2172-aliyun或以上版本。

  • 啟用免密插件的RRSA功能首先需要在集群基本信息中啟用RRSA,再進行免密插件RRSA的相關(guān)配置。若操作順序顛倒,在配置完成后,則需要刪除免密插件的Pod,RRSA功能才會生效。

  1. 啟用集群的RRSA功能。具體操作,請參見啟用RRSA功能

  2. 配置跨賬號RAM用戶的容器鏡像服務(wù)資源訪問權(quán)限。

    集群開啟RRSA功能后,需要按照以下步驟進行配置。假設(shè)A用戶為集群所有者,B用戶為容器鏡像服務(wù)實例所有者,現(xiàn)在需要授權(quán)A用戶的集群具備訪問B用戶容器鏡像服務(wù)資源的權(quán)限。

    1. 配置A用戶的RAM角色

      在A用戶中創(chuàng)建一個角色,添加AliyunSTSAssumeRoleAccess權(quán)限策略,授予這個角色具有角色扮演的權(quán)限。按照如下修改其信任策略。

      • 將示例中的<oidc_issuer_url>替換為當(dāng)前集群中OIDC提供商的URL。該URL可在容器服務(wù)管理控制臺集群信息頁面的基本信息頁簽獲取。

      • 將示例中的<oidc_provider_arn>替換為當(dāng)前集群OIDC提供商的ARN。該ARN可在容器服務(wù)管理控制臺集群信息頁面的基本信息頁簽獲取。

      {
        "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用戶中創(chuàng)建一個擁有ACR相關(guān)權(quán)限的角色,選擇信任策略管理,添加A用戶角色ARN。

      {
        "Statement": [
          {
            "Action": "sts:AssumeRole",
            "Effect": "Allow",
            "Principal": {
              "RAM": [
                <A用戶創(chuàng)建角色的ARN>
              ]
            }
          }
        ],
        "Version": "1"
      }

      然后對B用戶的角色添加如下權(quán)限策略,授予這個角色獲取實例信息及拉取鏡像權(quán)限。

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

      該RAM角色可以設(shè)置角色最大會話時間,可設(shè)置時間范圍為3600秒到43200秒,而角色會話時間在下文的配置項中的expireDuration也需要設(shè)置。推薦此處取值的設(shè)置和配置項的expireDuration的值一致。允許expireDuration小于等于角色最大會話時間。

  3. 設(shè)置acr-configuration配置項

    按照如下配置內(nèi)容,修改acr-configuration配置項中ConfigMap的配置。

    data:
      service-account: "default"
      watch-namespace: "all"
      expiring-threshold: "15m"
      notify-email: "c*@aliyuncs.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用戶創(chuàng)建的角色的ARN。

    acs:ram::aaa

    rrsaOIDCProviderRoleARN

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

    acs:ram::bbb

    assumeRoleARN

    上文中B用戶創(chuàng)建的角色的ARN。

    acs:ram::ccc

    expireDuration

    上文中B用戶創(chuàng)建的角色的會話時間,等同于免密組件生成的臨時憑證的有效期。

    重要

    expireDuration的值不應(yīng)大于B用戶創(chuàng)建角色的最大會話時間。

    默認(rèn)為3600。取值范圍為[3600, 43200],單位為秒。

    同時需要將B用戶創(chuàng)建角色的最大會話時間調(diào)整為43200。

使用角色扮演進行跨賬號拉取

展開查看如何使用角色扮演進行跨賬號拉取

說明

配置原則如下:

  1. B用戶(RAM角色)可以拉取指定私有倉庫下的私有鏡像(B用戶RAM角色有cr.*相關(guān)的權(quán)限)。

  2. B用戶(RAM角色)允許讓A用戶下的ACK Worker RAM角色扮演(信任策略)。

  3. A用戶下的ACK集群的Worker RAM角色扮演B用戶(RAM角色)的權(quán)限(AliyunAssumeRoleAccess)。

  4. 設(shè)置A用戶下的Worker RAM角色扮演B用戶(ConfigMap中的assumeRoleARN)。

  1. 創(chuàng)建B用戶的受信實體為阿里云賬號類型的RAM角色,并確保該RAM角色擁有拉取B用戶私有鏡像的權(quán)限。

    1. 創(chuàng)建RAM角色。具體操作請參見創(chuàng)建可信實體為阿里云賬號的RAM角色

    2. 通過腳本編輯模式創(chuàng)建如下自定義RAM角色權(quán)限策略。具體操作,請參見創(chuàng)建自定義權(quán)限策略

      重要

      請確保該RAM角色有cr.*的相關(guān)權(quán)限。

      ```
      {
      "Action": [
      "cr:GetAuthorizationToken",
      "cr:ListInstanceEndpoint",
      "cr:PullRepository"
      ],
      "Resource": [
      "*"
      ],
      "Effect": "Allow"
      }
      
      ```
    3. 為新創(chuàng)建的RAM角色授予新創(chuàng)建的自定義RAM角色權(quán)限策略。具體操作,請參見為RAM角色授權(quán)

  2. 在創(chuàng)建的B用戶的RAM角色上配置信任策略,允許A用戶(需要拉取B用戶下的私有鏡像)的ACK集群的Worker RAM角色來扮演B用戶。

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

    1. 查看ARN信息具體步驟,請參見如何查看RAM角色的ARN?

    2. 配置信任策略。

      1. RAM控制臺左側(cè)導(dǎo)航欄,單擊RAM角色管理,找到目標(biāo)RAM角色并單擊RAM角色名稱。

      2. 在RAM角色基本信息頁,單擊信任策略管理頁簽,然后使用A用戶的Worker RAM角色的ARN修改信任策略。RamRoleARN

  3. 確認(rèn)A用戶的Worker RAM角色擁有AssumeRole權(quán)限。具體操作,請參見查看權(quán)限策略基本信息AssumeRule權(quán)限

  4. 調(diào)整組件配置,新增assumeRoleARN配置。

    配置內(nèi)容為您在B用戶下新建RAM角色的ARN。關(guān)于查看ARN信息的具體步驟,請參見如何查看RAM角色的ARN?。acr-configuration配置示例如下。

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

使用RAM用戶(子賬號)的AK及SK進行跨賬號拉取

展開查看如何使用RAM用戶(子賬號)的AK及SK進行跨賬號拉取

  1. 創(chuàng)建一個RAM用戶并為該用戶添加cr鏡像拉取權(quán)限。關(guān)于配置cr鏡像拉取權(quán)限的具體操作,請參見場景三:配置跨賬號拉取鏡像

  2. 配置kube-system命名空間中的配置項acr-configuration,并填入創(chuàng)建的RAM用戶的訪問密鑰AccessKey ID和AccessKey Secret。

    此方式可以使免密組件直接使用創(chuàng)建的RAM用戶拉取私有鏡像。查看訪問密鑰的具體步驟,請參見查看RAM用戶的AccessKey信息

    acr-configuration配置示例如下。

    data:
        service-account: "default"
        watch-namespace: "all"
        expiring-threshold: "15m"
        notify-email:"c*@aliyuncs.com"
        acr-registry-info: |
          - instanceId: ""
            customAccessKey: "xxxxx" // 此處填寫已創(chuàng)建的RAM用戶的AccessKey ID。
            customAccessKeySecret: "xxxxxx" // 此處填寫已創(chuàng)建的RAM用戶的AccessKey Secret。

常見問題

如何拉取個人版實例中的私有鏡像

針對個人版遷移到企業(yè)版過程中需要在過渡階段同時拉取企業(yè)版實例及個人版實例私有鏡像的場景,您需要按照如下配置示例修改acr-configuration配置項。若您想使用個人版實例推送拉取鏡像,請參見使用個人版實例推送拉取鏡像

重要

修改acr-configuration配置項前,請刪除#-instanceId值中的#

data:
    service-account: "default"
    watch-namespace: "all"
    expiring-threshold: "15m"
    notify-email:"cs@aliyuncs.com" 
    acr-registry-info: |
      - instanceId: ""  
        regionId: cn-xxxx

如何開啟ServiceAccount創(chuàng)建即時使用功能

啟用Webhook功能后,ServiceAccount在創(chuàng)建時會即時注入Secret,滿足特定場景下ServiceAccount無延遲注入Secret的需求。例如,通過Helm Chart同時創(chuàng)建ServiceAccount和Deployment的場景,其他場景不推薦開啟該功能。

重要

開啟ServiceAccount創(chuàng)建即時使用功能需要將免密組件升級到v23.02.06.1-74e2172-aliyun或以上版本。

免密組件升級為最新版本后,您需要按照如下配置示例修改acr-configuration配置項。

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

表 1. 配置項說明

配置項鍵

配置項鍵說明

配置項值

enable

是否開啟本功能。

可選true或false。默認(rèn)為false,即不開啟。

failure-policy

當(dāng)本功能出現(xiàn)異常時的失敗處理策略。

可選Ignore或Fail。

  • Ignore即忽略異常,使ServiceAccount正常創(chuàng)建完成(但可能不會附上可拉取鏡像的Secret)。

  • Fail即異常時中斷創(chuàng)建ServiceAccount(不推薦,可能導(dǎo)致業(yè)務(wù)部署失敗)。

受集群APIServer的限制,當(dāng)timeout-seconds設(shè)置為15,failure-policy設(shè)置為Fail,持續(xù)每秒創(chuàng)建10個ServiceAccount時,會出現(xiàn)超時創(chuàng)建ServiceAccount失敗的情況。

timeout-seconds

本功能的單個ServiceAccount創(chuàng)建請求處理超時時長,超出該時長則按照failure-policy配置進行反饋。

默認(rèn)為 10,單位為秒(配置項值無需填寫單位)。

相關(guān)文檔