Referenciando segredos e configmaps como arquivos montados (CLI)

No Code Engine, depois de criar segredos e configmaps, as informações que são armazenadas como pares de valores de chave podem ser consumidas por seu app ou carga de trabalho de tarefa como um arquivo montado. Não é possível usar esse método com funções..

Trabalhar com segredos e configmaps como arquivos montados é semelhante a trabalhar com segredos e configmaps como variáveis de ambiente.

Quando você trabalha com segredos, os dados são salvos como uma sequência codificada. Os dados não são codificados quando são incluídos no ambiente como uma variável de ambiente ou como um arquivo montado.

Referenciando um segredo como um arquivo montado com a CLI

Neste cenário, crie um segredo e, em seguida, referencie o segredo como um arquivo montado quando você executar um aplicativo, que usa a imagem icr.io/codeengine/ce-secret-vol.

A imagem de amostra, icr.io/codeengine/ce-secret-vol, lê cada arquivo no diretório /mysecrets e imprime o nome do arquivo e seu conteúdo para a saída padrão para cada solicitação para que a saída esteja contida nos logs do app. Para obter mais informações sobre esse aplicativo de amostra, consulte os segredos do como amostra de volumes(secrets-vol)no IBM Cloud Code Engine GitHub repo.

Embora esse cenário use um segredo, é possível usar as mesmas etapas para referenciar um configmap como um arquivo montado, substituindo configmap por secret nos comandos.

  1. Crie um segredo chamado mysecret e especifique os pares chave-valor para ele usando a opção --from-literal, por exemplo,

    ibmcloud ce secret create -n mysecret --from-literal apikey=abcdefgh
    
  2. Crie o aplicativo myapp que usa a imagem icr.io/codeengine/ce-secret-vol. Use a opção --mount-secret para montar ou inclua os conteúdos do segredo mysecret no app no diretório /mysecrets. Especificando a opção --min-scale=1, o app sempre tem uma instância que está em execução e não escala para zero. Configurar o app para sempre ter uma instância em execução é útil quando você visualiza logs. Por exemplo,

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

    Saída de exemplo

    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 a URL da saída anterior e chame o aplicativo com curl; por exemplo,

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  4. Visualize os logs do seu aplicativo. Neste exemplo, o app myapp usa a imagem de amostra, icr.io/codeengine/ce-secret-vol. Este app lê cada arquivo no diretório /mysecrets e imprime o nome do arquivo e os seus conteúdos para a saída padrão para cada solicitação, de forma que a saída esteja contida nos logs do app. O nome do arquivo é apikey.

    ibmcloud ce app logs --app myapp
    

    Saída de exemplo

    Getting logs for all instances of application 'myapp'...
    OK
    
    myapp-b3gxd-1-deployment-6f45dcf7f4-nw59z/user-container:
    Listening on port 8080
    apikey: abcdefgh
    
  5. Atualize o segredo mysecret para mudar o valor para os pares chave-valor apikey; por exemplo,

    ibmcloud ce secret update -n mysecret --from-literal apikey=qrst
    
  6. Chame o aplicativo novamente.

    curl https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud
    
  7. Visualize os logs do seu aplicativo.

    ibmcloud ce app logs --app myapp
    

    Saída de exemplo

    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
    

Você incluiu dados que são armazenados em segredos (ou configmaps) no seu app como um arquivo montado e, em seguida, atualizou os dados armazenados no segredo. O app não requereu um reinício para usar o segredo referenciado atualizado.