使用 ConfigMap

瞭解如何建立 ConfigMap,然後設定 Knative serving 服務和修訂版本,以使用該 ConfigMap。

服務的常見用途是使用 ConfigMap,將應用程式程式碼與設定分開。ConfigMap 與 Secret 類似,但 Secret 用於機密資訊,ConfigMap 則用於儲存非機密資料,例如連線字串、公開憑證、主機名稱和網址。如要進一步瞭解如何使用 ConfigMap,請參閱 Google Kubernetes Engine 說明文件

啟用容器存取 ConfigMap 時,您可以選擇下列任一選項:

  • 將 ConfigMap 掛接為磁碟區,掛接的磁碟區中會提供 ConfigMap 項目做為檔案。建議您這麼做,因為這樣可確保讀取 ConfigMap 時取得最新版本。
  • 使用環境變數傳遞 ConfigMap。

建立 ConfigMap

建立 ConfigMap 的方式有很多種,詳情請參閱 GKE 說明文件的「ConfigMaps」頁面。為方便起見,下列步驟說明如何以簡單的方式建立 ConfigMap。

建立 ConfigMap 時,請務必在與執行 Knative serving 服務的叢集相同的命名空間中建立。這些操作說明使用 default 命名空間。

您可以透過指令列建立 ConfigMap:

kubectl create configmap NAME DATA

取代:

  • NAME 是 ConfigMap 物件的名稱。
  • DATA 可以是下列任一項:

    • --from-file 標記,以及包含一或多個設定檔的每個目錄路徑。
    • --from-literal 旗標和鍵/值組合,用於將每個項目新增至 ConfigMap。

例如:

kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm

系統會建立並上傳 ConfigMap,供 default 命名空間中的叢集使用。

讓服務可使用 ConfigMap

建立 ConfigMap 後,您可以在部署新服務或更新現有服務並部署版本時,使用 Google Cloud 主控台或 Google Cloud CLI,將 ConfigMap 設為 Knative 服務的磁碟區或環境變數:

控制台

  1. 前往 Google Cloud 控制台的 Knative Serving:

    前往 Knative serving

  2. 如要設定部署的新服務,請按一下「建立服務」。如要設定現有服務,請按一下該服務,然後按一下「Edit & Deploy New Revision」(編輯及部署新的修訂版本)

  3. 在「進階設定」下方,按一下「變數和密鑰」

  4. 在「參照 ConfigMap」下方,從下拉式選單中選取所需的 ConfigMap。

    • 在「參考方法」下拉式選單中,選取要使用 ConfigMap 的方式,例如掛接為磁碟區或公開為環境變數。
    • 如果使用掛接做為磁碟區,請指定路徑,然後按一下「完成」
    • 如果您要以環境變數形式公開:
      1. 提供變數的「名稱」,然後從「金鑰」下拉式選單中選取對應的 ConfigMap 值。
      2. 按一下「新增」,新增其他 ConfigMap 值。
      3. 提供變數的「名稱」,然後從「金鑰」下拉式選單中選取對應的 ConfigMap 值。
      4. 按一下 [完成]

  5. 按一下「下一步」繼續前往下一個部分。

  6. 在「設定這項服務的觸發方式」部分,選取要用來叫用服務的連線。

  7. 按一下「建立」,將映像檔部署到 Knative 服務,然後等待部署作業完成。

指令列

您可以使用 Google Cloud CLI 為新服務設定 ConfigMap,或更新現有服務:

  • 如果是現有服務,請執行 gcloud run services update 指令,並搭配下列其中一個參數,更新 ConfigMap:

    範例:

    gcloud run services update SERVICE --update-config-maps KEY1=VALUE1,KEY2=VALUE2

    取代:

    • SERVICE 改為您的服務名稱。
    • KEY1=VALUE1,KEY2=VALUE2,並以半形逗號分隔每個 ConfigMap 的名稱和值配對清單。您可以為每個 KEY 指定掛接路徑,或提供環境變數。以正斜線 / 開頭,指定掛接路徑。所有其他鍵都對應至環境變數。針對每個 VALUE,指定 ConfigMap 名稱。如何指定多個參數
    • 指令參數選項

      如要指定多組鍵/值組合,您可以指定多個參數,方便閱讀。範例:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"
  • 如果是新服務,請使用 gcloud run deploy 指令和 --set-config-maps 參數執行 ConfigMap 設定:

    gcloud run deploy SERVICE --image=IMAGE_URL --set-config-maps KEY1=VALUE1,KEY2=VALUE2

    取代:

    • IMAGE_URL,並參照容器映像檔,例如 gcr.io/cloudrun/hello
    • SERVICE 改為您的服務名稱。
    • KEY1=VALUE1,KEY2=VALUE2,並以半形逗號分隔每個 ConfigMap 的名稱和值配對清單。您可以為每個 KEY 指定掛接路徑,或提供環境變數。以正斜線 / 開頭,指定掛接路徑。所有其他鍵都對應至環境變數。針對每個 VALUE,指定 ConfigMap 名稱。如何指定多個參數
    • 指令參數選項

      如要指定多組鍵/值組合,您可以指定多個參數,方便閱讀。範例:
      [...]
      --update-config-maps "KEY=VALUE1" \
      --update-config-maps "KEY=VALUE2" \
      --update-config-maps "KEY=VALUE3"