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 é uma implementação do código aberto da API Open Service Broker (OSB) hospedada no Google Cloud. Ele simplifica a entrega de serviços do Google Cloud para aplicativos executados no Kubernetes. Ao criar recursos do Google Cloud e gerenciar suas permissões correspondentes, o agente de serviços facilita o consumo de serviços do Google Cloud 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 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 Google Cloud disponíveis por meio do agente de serviços são:

É possível encontrar amostras para cada um desses serviços no repositório do Google Cloud GitHub.

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 Pub/Sub ou o Cloud Spanner. Os serviços do Google Cloud expõem APIs que podem ser invocadas 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 Cloud 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 Google Cloud, como o 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 Google Cloud 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 Google Cloud para instruções sobre como listar serviços e planos.

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

No diagrama abaixo, veja a ordem das interações entre o catálogo de serviços do Kubernetes e o agente de serviços no contexto da API Cloud IAM. Contas de serviço são necessárias para autenticar os recursos do Google Cloud.

  1. Provisione uma instância de serviço de uma conta de serviço do Cloud IAM.
  2. O Google Cloud 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 Cloud IAM.
  5. O Google Cloud gera uma chave particular para a conta de serviço e a retorna para a instância da conta de serviço do Cloud IAM.
  6. O agente de serviços retorna a chave privada da conta de serviço do Cloud 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 Google Cloud 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 Google Cloud

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 Google Cloud oferecido pelo agente de serviços, como o Pub/Sub.

  1. Provisione uma instância de serviço com um plano de serviços. Por exemplo, é possível provisionar o serviço Pub/Sub com o Plano 1.
  2. O Google Cloud provisiona uma nova instância do recurso no projeto. Para o Pub/Sub, o Google Cloud 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 Pub/Sub, isso inclui permissões de editores ou assinantes do Cloud IAM.

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

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

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

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

    • Permissões do Cloud 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 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 Google Cloud 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 Google Cloud 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 Google Cloud exclui as permissões do Cloud 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 Google Cloud exclui a instância do serviço. No Pub/Sub, ele exclui o tópico do 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