為 Artifact Registry 設定 Helm 驗證後,您就能在 Docker 格式的存放區中推送、提取及管理資訊圖表。您可以重複使用現有的 Docker 憑證、產生短期存取權杖,或提供服務帳戶金鑰檔案,藉此進行驗證。
事前準備
- 如果沒有圖表的存放區,請建立新的存放區。選擇 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 LOCATION-docker.pkg.devWindows
執行下列指令:
gcloud auth application-default print-access-token ya29.8QEQIfY_... helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \ 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 Reader 角色,以及暫存存放區的 Artifact Registry Writer 角色。
- 遵循管理服務帳戶金鑰的最佳做法。
如要建立新的服務帳戶和服務帳戶金鑰,並僅用於 Artifact Registry 存放區,請按照下列步驟操作:
建立服務帳戶來代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。
您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 驗證。如果是現有帳戶,您可以在「服務帳戶」頁面中查看金鑰及建立新金鑰。
您可以選擇將金鑰檔案的所有內容採用 Base64 編碼。
Linux
base64 FILE-NAME > NEW-FILE-NAMEmacOS
base64 -i FILE-NAME -o NEW-FILE-NAMEWindows
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 \ LOCATION-docker.pkg.devWindows
執行下列指令:
helm registry login -u KEY-TYPE --password-stdin LOCATION-docker.pkg.dev < KEY-FILE地點
- KEY-TYPE 是下列其中一項:
_json_key如果您使用 JSON 格式的服務帳戶金鑰,請按照建立檔案時的格式提供。- 如果您將檔案的所有內容進行 Base64 編碼,則為
_json_key_base64。
- KEY-FILE 是 JSON 格式的服務帳戶金鑰檔案名稱。
-
LOCATION是存放區的單一區域或多區域位置。
- KEY-TYPE 是下列其中一項:
Helm 現在已通過 Artifact Registry 驗證。