Vinculação de uma instância de serviço a uma carga de trabalho de aplicativo, trabalho ou função

Você pode integrar uma instância de serviço do IBM Cloud a recursos em um projeto IBM Cloud® Code Engine usando associações de serviço.

Depois de determinar a instância de serviço que você deseja vincular à carga de trabalho do Code Engine e garantir que tenha configurado o acesso para as associações de serviço, você estará pronto para vincular a instância de serviço à carga de trabalho de aplicativo, trabalho ou função do Code Engine.

Antes de Iniciar

O acesso para associações de serviços deve ser configurado antes que você possa associar uma instância de serviço a uma carga de trabalho de aplicativo, trabalho ou função Code Engine. Configure o acesso para service bindings com base no fato de você querer que o Code Engine crie e gerencie automaticamente a ID de serviço para você ou se deseja usar uma ID de serviço gerenciada por você.

Quando você trabalha com associações de serviços, qual é a relação entre a ID do serviço, os segredos de acesso ao serviço e as credenciais do serviço?

Em Code Engine, uma vinculação de serviço é a relação entre um aplicativo, trabalho ou carga de trabalho de função e outro serviço IBM Cloud. Code Engine usa um ID de serviço para criar credenciais para uma instância de serviço IBM Cloud específica. Essas credenciais são credenciais de serviço e são usadas pelo seu projeto Code Engine para interagir com a instância do serviço. As credenciais de serviço são armazenadas em um segredo de acesso ao serviço. Um segredo de acesso ao serviço pode ser acessado por um aplicativo, trabalho ou função com as credenciais do serviço e é usado para interagir com a instância do serviço.

Ao criar sua instância de serviço IBM Cloud, você pode optar por criar a credencial de serviço para essa instância de serviço. Ou, ao criar uma associação de serviço, você pode optar pelo site Code Engine para criar automaticamente a credencial da instância de serviço para você, caso tenha configurado o acesso para associações de serviço.

Independentemente de você optar pelo Code Engine para criar automaticamente a credencial de serviço para você ou criar manualmente a credencial de serviço para uma instância de serviço específica, é necessário especificar a função Identity and Access Management (IAM) para a credencial de serviço. A função que você especifica define a interação permitida com a instância de serviço específica e o aplicativo, trabalho ou função Code Engine vinculado. Por exemplo, se você criar uma associação de serviço de Code Engine para uma instância de serviço IBM Cloudant e quiser que o aplicativo, o trabalho ou a função leia apenas do banco de dados IBM Cloudant, selecione a função Reader.

Vinculação de uma instância de serviço a um aplicativo ou trabalho Code Engine a partir do console

Você pode criar uma associação de serviço que associe uma instância de serviço existente a um aplicativo ou trabalho Code Engine usando o console. Para criar um vínculo de serviço para uma função, você deve usar a CLI.

Vinculação de uma instância de serviço com um novo segredo de acesso ao serviço (com uma credencial gerada automaticamente pelo site Code Engine )

Vamos criar uma associação de serviço para associar uma instância de serviço a um aplicativo ou trabalho com um novo segredo de acesso ao serviço que usa uma credencial de serviço gerada automaticamente pelo site Code Engine. Para este exemplo, crie uma associação de serviço no console para o aplicativo myapp e escolha Code Engine para criar automaticamente a credencial de serviço para uma instância de serviço IBM Cloud. Antes que o site Code Engine possa criar automaticamente a credencial de serviço, certifique-se de configurar o acesso para que o site Code Engine crie e gerencie automaticamente a ID de serviço para os vínculos de serviço.

  1. Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
  2. Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
  3. Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
  4. Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
  5. Selecione o aplicativo ou trabalho Code Engine que você deseja vincular à instância de serviço; por exemplo, escolha o aplicativo myapp.
  6. Especifique o segredo de acesso ao serviço a ser usado com essa associação. O segredo de acesso ao serviço armazena a credencial para a ligação ao serviço. Observe que qualquer credencial de serviço definida anteriormente para sua instância de serviço específica, que não esteja associada ao aplicativo ou trabalho selecionado, está listada. Se não houver nenhum segredo de acesso ao serviço no momento, você estará criando um novo segredo. Se houver um segredo de acesso ao serviço, para criar um novo segredo de acesso ao serviço com uma nova credencial de serviço para essa associação, selecione Novo segredo. Conclua as etapas a seguir.
    1. Selecione a função para a credencial da instância de serviço.
    2. Expanda as Opções avançadas.
    3. Para que o site Code Engine crie automaticamente a credencial de serviço para uma instância de serviço IBM Cloud, selecione Auto-generate.
    4. (opcional) Especifique um prefixo personalizado para a ligação do serviço. Se você não especificar um prefixo personalizado, o site Code Engine gerará automaticamente um prefixo. O prefixo é usado para distinguir as variáveis de ambiente que são criadas para essa associação de serviço.
  7. Clique em “Adicionar” para criar a ligação do serviço.
  8. Agora que a associação de serviço ao aplicativo ou trabalho foi criada no console, é possível visualizar uma lista de todas as associações de serviço definidas entre as instâncias de serviço e os aplicativos e trabalhos do site Code Engine na página Service bindings.

Como alternativa, também é possível criar e gerenciar associações de serviços a aplicativos e trabalhos específicos na página específica do aplicativo ou trabalho Code Engine no console. Para trabalhar com associações de serviços no contexto do seu aplicativo ou trabalho, vá para a guia Service bindings do seu aplicativo ou trabalho específico.

Vinculação de uma instância de serviço com um novo segredo de acesso ao serviço (com uma credencial existente)

Suponha que você queira criar uma associação de serviço para associar uma instância de serviço a um aplicativo ou trabalho com um novo segredo de acesso ao serviço que use uma credencial de serviço existente. A credencial de serviço existente pode ter sido gerada automaticamente pelo site Code Engine ou pode ter sido gerada manualmente. Para este exemplo, crie uma associação de serviço para o trabalho myjob, com um novo segredo de acesso ao serviço que usa uma credencial de serviço existente.

  1. Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
  2. Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
  3. Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
  4. Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
  5. Selecione o aplicativo ou trabalho Code Engine que você deseja vincular à instância de serviço; por exemplo, escolha o trabalho myjob.
  6. Especifique o segredo de acesso ao serviço a ser usado com essa associação. O segredo de acesso ao serviço armazena a credencial para a ligação ao serviço. Observe que qualquer credencial de serviço definida anteriormente para sua instância de serviço específica, que não esteja associada ao aplicativo ou trabalho selecionado, está listada. Se não houver nenhum segredo de acesso ao serviço no momento, você estará criando um novo segredo. Se houver um segredo de acesso ao serviço, para criar um novo segredo de acesso ao serviço com uma nova credencial de serviço para essa associação, selecione Novo segredo. Conclua as etapas a seguir.
    1. Selecione a função para a credencial da instância de serviço.
    2. Expanda as Opções avançadas.
    3. Selecione a credencial de serviço a ser usada com esse segredo de acesso ao serviço.
    4. (opcional) Especifique um prefixo personalizado para a ligação do serviço. Se você não especificar um prefixo personalizado, o site Code Engine gerará automaticamente um prefixo. O prefixo é usado para distinguir as variáveis de ambiente que são criadas para essa associação de serviço.
  7. Clique em “Adicionar” para criar a ligação do serviço.
  8. Agora que a associação de serviço ao aplicativo ou trabalho foi criada no console, é possível visualizar uma lista de todas as associações de serviço definidas entre as instâncias de serviço e os aplicativos e trabalhos do site Code Engine na página Service bindings.

Como alternativa, também é possível criar e gerenciar associações de serviços a aplicativos e trabalhos específicos na página específica do aplicativo ou trabalho Code Engine no console. Para trabalhar com associações de serviços no contexto do seu aplicativo ou trabalho, vá para a guia Service bindings do seu aplicativo ou trabalho específico.

Vinculação de uma instância de serviço com um segredo de acesso ao serviço existente

Você pode reutilizar segredos de acesso a serviços em associações de serviços. Para uma instância específica do serviço IBM Cloud, você pode reutilizar segredos de acesso ao serviço com diferentes aplicativos ou trabalhos. Não é possível reutilizar um segredo de acesso ao serviço para o mesmo aplicativo ou trabalho para o qual o segredo de acesso ao serviço foi originalmente criado. Como a credencial de serviço é armazenada no segredo de acesso ao serviço, é importante considerar os seguintes pontos:

  • Você pode ter mais de um aplicativo ou trabalho vinculado à mesma instância de serviço IBM Cloud com o mesmo segredo de acesso ao serviço.

  • Um segredo de acesso ao serviço não pode ser reutilizado em uma vinculação de serviço para o mesmo aplicativo ou trabalho. No entanto, você pode reutilizar o mesmo segredo de acesso ao serviço em um aplicativo ou trabalho diferente. Como um segredo de acesso ao serviço está associado a uma instância específica do serviço IBM Cloud, você pode reutilizar apenas o segredo de acesso ao serviço em um aplicativo ou trabalho diferente, se estiver vinculado à mesma instância de serviço.

Vamos criar uma associação de serviço para associar uma instância de serviço a um trabalho que usa um segredo de acesso de serviço existente. Por exemplo, crie uma associação de serviço para o trabalho myjob e escolha um segredo de acesso ao serviço existente para uma instância de serviço específica.

  1. Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
  2. Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
  3. Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
  4. Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
  5. Selecione o aplicativo ou o trabalho do Code Engine que você deseja vincular à instância do serviço.
  6. Você pode reutilizar uma credencial existente para o segredo de acesso ao serviço para um serviço vinculado a uma instância específica do serviço IBM Cloud com um aplicativo ou trabalho diferente. Nesse caso, selecione Existing secret (Segredo existente ). Observe que qualquer credencial de serviço definida anteriormente para sua instância de serviço específica é listada, o que não está associado ao aplicativo ou trabalho selecionado. Conclua as etapas a seguir.
    1. Examine a lista de segredos existentes e selecione o segredo que você deseja usar com essa associação de serviço.
    2. (opcional) Especifique um prefixo personalizado para a ligação do serviço. Se você não especificar um prefixo personalizado, o site Code Engine gerará automaticamente um prefixo. O prefixo é usado para distinguir as variáveis de ambiente que são criadas para essa associação de serviço.
  7. Clique em “Adicionar” para criar a ligação do serviço.
  8. Agora que a associação de serviço ao aplicativo ou trabalho foi criada no console, é possível visualizar uma lista de todas as associações de serviço definidas entre as instâncias de serviço e os aplicativos e trabalhos do site Code Engine na página Service bindings.

Como alternativa, também é possível criar e gerenciar associações de serviços a aplicativos e trabalhos específicos na página específica do aplicativo ou trabalho Code Engine no console. Para trabalhar com associações de serviços no contexto do seu aplicativo ou trabalho, vá para a guia Service bindings do seu aplicativo ou trabalho específico.

Vinculação de uma instância de serviço a um aplicativo, trabalho ou função do site Code Engine com a CLI

Você pode criar uma associação de serviço que associe uma instância de serviço existente a um aplicativo, trabalho ou função do site Code Engine com a CLI.

Antes de Iniciar

  • Criar e trabalhar com um projeto.

  • Configure o seu ambiente da CLI do Code Engine.

  • Crie a instância do serviço que você deseja vincular à sua carga de trabalho do Code Engine.

    Por exemplo, para criar uma instância de serviço do IBM Cloud Object Storage (plano Lite):

    ibmcloud resource service-instance-create my-object-storage cloud-object-storage lite global -g Default
    
  • Crie uma carga de trabalho do Code Engine.

Ligando uma instância de serviço com uma nova credencial

  • Para ligar a sua nova instância de serviço ao seu aplicativo Code Engine e gerar uma nova credencial de serviço, use o comando ibmcloud ce application bind.
  • Para ligar a sua instância de serviço a uma tarefa do Code Engine, use o comando ibmcloud ce job bind.
  • Para vincular sua instância de serviço a uma função Code Engine, use o comando ibmcloud ce function bind comando.

Para criar um aplicativo a ser usado nessas etapas, execute o seguinte comando.

ibmcloud ce application create --name my-application --image icr.io/codeengine/hello
  1. Identifique o nome da instância do serviço que você deseja vincular ao seu aplicativo, tarefa ou função. É possível localizar todas as instâncias de serviço que estão em sua conta para o seu grupo de recursos atual executando o comando ibmcloud resource service-instances; por exemplo,

    ibmcloud resource service-instances
    

    Exemplo de saída

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Vincule sua instância de serviço ao seu aplicativo, tarefa ou função do Code Engine e gere uma nova credencial de serviço com a função de serviço padrão. A função de serviço padrão é Gerenciador ou a primeira função fornecida pelo serviço se Gerenciador não for suportado. No exemplo a seguir, application bind o comando vincula a instância do serviço my-object-storage ao aplicativo chamado my-application. Uma nova credencial de serviço com a função Gerenciador é gerada para essa ação de ligação.

    ibmcloud ce application bind --name my-application --service-instance my-object-storage
    

    A tabela a seguir resume as opções que são usadas com o comando application bind neste exemplo. Consulte o comando ibmcloud ce application bind para obter mais informações sobre ele e as opções que ele oferece.

    Opções de comando
    Opção Descrição
    --name O nome do aplicativo a ser ligado. Este valor é necessário.
    --service-instance Especifique o nome de uma instância de serviço existente para ligar ao aplicativo. Este valor é necessário.

    Exemplo de saída

    Binding service instance...
    Status: Done
    Waiting for application revision to become ready...
    The Configuration is still working to reflect the latest desired specification.
    Traffic is not yet migrated to the latest revision.
    Ingress has not yet been reconciled.
    Waiting for load balancer to be ready.
    OK
    
  3. Verifique se as credenciais foram geradas usando o application get, o job get, ou o function get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.

    ibmcloud ce application get --name my-application
    

    Exemplo de saída

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storag   Writer             CLOUD_OBJECT_STORAGE
    [...]
    

Associar uma instância de serviço a uma função específica

  • Para ligar a sua nova instância de serviço ao seu aplicativo Code Engine e gerar uma nova credencial de serviço, use o comando ibmcloud ce application bind.
  • Para ligar a sua instância de serviço a uma tarefa do Code Engine, use o comando ibmcloud ce job bind.
  • Para vincular sua instância de serviço a uma função Code Engine, use o comando ibmcloud ce function bind comando.

Para criar uma função a ser usada nessas etapas, execute o seguinte comando.

ibmcloud ce function create --name myfun --runtime nodejs --build-source https://github.com/IBM/CodeEngine --build-context-dir /helloworld-samples/function-codebundle-nodejs
  1. Identifique o nome da instância do serviço que você deseja vincular ao seu aplicativo, tarefa ou função. É possível localizar todas as instâncias de serviço que estão em sua conta para o seu grupo de recursos atual executando o comando ibmcloud resource service-instances; por exemplo,

    ibmcloud resource service-instances
    

    Exemplo de saída

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Vincule sua instância de serviço ao seu aplicativo, tarefa ou função do Code Engine e gere uma nova credencial de serviço com uma função de serviço específica. Para obter mais informações sobre as funções de serviço do IAM, consulte Funções de acesso ao serviço. No exemplo a seguir, o function bind comando vincula a instância do serviço my-object-storage à função chamada my-function, utilizando a função de serviço Writer. Uma nova credencial de serviço com a função Gravador é gerada para essa ação de ligação. Ao especificar a opção --prefix, um prefixo é adicionado às variáveis de ambiente que são criadas pelas associações de serviço.

    ibmcloud ce function bind --name my-function --service-instance my-object-storage --role Writer --prefix MYPREFIX
    

    A tabela a seguir resume as opções que são usadas com o comando function bind neste exemplo. Consulte o comando ibmcloud ce function bind para obter mais informações sobre ele e as opções que ele oferece.

    Opções de comando
    Opção Descrição
    --name O nome da função a ser ligada. Este valor é necessário.
    --prefix O prefixo das variáveis de ambiente criadas para essa ligação de serviço. Por exemplo, --prefix MYPREFIX adiciona o prefixo MYPREFIX a todas as variáveis de ambiente criadas para essa associação de serviço. Para obter mais informações, consulte método de prefixo.
    --service-instance Especifique o nome de uma instância de serviço existente para vincular à função. Este valor é necessário.
    --role O nome de uma função de serviço para a nova credencial de serviço que é criada para essa ligação de serviços. Os valores válidos incluem Reader, Writer, Manager ou uma atribuição específica de serviço. Se a opção --role não for especificada, o padrão será Manager ou a primeira função fornecida pelo serviço se Manager não for suportado. Essa opção será ignorada se --service-credential for especificado.

    Exemplo de saída

    Binding service instance...
    Status: Done
    OK
    
  3. Verifique se as credenciais foram geradas usando o application get, o job get ou pelo function get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.

    ibmcloud ce function get --name my-function
    

    Exemplo de saída

    [...]
    Service Bindings:
    Name                                  ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-function-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             MYPREFIX                     30s
    [...]
    

Ligando uma instância de serviço com credenciais existentes

Se você já tiver criado uma credencial para sua instância de serviço e quiser usá-la para sua ligação de serviço, inclua a opção --service-credentials.

Para criar um trabalho a ser usado nessas etapas, execute o seguinte comando.

ibmcloud ce job create --name my-job --image icr.io/codeengine/hello
  1. Identifique o nome da instância do serviço que você deseja vincular ao seu aplicativo, tarefa ou função. É possível localizar todas as instâncias de serviço que estão em sua conta para o seu grupo de recursos atual executando o comando ibmcloud resource service-instances; por exemplo,

    ibmcloud resource service-instances
    

    Exemplo de saída

    Name                               Location   State    Type               Resource Group ID
    my-object-storage                  global     active   service_instance   325d80be5d7945608f6d121712c96ee9
    
  2. Localize as credenciais da instância de serviço.

    ibmcloud resource service-keys --instance-name INSTANCENAME
    

    Exemplo de saída

    Name                State    Created At
    my-cos-credential   active   Tue Mar  2 01:15:33 UTC 2021
    

    Para ver detalhes de uma credencial de serviço, execute ibmcloud resource service-key KEYNAME. É possível localizar todas as chaves de serviço em seu grupo de recursos executando ibmcloud resource service-keys.

  3. Vincule a instância do serviço ao aplicativo, à tarefa ou à função usando as credenciais existentes. Por exemplo, o comando job bind a seguir liga a instância de serviço my-object-storage com as credenciais de serviço existentes chamadas my-cos-credential a uma tarefa existente que é chamada myjob.

    ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credential
    

    A tabela a seguir resume as opções que são usadas com o comando job bind neste exemplo. Consulte o comando ibmcloud ce job bind para obter mais informações sobre ele e as opções que ele oferece.

    Opções de comando
    Opção Descrição
    --name O nome da tarefa a ser ligada. Este valor é necessário.
    --service-instance Especifique o nome de uma instância de serviço existente para ligar à tarefa. Este valor é necessário.
    --service-credential O nome da credencial de serviço existente para ligar.
  4. Verifique se as credenciais foram geradas usando o application get, o job get, ou o function get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.

    ibmcloud ce job get --name myjob
    

    Exemplo de saída

    [...]
    Service Bindings:
    Name                                 ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    myjob-ce-service-binding-abcde       abcde645-d3f9-407d-b964-6c3ae69abcde  my-object-storage  cloud-object-storage  my-cos-credential  CLOUD_OBJECT_STORAGE
    [...]
    

Desvinculando instâncias de serviço

Desvincular instâncias de serviço de cargas de trabalho de aplicativos, tarefas ou funções remove as vinculações de serviço existentes.

Quando você desvincula (ou remove) uma vinculação de serviço, está excluindo a associação da carga de trabalho do aplicativo, do trabalho ou da função com o segredo de acesso ao serviço, de modo que a carga de trabalho não tenha mais acesso ao serviço IBM Cloud vinculado anteriormente.

Depois que uma associação de serviço é definida entre o aplicativo e uma instância de serviço, a associação de serviço fica ativa enquanto o aplicativo e a instância de serviço estiverem ativos ou enquanto você não tiver concluído uma operação de desvinculação para remover a associação de serviço. Se a instância do serviço for excluída, você precisará excluir manualmente a associação do serviço.

Desvincular uma instância de serviço do console

  1. Na página “Projetos” do Code Engine, acesse o seu projeto.
  2. Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ) para exibir uma lista de todas as ligações de serviço definidas. Ou, se quiser gerenciar os vínculos de serviço no contexto do seu aplicativo ou trabalho, na página Visão geral, clique em Aplicativos ou Trabalhos e clique no nome do seu aplicativo ou trabalho. Na página do aplicativo ou trabalho específico, vá para a guia Service bindings (Ligações de serviço).
  3. Na lista de ligações de serviço, exclua a ligação que você deseja remover do seu aplicativo ou tarefa. Clique no ícone Ações Actions > Delete para excluir o vínculo de serviço.

Desvinculação de uma instância de serviço com a CLI

  1. Encontre a ligação de serviço que você deseja remover com o application get, job get, ou o function get ; por exemplo,

    ibmcloud ce application get --name my-application
    

    Exemplo de saída

    [...]
    Service Bindings:
    Name                                         ID                                    Service Instance      Service Type          Role / Credential  Environment Variable Prefix
    my-application-app-ce-service-binding-abcde  abcde5d3-dfc3-4f52-b133-b869b5eabcde  my-object-storage     cloud-object-storage  Writer             CLOUD_OBJECT_STORAGE
    [...]
    
  2. Remova a vinculação de serviço usando os botões application unbind, job unbind, ou function unbind.

    • Para remover uma única ligação, especifique as opções --name e --binding.
        ibmcloud ce application unbind --name APPLICATION_NAME --binding BINDING_NAME
        ```
    * Para desvincular todas as instâncias de serviço, use a opção `--all`.
    
    ```txt {: pre}
        ibmcloud ce job unbind --name JOB_NAME --all
        ```