設定 Helm 的驗證機制

為 Artifact Registry 設定 Helm 驗證後,您就能在 Docker 格式的存放區中推送、提取及管理資訊圖表。您可以重複使用現有的 Docker 憑證、產生短期存取權杖,或提供服務帳戶金鑰檔案,藉此進行驗證。

事前準備

  1. 如果沒有圖表的存放區,請建立新的存放區。選擇 Docker 做為存放區格式。
  2. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。 登入後,執行下列指令來初始化 Google Cloud CLI:

    gcloud init
  3. (選用) 設定 Google Cloud CLI 指令的預設值。
  4. 安裝 Helm 3.8.0 以上版本。 在舊版 Helm 中,OCI 格式的圖表支援是實驗功能。

    執行 helm version 來驗證版本。

選擇驗證方式

在多數情況下,建議您使用服務帳戶向 Artifact Registry 進行驗證。

可用的驗證方式如下:

使用為 Docker 設定的 Artifact Registry 憑證
根據預設,Helm 可以使用與 Docker 相同的憑證進行驗證。
存取權杖
應用程式預設憑證提供短期存取權杖,服務帳戶會使用這些權杖存取您的 Cloud de Confiance by S3NS 資源。
JSON 金鑰檔案

使用者管理的金鑰組,可做為服務帳戶的憑證。由於憑證的效期很長,因此在所有可用的驗證方法中,這是最不安全的選項。

請盡可能使用存取權杖,降低未經授權存取構件的風險。

使用 Docker 設定

根據預設,Helm 支援 Docker 設定檔 config.json 中的登錄設定。Helm 會在預設位置或 DOCKER_CONFIG 環境變數指定的位置中,尋找登錄設定。

如果您設定 Docker 時使用憑證輔助函式向 Artifact Registry 進行驗證,Helm 會沿用您現有的 Artifact Registry Docker 存放區設定。

使用存取憑證

存取權杖是短期權杖,可提供Cloud de Confiance by S3NS 資源的存取權。由於權杖的效期很短,因此您應在用來連線至 Artifact Registry 存放區前不到一小時,才要求取得權杖。

Cloud de Confiance 使用應用程式預設憑證取得存取權杖。

如何使用存取權杖:

  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 LOCATION-docker.s3nsregistry.fr
    

    Windows

    執行下列指令:

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    LOCATION-docker.s3nsregistry.fr
    

    地點

    • 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 存放區,請按照下列步驟操作:

  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 \
    LOCATION-docker.s3nsregistry.fr
    

    Windows

    執行下列指令:

    helm registry login -u KEY-TYPE --password-stdin LOCATION-docker.s3nsregistry.fr < KEY-FILE
    

    地點

    • KEY-TYPE 是下列其中一項:
      • _json_key 如果您使用 JSON 格式的服務帳戶金鑰,請按照建立檔案時的格式提供。
      • 如果您將檔案的所有內容進行 Base64 編碼,則為 _json_key_base64。
    • KEY-FILE 是 JSON 格式的服務帳戶金鑰檔案名稱。
    • LOCATION 是存放區的區域位置。

Helm 現在已通過 Artifact Registry 驗證。

後續步驟