Agente de serviços do Google Cloud Platform

Esta página fornece uma visão geral do agente de serviços do Google Cloud Platform.

Introdução

O agente de serviços do Google Cloud Platform (GCP) é uma implementação da API Open Service Broker (OSB) de código aberto hospedada no GCP. Ele simplifica a entrega de serviços do GCP para aplicativos executados no Kubernetes. Ao criar recursos do GCP e gerenciar suas permissões correspondentes, o agente de serviços facilita o consumo de serviços do GCP de um cluster do Kubernetes. Por exemplo, você pode provisionar uma instância do serviço Cloud Pub/Sub de dentro do seu cluster GKE e disponibilizá-la para seus aplicativos.

O agente de serviços é registrado sobre o complemento catálogo de serviços do GKE. Depois que você instala o catálogo de serviços no seu cluster e adiciona o agente de serviços, ele faz o download de uma lista de serviços e planos disponíveis. Agora você pode criar instâncias de planos e atribuí-las com as permissões necessárias (vinculações). Os aplicativos no seu cluster agora podem acessar instâncias de serviço criadas por meio das próprias APIs nativas. Os serviços do GCP disponíveis por meio do agente de serviços são:

Você encontra amostras de cada um desses serviços no repositório GitHub do Google Cloud Platform.

Conceitos

A API Agente de Serviços do Google Cloud Platform usa vários conceitos de OSB:

  • Aplicativo: qualquer parte do software que possa usar ou vincular-se a uma instância de serviço.
  • Plataforma: o software que gerencia o ambiente de nuvem no qual os aplicativos são provisionados e os agentes de serviços são registrados. Os usuários não provisionam serviços diretamente de agentes de serviços. Em vez disso, eles se apoiam na plataforma para gerenciar os serviços e interagir com os agentes de serviços em seu nome. A plataforma do agente de serviços do Google Cloud Platform é o catálogo de serviços do Kubernetes.
  • Serviço: uma oferta de software gerenciado, como o Google Cloud Pub/Sub ou o Spanner. Os serviços do GCP expõem APIs que podem ser chamadas para executar determinadas ações.
  • Vinculação de serviço: a capacidade de usar uma instância de serviço. Essa solicitação pode se referir a um aplicativo ou outra entidade que queira usar a instância de serviço. No catálogo de serviços do Kubernetes, as informações retornadas em uma chamada de vinculação são colocadas em uma chave secreta do Kubernetes para o namespace especificado. O agente de serviços geralmente usa uma chamada de vinculação de criação para definir permissões de IAM em uma instância de serviço.
  • Agente de serviços: os agentes de serviços gerenciam o ciclo de vida dos serviços. O catálogo de serviços do Kubernetes interage com os agentes de serviços para provisionar e gerenciar instâncias e vinculações de serviço.
  • Instância de serviço: uma instanciação de uma oferta de serviço.
  • Oferta de serviço: a classe de um serviço compatível com um agente de serviços.
  • Plano de serviços: a representação de diferentes opções ou níveis para uma determinada oferta de serviço. Isso pode afetar o custo.

Arquitetura

Os diagramas a seguir fornecem uma visão geral da arquitetura OSB e do fluxo entre o catálogo de serviços e o agente de serviços para provisionar uma instância de serviço e uma vinculação de serviço.

Visão geral

O diagrama a seguir ilustra a arquitetura do agente de serviços.

O catálogo de serviços é uma API de extensão do Kubernetes que permite que aplicativos executados em um cluster do Kubernetes usem serviços do GCP, como o Cloud Pub/Sub. O catálogo de serviços se comunica com o agente de serviços para receber uma lista de serviços e planos disponíveis, que podem então ser provisionados como instâncias de serviço.

Informações sobre uma instância de serviço são armazenadas nos recursos ServiceInstance e ServiceBinding. Depois que uma instância de serviço é provisionada, as credenciais de acesso são compartilhadas com o aplicativo por meio do Kubernetes Secrets.

Como listar serviços e planos

  1. Depois que o recurso ClusterServiceBroker do GCP tiver sido instalado no catálogo de serviços, esse catálogo se conectará ao agente de serviços para solicitar a lista de serviços e planos disponíveis.
  2. Os detalhes do serviço são armazenados como recursos ClusterServiceClass e os planos correspondentes são armazenados em recursos ClusterServicePlan.

Consulte Como descobrir serviços e planos do GCP para instruções sobre como listar serviços e planos.

Instância da conta de serviço e fluxo de vinculação

O diagrama abaixo ilustra a ordem das interações entre o Catálogo de Serviços do Kubernetes e o Agente de Serviços no contexto do serviço da Conta de Serviço do Cloud IAM. Contas de serviço são necessárias para autenticar os recursos do GCP.

  1. Provisione uma instância de serviço de uma conta de serviço do Cloud IAM.
  2. O GCP provisiona uma nova conta de serviço. Não há permissões neste momento.
  3. O agente de serviços retorna uma resposta de provisionamento de instância, que é armazenada em um recurso ServiceInstance.
  4. Provisione a vinculação de serviço para a instância da conta de serviço do IAM.
  5. O GCP gera uma chave particular para a conta de serviço e a retorna para a instância da conta de serviço do IAM.
  6. O agente de serviços retorna a chave particular da conta de serviço do IAM e um recurso ServiceBinding é criado.
  7. O catálogo de serviços armazena a chave particular da conta de serviço em uma chave secreta em um namespace especificado.
  8. É possível usar a conta de serviço para atribuir papéis a outros recursos do GCP ao criar novas vinculações usando essa conta de serviço como entrada para a chamada de vinculação.

Fluxo de instância de serviço e vinculação do GCP

No diagrama abaixo, veja a ordem das interações entre o catálogo de serviços e o agente de serviços no contexto de outro serviço do GCP oferecido pelo agente de serviços, como o Cloud Pub/Sub.

  1. Provisione uma instância de serviço com um plano de serviços. Por exemplo, é possível provisionar o serviço Cloud Pub/Sub no Plano 1.
  2. O GCP provisiona uma nova instância do recurso no projeto. Para o Cloud Pub/Sub, o GCP provisiona um novo tópico do Pub/Sub.
  3. O agente de serviços retorna uma resposta de provisionamento de instância, que é armazenada em um recurso ServiceInstance.
  4. Provisione a vinculação de serviço para a instância de serviço com parâmetros definidos pelo plano de serviços. Para o Cloud Pub/Sub, isso inclui permissões de editores ou assinantes do IAM.

    • Especifique a conta de serviço a ser usada.

    • Especifique os papéis de IAM a serem atribuídos à conta de serviço.

  5. Defina as permissões de IAM para a conta de serviço. Dependendo do tipo de recurso, elas podem ser:

    • permissões de IAM no próprio recurso, como seria o caso de uma instância de serviço do Spanner;

    • permissões de IAM para envolvidos no projeto para os recursos que não aceitam permissões específicas do recurso.

  6. O agente de serviços retorna as informações de conexão para o serviço e um recurso ServiceBinding é criado.

  7. O catálogo de serviços armazena as informações de conexão para o serviço em uma chave secreta especificada em um namespace.

  8. As informações de vinculação de serviço, que incluem as credenciais de conexão, são compartilhadas com o aplicativo usando uma chave secreta do Kubernetes.

  9. O aplicativo usa as informações de vinculação para se conectar e acessar o serviço, como o Cloud Pub/Sub.

Opcional: é possível criar vinculações extras usando diferentes contas de serviço e diferentes conjuntos de papéis, dentro do mesmo namespace para a mesma instância de serviço. Isso pode ajudar diferentes aplicativos no mesmo namespace do Kubernetes a usar o mesmo tópico do Pub/Sub.

Consulte Como usar um serviço do GCP para instruções sobre como provisionar e vincular a uma instância de serviço.

Fluxo de desprovisionamento e limpeza

No diagrama abaixo, veja como desprovisionar um serviço quando não é mais necessário. Isso é necessário para evitar cobranças na sua conta do GCP por um serviço que não está mais em uso.

  1. Exclua a vinculação de serviço. O catálogo de serviços envia uma solicitação ao agente de serviços para desvincular o serviço.
  2. O GCP exclui as permissões de IAM da instância de serviço.
  3. O agente de serviços retorna uma resposta de exclusão de vinculação.
  4. Exclua a chave secreta do Kubernetes que contém as informações de vinculação e conexão de serviço.
  5. Exclua a instância do serviço. O catálogo de serviços envia uma solicitação ao agente de serviços para desprovisionar o serviço.
  6. O GCP exclui a instância do serviço. No Cloud Pub/Sub, ele exclui o tópico Pub/Sub.
  7. O agente de serviços retorna uma resposta de desprovisionamento.

Consulte Limpeza do catálogo de serviços para instruções sobre como excluir a instância e a vinculação de serviço.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine