設定 Helm 的驗證機制

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

事前準備

  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 相同的憑證進行驗證。
存取權杖
應用程式預設憑證提供短期存取權杖,服務帳戶可使用這些權杖存取 Trusted Cloud by S3NS 資源。
JSON 金鑰檔案

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

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

使用 Docker 設定

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

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

使用存取憑證

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

Trusted 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.s3nsregistry.fr
    

    Windows

    執行下列指令:

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    helm registry login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://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 讀取者角色,以及暫存存放區的 Artifact Registry 寫入者角色。
  • 請遵循管理服務帳戶金鑰的最佳做法

如要建立新的服務帳戶和服務帳戶金鑰,僅供 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.s3nsregistry.fr
    

    Windows

    執行下列指令:

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

    地點

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

Helm 現在已通過 Artifact Registry 驗證。

後續步驟