設定 Helm 的驗證機制

本頁說明如何設定 Helm,以便透過 Artifact Registry 存放區進行驗證。

事前準備

  1. 如果圖表的存放區不存在,請建立新的存放區。選擇 Docker 做為存放區格式。
  2. 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.

  3. (選用) 設定 Google Cloud CLI 指令的預設值
  4. 安裝 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 會使用應用程式預設憑證取得存取權杖。

如要使用存取權杖,請按照下列步驟操作:

  1. 建立服務帳戶,以便代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。

    您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 的驗證機制。如要查看現有帳戶的金鑰,或建立新的金鑰,請前往「服務帳戶」頁面。

    前往「Service Accounts」(服務帳戶) 頁面

  2. 授予服務帳戶適當的 Artifact Registry 角色,以便提供存放區存取權。

  3. 將服務帳戶金鑰檔案位置指派給 GOOGLE_APPLICATION_CREDENTIALS 變數,這樣 Artifact Registry 憑證輔助程式就能在連線至存放區時取得您的金鑰。

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    其中 KEY-FILE 是服務帳戶金鑰檔案的路徑。

  4. 使用 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 存放區:

  1. 建立服務帳戶,以便代表應用程式執行動作,或選擇用於自動化的現有服務帳戶。

    您需要服務帳戶金鑰檔案的位置,才能設定 Artifact Registry 的驗證機制。如要查看現有帳戶的金鑰,或建立新的金鑰,請前往「服務帳戶」頁面。

    前往「Service Accounts」(服務帳戶) 頁面

  2. 您可以選擇對金鑰檔案的所有內容進行 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 編碼金鑰檔案。

  3. 授予服務帳戶適當的 Artifact Registry 角色,以便提供存放區存取權。

  4. 使用服務帳戶金鑰進行驗證:

    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 是存放區的地區或多地區位置

Helm 現在會透過 Artifact Registry 進行驗證。

後續步驟