Cómo hacer referencia a secretos y mapas de configuración como archivos montados (CLI)

En Code Engine, después de crear secretos y mapas de configuración, la información que se almacena como pares de clave-valor puede ser consumida por la app o la carga de trabajo como un archivo montado. No puede utilizar este método con funciones.

Trabajar con secretos y mapas de configuración como archivos montados es similar a trabajar con secretos y mapas de configuración como variables de entorno.

Cuando se trabaja con secretos, los datos se guardan como una serie codificada. Los datos no están codificados cuando se añade al entorno como una variable de entorno o como un archivo montado.

Cómo hacer referencia a un secreto como un archivo montado con la CLI

En este caso de ejemplo, cree un secreto y, a continuación, haga referencia al secreto como un archivo montado cuando ejecute una aplicación, lo que utiliza la imagen icr.io/codeengine/ce-secret-vol.

La imagen de ejemplo, icr.io/codeengine/ce-secret-vol, lee cada archivo del directorio /mysecrets e imprime el nombre del archivo y su contenido en la salida estándar de cada solicitud de modo que la salida está contenida en los registros de la aplicación. Para obtener más información sobre esta aplicación de ejemplo, consulte el ejemplo de secretos como volúmenes(secrets-vol)en el repositorio IBM Cloud Code Engine GitHub.

Aunque en este caso de ejemplo se utiliza un secreto, puede seguir los mismos pasos para hacer referencia a un mapa de configuración sustituyendo configmap por secret en los mandatos.

  1. Cree un secreto llamado mysecret y especifique los pares de clave-valor para el secreto mediante la opción --from-literal; por ejemplo,

    ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh
    
  2. Cree la aplicación myapp que utiliza la imagen icr.io/codeengine/ce-secret-vol. Utilice la opción --mount-secret para montar o añadir el contenido del secreto mysecret a la app en el directorio /mysecrets. Al especificar la opción --min-scale=1, la app siempre tiene una instancia que se está ejecutando y no se escala a cero. La configuración de la app para que siempre haya una instancia de ejecución es útil cuando se ven los registros. Por ejemplo:

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

    Salida de ejemplo

    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. Copie el URL de la salida anterior y llame a la aplicación con curl; por ejemplo,

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  4. Visualice los registros desde la aplicación. En este ejemplo, la aplicación myapp utiliza la imagen de ejemplo, icr.io/codeengine/ce-secret-vol. Esta app lee cada archivo en el directorio /mysecrets e imprime el nombre del archivo y su contenido en la salida estándar para cada solicitud de modo que la salida esté contenida en los registros de la app. El nombre del archivo es apikey.

    ibmcloud ce app logs --app myapp
    

    Salida de ejemplo

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    
  5. Actualice el secreto mysecret para cambiar el valor de los pares de clave-valor de apikey; por ejemplo,

    ibmcloud ce secret update -n mysecret --from-literal apikey=qrst
    
  6. Vuelva a llamar a la aplicación.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  7. Visualice los registros desde la aplicación.

    ibmcloud ce app logs --app myapp
    

    Salida de ejemplo

    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
    

Ha añadido datos que están almacenados en secretos (o mapas de configuración) a la app como un archivo montado y, a continuación, ha actualizado los datos almacenados en el secreto. No es necesario reiniciar la app para que utilice el secreto de referencia actualizado.