本頁說明如何設定 Helm,以便透過 Artifact Registry 存放區進行驗證。
事前準備
- 如果圖表的存放區不存在,請建立新的存放區。選擇 Docker 做為存放區格式。
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- (選用) 設定 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 Reader」角色。
- 請在各個存放區,而非專案層級,設定專屬服務帳戶的權限。接著,您可以根據存放區內容指定存取權。舉例來說,開發構建作業的服務帳戶可能會具有用於正式版存放區的 Artifact Registry Reader 角色,以及用於階段性存放區的 Artifact Registry Writer 角色。
- 請遵循管理服務帳戶金鑰的最佳做法。
如要建立新的服務帳戶和服務帳戶金鑰,僅供使用 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 進行驗證。