Usar os serviços do Google Cloud Platform a partir do Google Kubernetes Engine

Neste documento, mostramos como usar os serviços do Google Cloud Platform (GCP) a partir do Google Kubernetes Engine (GKE). Quando você usa serviços do GCP, como o Cloud Storage ou o Cloud SQL, a partir de aplicativos que são executados no GKE, é preciso configurar seu ambiente para os serviços que você está usando. 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 GCP.
  • 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 Stackdriver 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 utilizar serviços do GCP, como o Cloud Storage por meio das APIs do Cloud, atribua um papel apropriado à 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.

Usar os serviços do GCP por meio de APIs do Cloud

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

Diagrama que mostra uma chave secreta em um objeto "secreto" do Kubernetes, acessado por vários pods

Para ver um exemplo sobre como usar o Cloud Pub/Sub em aplicativos executados no GKE, consulte Autenticação no Cloud Platform com contas de serviço. Siga as mesmas etapas para outros serviços do GCP, como Cloud Storage, BigQuery, Cloud Datastore e Cloud Spanner. No entanto, é preciso escolher um papel apropriado 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 que mostra um aplicativo se comunicando com o Cloud SQL Proxy em um contêiner que por sua vez 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 que mostra um aplicativo em um contêiner que se comunica com o Cloud Load Balancing que por sua vez se comunica com várias instâncias do Compute Engine que executam diferentes serviços

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 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. Em circunstâncias normais, 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 privada e os transfere para serviços externos usando um único endereço IP público.

Enviar registros do aplicativo para o Stackdriver Logging

O Stackdriver Logging é ativado por padrão para permitir que o GKE colete, processe e armazene automaticamente os registros de contêiner e de sistema em um armazenamento de dados dedicado e permanente. O GKE implanta um agente de geração de registros por nó que lê registros de stdout e stderr em pods, conforme mostrado no diagrama a seguir:

Diagrama que mostra vários pods de aplicativo gravando em "stdout" e "stderr", com conteúdo gravado em um agente de geração de registros e, em seguida, no Logging

Portanto, você precisa fazer os aplicativos gravarem mensagens de registro para stdout e stderr. Para saber mais informações sobre como usar o Logging para coletar, consultar e analisar registros de um aplicativo executado no GKE, consulte GKE - Logging.

A seguir

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

Enviar comentários sobre…