managed-aliyun-acr-credential-helper組件支援在ACK叢集Pro版、ACK Serverless叢集Pro版和ACK Edge叢集中免密拉取Container RegistryACR企業版和個人版的鏡像,本文通過常用情境介紹如何使用免密組件託管版拉取私人鏡像。
前提條件
已建立ACK Pro、ACK Serverless叢集Pro版、ACK Edge和ACS叢集且叢集版本為1.22及以上。
叢集中不存在免密外掛程式使用者側版本。
跨帳號情境僅支援1.22以上版本ACK Serverless叢集Pro版、ACK叢集Pro版和ACS叢集以及企業版的Container Registry執行個體。
使用說明
免密組件託管版通過讀取使用者控制台的配置,進行私人鏡像拉取。免密組件託管版配置完成後將會在叢集中自動建立Secret,並關聯到配置中已指定的ServiceAccount。任何使用此ServiceAccount的Pod都會預設使用免密組件託管版產生的Secret進行鏡像拉取,從而達到免密拉取鏡像的效果。
安裝免密組件託管版
若您已安裝免密組件託管版,請確保該組件為最新版本。若不是最新版本,請升級該組件至最新版本,升級組件不會對業務造成任何影響。具體操作,請參見管理組件。
關於aliyun-acr-credential-helper組件的更多資訊,請參見aliyun-acr-credential-helper。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在組件管理頁面,選擇安全頁簽,找到aliyun-acr-credential-helper託管,單擊安裝。
在aliyun-acr-credential-helper託管參數配置頁面,單擊AcrInstanceInfo右側添加,即可添加多個ACR執行個體。當您使用個人版執行個體時,同樣也需要單擊AcrInstanceInfo右側添加,但不需要填寫InstanceId。
以下是ACR執行個體的配置項參數的說明。
配置項鍵
配置項鍵說明
配置項值
InstanceId
ACR執行個體ID,可在ACR控制台擷取。
ACR企業版的InstanceId值為
cri-
開頭的字串。ACR個人版的InstanceId值為空白,不需要填寫。
regionId
ACR所在地區的RegionId,可在ACR控制台擷取。當叢集與ACR執行個體不在同一地區時,必填。當在同一地區時可不填。
例如杭州地區的RegionId為:
cn-hangzhou
。domains
預設為相應執行個體的所有網域名稱。若要指定個別網域名稱,多個以英文半形逗號(,)分隔。
example1.com,example2.com
assumeRoleARN
跨帳號情境下ACR執行個體所有者的RAM角色ARN。
acs:ram::aaa
expireDuration
跨帳號情境下臨時憑證的有效時間。
預設為3600。取值範圍為[3600, 43200],單位為秒。同時需要將B使用者建立角色的最大會話時間調整為43200。
rrsaRoleARN
跨帳號情境下叢集所有者的RAM角色ARN。
acs:ram::bbb
rrsaOIDCProviderRoleARN
跨帳號情境下叢集的供應商ARN。
acs:ram::ccc
配置好執行個體資訊後,還需要配置其他叢集相關配置項,以下是免密組件託管版叢集配置項的說明。
配置項
配置項鍵說明
配置項值
watchNamespace
期望能免密拉取鏡像的Namespace。
預設值為
default
。當取值為all
時,表示期望所有Namespace均能免密拉取。如需配置多個Namespace時,請使用英文半形逗號(,)分隔。推薦配置生效Namespace為您的業務Namespace,盡量避免配置all
或者叢集系統組件相關的Namespace,以免影響叢集系統組件鏡像的拉取。serviceAccount
使免密組件託管版作用於指定的服務帳號。
預設為
default
。說明如果需要配置多個,請使用以英文半形逗號(,)分隔。如果設定為(*), 表示支援指定命名空間下的所有ServiceAccount。
expiringThreshold
組件內憑證到期閾值。
預設值為
15m
。建議使用15min。即在憑證到期前15m組件自動更新憑證。是否開啟RRSA勾選項
勾選後即可開啟RRSA(需完成RRSA相關配置)。
預設不勾選。配置RRSA相關配置項並勾選後,可以拉取跨帳號的ACR鏡像。
根據不同情境,私人鏡像拉取許可權的配置方式如下。
配置策略 | 使用情境 |
預設拉取策略,適用於同帳號情境。 | |
跨地區情境。 | |
使用RRSA進行跨帳號拉取鏡像。 |
情境一:配置同帳號拉取鏡像
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在左側導覽列,選擇
。在組件管理頁面,選擇安全頁簽,找到aliyun-acr-credential-helper託管,單擊卡片中的配置。
在aliyun-acr-credential-helper託管參數配置對話方塊,單擊右側的添加,在instanceId中輸入ACR企業版執行個體ID。單擊確定。
情境二:配置跨地區拉取鏡像
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在左側導覽列,選擇
。在組件管理頁面,選擇安全頁簽,找到aliyun-acr-credential-helper託管,單擊卡片中的配置。
在aliyun-acr-credential-helper 參數配置對話方塊,單擊右側的添加,在instanceId中輸入ACR企業版執行個體ID,regionId中輸入ACR企業版執行個體的RegionID。單擊確定。
情境三:配置跨帳號拉取鏡像
使用RRSA進行跨帳號拉取
基於適用於服務賬戶的RAM角色(RAM Roles for Service Accounts,簡稱RRSA)功能,可以在叢集內為組件實現Pod維度許可權隔離。
RRSA功能目前僅支援在1.22及以上版本的叢集(即ACK託管叢集基礎版、ACK託管叢集Pro版和ACK Serverless叢集Pro版)中拉取ACR企業版執行個體(基礎版、標準版、進階版)的鏡像。
當開啟RRSA功能後,由組件產生的憑證將不支援個人版非公開鏡像拉取,同時也不支援本文中提到的其他的鑒權方式。
啟用免密外掛程式的RRSA功能首先需要在叢集基本資料中啟用RRSA,再進行免密外掛程式RRSA的相關配置。若操作順序顛倒,在配置完成後,則需要刪除免密外掛程式的Pod,RRSA功能才會生效。
啟用叢集的RRSA功能。具體操作,請參見啟用RRSA功能。
配置跨帳號RAM使用者的Container Registry資源存取權限。
叢集開啟RRSA功能後,需要按照以下步驟進行配置。假設A使用者為叢集所有者,B使用者為Container Registry執行個體所有者,現在需要授權A使用者的叢集具備訪問B使用者Container Registry資源的許可權。
配置A使用者的RAM角色
在A使用者中建立一個角色,添加AliyunSTSAssumeRoleAccess權限原則,授予這個角色具有角色扮演的許可權。按照如下修改其信任策略。
將樣本中的<oidc_issuer_url>替換為當前叢集中OIDC供應商的URL。該URL可在Container Service管理主控台叢集資訊頁面的基本資料頁簽擷取。
將樣本中的<oidc_provider_arn>替換為當前叢集OIDC供應商的ARN。該ARN可在Container Service管理主控台叢集資訊頁面的基本資料頁簽擷取。
{ "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" }
配置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小於等於角色最大會話時間。
登入Container Service管理主控台,在左側導覽列單擊叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇叢集資訊。
在左側導覽列,選擇
。在組件管理頁面,選擇安全頁簽,找到aliyun-acr-credential-helper託管,單擊卡片中的配置。
在aliyun-acr-credential-helper參數配置對話方塊,單擊右側的添加,輸入assumeRoleARN,expireDuration,rrsaRoleARN,rrsaOIDCProviderRoleARN。單擊確定。