IBM Cloud Docs
将私钥和配置映射作为已安装文件进行引用 (CLI)

将私钥和配置映射作为已安装文件进行引用 (CLI)

在 Code Engine中,创建私钥和配置映射后,存储为键/值对的信息可由应用程序或作业工作负载作为已安装的文件使用。 不能将此方法与函数配合使用。

使用私钥和配置映射作为已安装的文件类似于使用私钥和配置映射作为环境变量。

使用私钥时,数据将另存为编码字符串。 将数据作为环境变量或已安装文件添加到环境时,不会对数据进行编码。

使用 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
    

您已将存储在私钥 (或配置映射) 中的数据作为已安装文件添加到应用程序,然后更新存储在私钥中的数据。 应用程序不需要重新启动即可使用更新后的引用私钥。