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
- Crie um projeto.
- Crie uma carga de trabalho Code Engine para vincular-se à sua instância de serviço. A carga de trabalho que você deseja vincular à instância de serviço deve existir.
- Crie a instância do serviço que você deseja vincular à sua carga de trabalho do Code Engine.
- Configurar o acesso para associações de serviços.
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.
- Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
- Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
- Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
- Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
- Selecione o aplicativo ou trabalho Code Engine que você deseja vincular à instância de serviço; por exemplo, escolha o aplicativo
myapp. - 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.
- Selecione a função para a credencial da instância de serviço.
- Expanda as Opções avançadas.
- 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. - (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.
- Clique em “Adicionar” para criar a ligação do serviço.
- 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.
- Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
- Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
- Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
- Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
- Selecione o aplicativo ou trabalho Code Engine que você deseja vincular à instância de serviço; por exemplo, escolha o trabalho
myjob. - 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.
- Selecione a função para a credencial da instância de serviço.
- Expanda as Opções avançadas.
- Selecione a credencial de serviço a ser usada com esse segredo de acesso ao serviço.
- (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.
- Clique em “Adicionar” para criar a ligação do serviço.
- 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.
- Depois que seu projeto estiver no status “Ativo”, clique no nome do seu projeto na página “Projetos” do Code Engine.
- Na página Overview (Visão geral), clique em Service bindings (Ligações de serviço ).
- Na página Service bindings (Ligações de serviço), clique em Create (Criar ) para criar a ligação.
- Selecione a instância do serviço “ IBM ” que você deseja vincular ao seu aplicativo ou tarefa do “ Code Engine ”.
- Selecione o aplicativo ou o trabalho do Code Engine que você deseja vincular à instância do serviço.
- 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.
- Examine a lista de segredos existentes e selecione o segredo que você deseja usar com essa associação de serviço.
- (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.
- Clique em “Adicionar” para criar a ligação do serviço.
- 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
-
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 bindcomando.
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
-
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-instancesExemplo de saída
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
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 bindo comando vincula a instância do serviçomy-object-storageao aplicativo chamadomy-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-storageA tabela a seguir resume as opções que são usadas com o comando
application bindneste exemplo. Consulte o comandoibmcloud ce application bindpara obter mais informações sobre ele e as opções que ele oferece.Opções de comando Opção Descrição --nameO nome do aplicativo a ser ligado. Este valor é necessário. --service-instanceEspecifique 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 -
Verifique se as credenciais foram geradas usando o
application get, ojob get, ou ofunction get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.ibmcloud ce application get --name my-applicationExemplo 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 bindcomando.
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
-
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-instancesExemplo de saída
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
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 bindcomando vincula a instância do serviçomy-object-storageà função chamadamy-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 MYPREFIXA tabela a seguir resume as opções que são usadas com o comando
function bindneste exemplo. Consulte o comandoibmcloud ce function bindpara obter mais informações sobre ele e as opções que ele oferece.Opções de comando Opção Descrição --nameO nome da função a ser ligada. Este valor é necessário. --prefixO prefixo das variáveis de ambiente criadas para essa ligação de serviço. Por exemplo, --prefix MYPREFIXadiciona o prefixoMYPREFIXa 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-instanceEspecifique o nome de uma instância de serviço existente para vincular à função. Este valor é necessário. --roleO 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,Managerou uma atribuição específica de serviço. Se a opção--rolenão for especificada, o padrão seráManagerou a primeira função fornecida pelo serviço seManagernão for suportado. Essa opção será ignorada se--service-credentialfor especificado.Exemplo de saída
Binding service instance... Status: Done OK -
Verifique se as credenciais foram geradas usando o
application get, ojob getou pelofunction get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.ibmcloud ce function get --name my-functionExemplo 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
-
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-instancesExemplo de saída
Name Location State Type Resource Group ID my-object-storage global active service_instance 325d80be5d7945608f6d121712c96ee9 -
Localize as credenciais da instância de serviço.
ibmcloud resource service-keys --instance-name INSTANCENAMEExemplo de saída
Name State Created At my-cos-credential active Tue Mar 2 01:15:33 UTC 2021Para 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 executandoibmcloud resource service-keys. -
Vincule a instância do serviço ao aplicativo, à tarefa ou à função usando as credenciais existentes. Por exemplo, o comando
job binda seguir liga a instância de serviçomy-object-storagecom as credenciais de serviço existentes chamadasmy-cos-credentiala uma tarefa existente que é chamadamyjob.ibmcloud ce job bind --name myjob --service-instance my-object-storage --service-credential my-cos-credentialA tabela a seguir resume as opções que são usadas com o comando
job bindneste exemplo. Consulte o comandoibmcloud ce job bindpara obter mais informações sobre ele e as opções que ele oferece.Opções de comando Opção Descrição --nameO nome da tarefa a ser ligada. Este valor é necessário. --service-instanceEspecifique o nome de uma instância de serviço existente para ligar à tarefa. Este valor é necessário. --service-credentialO nome da credencial de serviço existente para ligar. -
Verifique se as credenciais foram geradas usando o
application get, ojob get, ou ofunction get. No exemplo a seguir, verifique se as credenciais do exemplo anterior foram criadas.ibmcloud ce job get --name myjobExemplo 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
- Na página “Projetos” do Code Engine, acesse o seu projeto.
- 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).
- 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
> Delete para excluir o vínculo de serviço.
Desvinculação de uma instância de serviço com a CLI
-
Encontre a ligação de serviço que você deseja remover com o
application get,job get, ou ofunction get; por exemplo,ibmcloud ce application get --name my-applicationExemplo 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 [...] -
Remova a vinculação de serviço usando os botões
application unbind,job unbind, oufunction unbind.- Para remover uma única ligação, especifique as opções
--namee--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 ``` - Para remover uma única ligação, especifique as opções