Implemente num cluster do Google Kubernetes Engine

Este documento descreve como implementar as suas aplicações em clusters do Google Kubernetes Engine.

O Cloud Deploy permite-lhe implementar as suas cargas de trabalho baseadas em contentores em qualquer cluster do Google Kubernetes Engine. Todas as funcionalidades do Cloud Deploy são suportadas quando implementa em destinos do GKE.

Antes de começar

Neste ficheiro skaffold.yaml, a secção deploy inclui kubectl, o que indica que o Skaffold está a renderizar e a implementar no Kubernetes (GKE). Os manifestos que usa para esta aplicação estão listados abaixo.

Crie a sua configuração de destino

Cada destino pode ser configurado no YAML do pipeline de entrega ou pode estar num ficheiro separado. Além disso, pode configurar mais de um destino no mesmo ficheiro, mas têm de estar em kind: Target secções diferentes.

Os destinos têm de ser definidos no mesmo projeto e região que o pipeline de entrega. No entanto, os clusters para os quais os alvos são implementados podem estar em projetos e regiões diferentes, desde que a conta de serviço tenha acesso a esses projetos.

Na definição do destino, crie uma secção gke para apontar para o cluster do GKE:

gke:
 cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]

Este identificador de recurso do GKE usa os seguintes elementos:

  • [project_name] é o nome do Google Cloud projeto no qual está a executar este cluster.

    O cluster para o qual está a implementar não tem de estar no mesmo projeto que o pipeline de entrega.

  • [location] é a região na qual o cluster foi criado.

  • [cluster_name] é o nome atribuído ao cluster quando foi criado.

    Pode encontrar este nome na lista de clusters do seu projeto, na Google Cloud consola.

    lista de clusters na consola Google Cloud

Segue-se um exemplo de configuração de destino, que aponta para um cluster do GKE:

      apiVersion: deploy.cloud.google.com/v1
      kind: Target
      metadata:
       name: dev
      description: development cluster
      gke:
       cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster

Crie a sua configuração do Skaffold

Esta secção apresenta e explica um exemplo de uma configuração simples do Skaffold para usar quando implementar num cluster do GKE.

Segue-se um exemplo de um ficheiro skaffold.yaml para implementação num cluster do GKE:

apiVersion: skaffold/v4beta7
kind: Config
metadata: 
  name: gke-application
manifests:
  rawYaml:
  - deployment.yaml
deploy:
  kubectl: {}

Usar o Skaffold com o Cloud Deploy descreve mais detalhadamente como usar o Skaffold com o pipeline de entrega.

Prepare os manifestos do Kubernetes

Para implementar a sua aplicação no GKE, fornece ao Cloud Deploy um ou mais manifestos do Kubernetes, que são rendered e, em seguida, aplicados ao cluster ou clusters de destino para implementar a sua aplicação.

Se não tiver esses manifestos, crie-os antes de tentar implementar através de um pipeline de entrega do Cloud Deploy.

Pode usar o Kustomize ou o Helm para ajudar a criar manifestos. Também pode usar o Kustomize ou o Helm se os seus manifestos forem baseados em modelos e precisarem de ser renderizados.

A reunir tudo

Agora que tem os manifestos do Kubernetes, a skaffold.yamlconfiguração, as definições de destino do Cloud Deploy e registou os destinos como recursos do Cloud Deploy, pode invocar o pipeline de fornecimento para criar uma versão e progredir através da progressão dos destinos definidos no pipeline.

Implemente através de um proxy

Pode especificar um proxy para o cluster do GKE de destino. Esta opção destina-se a organizações configuradas para aceder aos respetivos clusters apenas através de um proxy HTTP.

Para tal, adicione uma propriedade proxyUrl à secção gke na configuração de destino:

gke:
 cluster: projects/my-app/locations/us-central1/clusters/my-app-dev-cluster
 proxyUrl: [URL]

Onde URL é o URL do proxy.

Implemente num cluster privado

Pode implementar a sua aplicação num cluster do GKE privado, usando uma de três opções:

Use um ponto final de DNS

Esta é a forma mais simples de estabelecer ligação a um cluster privado.

  1. Ative o ponto final baseado em DNS no seu cluster.

  2. Defina dnsEndpoint como true em gke na configuração do alvo.

    Se o cluster não tiver um ponto final baseado em IP configurado, pode ignorar este passo. O Cloud Deploy liga-se ao ponto final de DNS por predefinição, uma vez que é o único ponto final do plano de controlo.

Use uma rede de nuvem privada virtual

Pode configurar um destino para implementação num cluster privado do GKE ligado a uma rede de nuvem privada virtual:

  1. Crie o seu cluster privado

    Um cluster privado é um cluster nativo de VPC cujos nós e pods estão isolados por predefinição da Internet pública.

    Se planeia usar o IP interno do destino do cluster privado, defina internalIp como true em gke na configuração do destino.

  2. No Cloud Build, crie um conjunto de trabalhadores privado que pode usar para implementar neste cluster privado.

  3. Configure o ambiente de execução para usar esse conjunto privado.

    Tem de usar este conjunto para o RENDER. Também pode usá-lo para DEPLOY e para VERIFY. Segue-se um exemplo que usa RENDER e DEPLOY:

    executionConfigs:
    - usages:
      - RENDER
      - DEPLOY
      workerPool: "projects/p123/locations/us-central1/workerPools/wp123"
    

Consulte os artigos Aceda a clusters privados do GKE a partir de pools privadas do Cloud Build através do serviço de identidade para o GKE e Aceda a clusters privados do GKE com pools privadas do Cloud Build para mais informações.

Considerações sobre o projeto e as autorizações

Pode configurar um destino para usar um conjunto de trabalhadores privado que pode ser implementado num cluster privado. No entanto, existem alguns aspetos a ter em atenção se os recursos estiverem em projetos diferentes.

  • Quando a implementação na nuvem e o conjunto de trabalhadores estão em projetos separados

Para comunicar com um pool privado que tenha acesso a uma VPC e que esteja num projeto diferente do seu destino, o agente de serviço do Cloud Deploy precisa de autorizações suficientes para comunicar com esse projeto.

A conta de serviço de execução também precisa de autorizações para aceder ao contentor do Cloud Storage.

  • Quando o conjunto de trabalhadores e o cluster estão em projetos separados

Se o cluster privado do GKE estiver num projeto diferente do pool de trabalhadores privado, a conta de serviço de execução requer autorizações suficientes para comunicar com o projeto no qual o cluster se encontra.

Use os destinos e a gateway de ligação do GKE Enterprise

Pode configurar um destino para implementação num cluster do GKE privado através dos destinos do Anthos e do gateway de ligação.

Esta abordagem não requer que use um Virtual Private Cloud nem ligações de rede privada virtual.

O que se segue?