將密鑰及配置對映參照為裝載檔案 (CLI)

在 Code Engine中,建立密鑰及 configmap 之後,應用程式或工作工作量可以使用儲存為鍵值組的資訊作為裝載檔案。 您無法將此方法與函數搭配使用。

使用密鑰及 configmap 作為已裝載檔案,與使用密鑰及 configmap 作為環境變數類似。

當您使用密鑰時,資料會儲存為編碼字串。 將資料新增至環境作為環境變數或裝載檔時,不會對資料進行編碼。

使用 CLI 將密鑰參照為已裝載檔案

在此實務範例中,當您執行使用 icr.io/codeengine/ce-secret-vol 映像檔的應用程式時,請建立密鑰,然後將該密鑰當作已裝載檔案來參照。

範例映像檔 icr.io/codeengine/ce-secret-vol 會讀取 /mysecrets 目錄中的每一個檔案,並將檔案名稱及其內容列印至每一個要求的標準輸出,以便輸出包含在應用程式日誌中。 如需此範例應用程式的相關資訊,請參閱 IBM Cloud Code Engine GitHub 儲存庫中的密鑰作為磁區(secrets-vol)範例

當此實務範例使用密鑰時,您可以使用相同的步驟,透過在指令中替換 configmap for secret,將 configmap 作為已裝載檔案進行參照。

  1. 建立密鑰 (名為 mysecret),並使用 --from-literal 選項指定密鑰的鍵值組; 例如,

    ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh
    
  2. 建立使用 icr.io/codeengine/ce-secret-vol 映像檔的 myapp 應用程式。 使用 --mount-secret 選項,將 mysecret 密碼的內容裝載或新增至 /mysecrets 目錄中的應用程式。 透過指定 --min-scale=1 選項,應用程式一律具有執行中且未調整為零的實例。 當您檢視日誌時,將應用程式配置成一律具有執行中實例非常有用。 例如,

    ibmcloud ce app create --name myapp --image icr.io/codeengine/ce-secret-vol --mount-secret /mysecrets=mysecret --min-scale 1
    

    輸出範例

    Creating application 'myapp'...
    [...]
    Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce application get -n myapp' to check the application status.
    OK
    
    https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  3. 複製前一個輸出中的 URL,並使用 curl 來呼叫應用程式; 例如,

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  4. 檢視應用程式中的日誌。 在此範例中,myapp 應用程式使用範例映像檔 icr.io/codeengine/ce-secret-vol。 此應用程式會讀取 /mysecrets 目錄中的每一個檔案,並將檔案名稱及其內容列印至每一個要求的標準輸出,以便輸出包含在應用程式日誌中。 檔案名稱為 apikey

    ibmcloud ce app logs --app myapp
    

    輸出範例

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    
  5. 更新 mysecret 密鑰以變更 apikey 鍵值組的值; 例如,

    ibmcloud ce secret update -n mysecret --from-literal apikey=qrst
    
  6. 請重新呼叫應用程式。

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  7. 檢視應用程式中的日誌。

    ibmcloud ce app logs --app myapp
    

    輸出範例

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    apikey: qrst
    

您已將儲存在密鑰 (或 configmap) 中的資料新增至應用程式作為已裝載檔案,然後更新儲存在密鑰中的資料。 應用程式不需要重新啟動即可使用已更新的參照密鑰。