Como usar os serviços do Google Cloud no Google Kubernetes Engine

Neste documento, mostramos como usar os serviços do Google Cloud no Google Kubernetes Engine (GKE). Ao usar os serviços do Google Cloud, como o Cloud Storage ou o Cloud SQL, em aplicativos executados no GKE, você precisa configurar o ambiente para os serviços usados. Neste documento, explicamos os padrões de arquitetura comuns e as tarefas a eles associadas e fornecemos links para a documentação que explica as configurações usadas como exemplo.

Objetivos

  • Configurar uma conta de serviço e uma chave secreta para usar os serviços do Google Cloud.
  • Configurar a imagem do Cloud SQL Proxy Docker para usar um banco de dados do Cloud SQL.
  • Configurar o balanceamento de carga interno para usar os serviços personalizados que são executados nas VMs do Compute Engine.
  • Configurar um gateway NAT para usar serviços externos que exigem um endereço IP fixo.
  • Usar o Cloud Logging para gravar os registros do aplicativo.

Noções básicas sobre tarefas comuns

O diagrama a seguir mostra padrões de arquitetura comuns no uso de outros serviços do GKE.

Diagrama de padrões de arquitetura comuns para usar os serviços do GCP com o GKE

Configure-os com as tarefas a seguir:

  • Para usar os serviços do Google Cloud, como o Cloud Storage por meio das APIs do Cloud, atribua um papel adequado à conta de serviço e forneça a chave secreta associada ao seu aplicativo usando o objeto secret do Kubernetes.
  • Para utilizar o Cloud SQL, atribua um papel apropriado à conta de serviço e adicione o Cloud SQL Proxy ao pod usando o padrão de pod de arquivo secundário.
  • Para utilizar serviços personalizados que são executados em VMs do Compute Engine de maneira escalonável, configure o balanceamento de carga interno.
  • Para utilizar serviços externos que exigem um endereço IP fixo, configure um gateway NAT.
  • Para gravar os registros do aplicativo no Logging, configure o aplicativo para gravar as mensagens de registro na saída padrão (stdout) e no erro padrão (stderr).

As seções a seguir apresentam links para as etapas de configuração.

Como usar os serviços do Google Cloud por meio de APIs do Cloud

É possível usar os serviços do Google Cloud por meio das APIs do Cloud usando uma conta de serviço e uma chave secreta. O Kubernetes oferece o tipo de recurso secret para armazenar credenciais no cluster e anexá-las aos pods do aplicativo, conforme mostrado no diagrama a seguir:

Diagrama que mostra uma chave secreta em um objeto

Para ver um exemplo que mostra como usar o Pub/Sub em aplicativos executados no GKE, consulte Como autenticar no Cloud Platform com contas de serviço. É possível aplicar as mesmas etapas para outros serviços do Google Cloud, como Cloud Storage, BigQuery, Datastore e Spanner. No entanto, é preciso escolher um papel adequado para a conta de serviço e para o serviço, e talvez seja necessário executar etapas relacionadas especificamente a cada um dos serviços.

Uma exceção a essa abordagem é o Cloud SQL, que precisa de uma abordagem diferente. Isso porque o Cloud SQL exige o cliente do Cloud SQL Proxy para acessar com segurança um banco de dados, conforme explicado na próxima seção.

Usar o Cloud SQL com o Cloud SQL Proxy

Para acessar uma instância do Cloud SQL de um aplicativo executado no GKE, use a imagem do Cloud SQL Proxy Docker. Anexe a imagem ao pod de aplicativo para que o aplicativo possa usar o cliente do Cloud SQL Proxy no mesmo pod. O cliente do Cloud SQL Proxy transfere com segurança os dados entre o aplicativo e a instância do Cloud SQL, conforme mostrado no diagrama a seguir:

Diagrama de um aplicativo se comunicando com o Cloud SQL Proxy em um contêiner que usa uma conexão segura para se comunicar com o Cloud SQL

Para receber informações sobre como anexar a imagem do Cloud SQL Proxy ao aplicativo, consulte Cloud SQL: conectar-se a partir do GKE.

Usar serviços externos por meio de balanceamento de carga interno

Para acessar serviços externos a partir de um aplicativo executado no GKE, use serviços de nome internos ou externos para que o aplicativo possa descobrir o endpoint do serviço. Para uma explicação sobre três maneiras de configurar serviços de nomes, consulte Conectar-se a serviços externos de dentro de um cluster.

Se o serviço externo for executado em instâncias do Compute Engine, use o balanceamento de carga interno para tornar o serviço externo redundante e dimensionável. O diagrama a seguir ilustra essa abordagem.

Diagrama de um aplicativo em um contêiner se comunicando com o Cloud Load Balancing, que se comunica com várias instâncias do Compute Engine com diferentes serviços em execução

Para informações sobre a configuração do balanceamento de carga interno para serviços de back-end que executam instâncias do Compute Engine, consulte Como configurar o balanceamento de carga interno.

Usar serviços externos por meio de um gateway NAT

Os nós de VM que hospedam os pods de aplicativos enviam pacotes de saída de aplicativos executados no GKE. Os nós de VM têm endereços IP efêmeros que são usados como o endereço IP de origem dos pacotes de saída. Por causa disso, o endereço IP de origem do aplicativo pode mudar dependendo do nó da VM que envia os pacotes. Como resultado, os serviços externos recebem pacotes de vários endereços IP de origem, embora os pacotes sejam enviados do mesmo aplicativo. Normalmente, isso não é um problema. No entanto, pode ser necessário enviar pacotes de um endereço IP fixo porque alguns serviços externos são configurados para aceitar pacotes apenas de uma única fonte.

Nesse cenário, use uma instância do Compute Engine que funcione como um gateway NAT. É possível enviar pacotes para serviços externos com um endereço de IP fixo criando regras de roteamento personalizadas para o gateway NAT:

Diagrama que mostra o GKE usando o roteamento personalizado para se comunicar com um gateway NAT que está na frente de serviços externos

Para mais informações, consulte Como usar um gateway NAT com o GKE e Criar gateways NAT de alta disponibilidade e grande largura de banda. Esses artigos explicam como implantar a instância do gateway NAT e criar regras de roteamento personalizadas.

É possível aplicar a mesma arquitetura ao usar um cluster particular em que os nós da VM têm apenas endereços IP privados. Nesse caso, o gateway NAT recebe pacotes de uma sub-rede particular e os transfere para serviços externos usando um endereço IP público.

Como monitorar clusters usando o Kubernetes Engine Monitoring

O Kubernetes Engine Monitoring foi projetado para monitorar clusters do Google Kubernetes Engine. Ele gerencia o Cloud Monitoring e o Cloud Logging juntos. Também apresenta um console que fornece um painel personalizado para clusters do GKE.

Para mais informações sobre o Kubernetes Engine Monitoring, consulte a visão geral do Kubernetes Engine Monitoring.

A seguir