本頁說明如何設定 Helm,以便向 Artifact Registry 存放區進行驗證。
事前準備
- 如果沒有圖表的存放區,請建立新的存放區。選擇 Docker 做為存放區格式。
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- (選用) 設定 Google Cloud CLI 指令的預設值。
安裝 Helm 3.8.0 以上版本。 在舊版 Helm 中,OCI 格式的圖表支援是實驗功能。
執行
helm version
來驗證版本。
選擇驗證方式
在大多數情況下,建議您使用服務帳戶向 Artifact Registry 進行驗證。
可用的驗證方法如下:
- 使用為 Docker 設定的 Artifact Registry 憑證
- 根據預設,Helm 可以使用與 Docker 相同的憑證進行驗證。
- 存取權杖
- 應用程式預設憑證提供短期存取權杖,服務帳戶可使用這些權杖存取 Google Cloud 資源。
- JSON 金鑰檔案
使用者管理的金鑰組,可用於服務帳戶的憑證。由於憑證的效期很長,因此在所有可用的驗證方法中,這是安全性最低的選項。
請盡可能使用存取權杖,降低未經授權存取構件的風險。
使用 Docker 設定
根據預設,Helm 支援 Docker 設定檔 config.json 中的登錄設定。Helm 會在預設位置或 DOCKER_CONFIG 環境變數指定的位置尋找登錄設定。
如果您設定 Docker 時使用憑證輔助程式向 Artifact Registry 進行驗證,Helm 會沿用您現有的 Artifact Registry Docker 存放區設定。
使用存取憑證
存取權杖是短期權杖,可提供Google Cloud 資源的存取權。由於權杖的效期很短,因此您應在用來連線至 Artifact Registry 存放區前不到一小時,才要求權杖。
Google Cloud 使用應用程式預設憑證取得存取權杖。
如何使用存取權杖:
建立服務帳戶來代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。
您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 的驗證方式。如果是現有帳戶,您可以在「服務帳戶」頁面查看金鑰及建立新金鑰。
授予服務帳戶適當的 Artifact Registry 角色,提供存放區存取權。
將服務帳戶金鑰檔案位置指派給
GOOGLE_APPLICATION_CREDENTIALS
變數,這樣一來,Artifact Registry 憑證輔助程式就能在連線至存放區時取得金鑰。export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
其中 KEY-FILE 是服務帳戶金鑰檔案的路徑。
使用 Docker 向 Artifact Registry 驗證時,請取得存取權杖做為憑證。
Linux / macOS
執行下列指令:
gcloud auth application-default print-access-token | helm registry login -u oauth2accesstoken \ --password-stdin https://LOCATION-docker.pkg.dev
Windows
執行下列指令:
gcloud auth application-default print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ https://LOCATION-docker.pkg.dev
地點
oauth2accesstoken
是透過存取權杖進行驗證時使用的使用者名稱。gcloud auth application-default print-access-token
是 Google Cloud CLI 指令,用於取得服務帳戶的存取權杖。存取權杖是驗證密碼。-
LOCATION
是存放區的區域或多區域位置。
Helm 現在已通過 Artifact Registry 驗證。
使用 JSON 金鑰檔
任何人只要有權存取服務帳戶的有效私密金鑰,就可以透過該服務帳戶存取資源。請注意,金鑰的服務帳戶存取權 (以及服務帳戶有權存取的資料) 生命週期與下載金鑰之使用者的生命週期無關。
請按照下列規範限制存放區的存取權:
- 建立專屬服務帳戶,僅用於與存放區互動。
- 授予服務帳戶所需的特定 Artifact Registry 角色。舉例來說,如果服務帳戶只會下載構件,則只需要 Artifact Registry 讀者角色。
- 在每個存放區設定專屬服務帳戶的權限,而非在專案層級設定。接著,您可以根據存放區環境指定存取權。舉例來說,開發建構作業的服務帳戶可能具有生產存放區的 Artifact Registry 讀取者角色,以及暫存存放區的 Artifact Registry 寫入者角色。
- 請遵循管理服務帳戶金鑰的最佳做法。
如要建立新的服務帳戶和服務帳戶金鑰,僅供 Artifact Registry 存放區使用,請按照下列步驟操作:
建立服務帳戶來代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。
您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 的驗證方式。如果是現有帳戶,您可以在「服務帳戶」頁面查看金鑰及建立新金鑰。
您可以選擇將金鑰檔案的所有內容進行 Base64 編碼。
Linux
base64 FILE-NAME > NEW-FILE-NAME
macOS
base64 -i FILE-NAME -o NEW-FILE-NAME
Windows
Base64.exe -e FILE-NAME > NEW-FILE-NAME
其中 FILE-NAME 是原始金鑰檔案名稱,NEW-FILE-NAME 則是經過 Base64 編碼的金鑰檔案。
授予服務帳戶適當的 Artifact Registry 角色,提供存放區存取權。
使用服務帳戶金鑰進行驗證:
Linux / macOS
執行下列指令:
cat KEY-FILE | helm registry login -u KEY-TYPE --password-stdin \ https://LOCATION-docker.pkg.dev
Windows
執行下列指令:
helm registry login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
地點
- KEY-TYPE 是下列其中一項:
_json_key
:如果您使用 JSON 格式的服務帳戶金鑰,請按照建立檔案時的格式提供。_json_key_base64
(如果您已將檔案的所有內容進行 Base64 編碼)。
- KEY-FILE 是 JSON 格式的服務帳戶金鑰檔案名稱。
-
LOCATION
是存放區的區域或多區域位置。
- KEY-TYPE 是下列其中一項:
Helm 現在已通過 Artifact Registry 驗證。