Agente de serviços do Google Cloud Platform (Beta, suspenso)

Nesta página, fornecemos 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 do código aberto da API Open Service Broker (OSB) 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, é possível 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 de catálogo de serviços do GKE. Depois de instalar o catálogo de serviços no cluster e adicionar o agente de serviços, ele faz download de uma lista de serviços e planos disponíveis. Então, é possível criar instâncias de planos e atribuí-las com as permissões necessárias (vinculações). Os aplicativos no cluster agora podem acessar instâncias de serviço criadas por meio das APIs nativas. Os serviços do GCP disponíveis via agente de serviços são estes:

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

Conceitos

A API Service Broker 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 nome deles. 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 do 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

No diagrama a seguir, ilustramos 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.

As 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 privada da conta de serviço do IAM e um recurso ServiceBinding é criado.
  7. O catálogo de serviços armazena a chave privada da conta de serviço em um secret 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 do 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 do IAM no próprio recurso, como seria o caso de uma instância de serviço do Spanner.

    • Permissões do 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 do 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 um secret especificado 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