Este documento descreve um conjunto integrado de Google Cloud ferramentas
para configurar um sistema de desenvolvimento, para integração contínua (CI) e
para entrega contínua (CD) que pode usar para desenvolver e implementar aplicações no
Google Kubernetes Engine (GKE).
Este documento de arquitetura de referência destina-se a programadores de software e operadores. Parte do princípio de que está familiarizado com a execução de comandos gcloud
no
Google Cloud e com a implementação de contentores de aplicações no
GKE.
Arquitetura
O diagrama seguinte mostra os recursos usados nesta arquitetura:
Esta arquitetura inclui os seguintes componentes:
- Cloud Code como um espaço de trabalho de desenvolvimento. Como parte deste espaço de trabalho, pode ver alterações no cluster de desenvolvimento, que é executado no minikube. Executa o Cloud Code e o cluster minikube no Cloud Shell. O Cloud Shell é um ambiente de programação online acessível a partir do seu navegador. Tem recursos de computação, memória, um ambiente de programação integrado (IDE) e o Cloud Code instalado.
Cloud Build para criar e testar a aplicação: a parte "CI" do pipeline
Esta parte do pipeline inclui as seguintes ações:
- O Cloud Build monitoriza as alterações ao repositório de origem, usando um acionador do Cloud Build.
- Quando uma alteração é confirmada no ramo principal, o acionador do Cloud Build faz o seguinte:
- Reconstrói o contentor da aplicação.
- Coloca artefactos de compilação num contentor do Cloud Storage.
- Coloca o contentor da aplicação no Artifact Registry.
- Executa testes no contentor.
- Chama o Cloud Deploy para implementar o contentor no ambiente de preparação. Neste exemplo, o ambiente de preparação é um cluster do Google Kubernetes Engine.
- Se a compilação e os testes forem bem-sucedidos, pode usar o Cloud Deploy para promover o contentor do teste para a produção.
Cloud Deploy para gerir a implementação, ou seja, a parte "CD" do pipeline. Nesta parte do pipeline, o Cloud Deploy faz o seguinte:
- Regista um pipeline de fornecimento e segmentações. Os destinos representam os clusters de preparação e produção.
- Cria um contentor do Cloud Storage e armazena a origem de renderização do Skaffold e os manifestos renderizados nesse contentor.
- Gera um novo lançamento para cada alteração do código fonte.
- Implementa a aplicação no ambiente de produção. Para esta implementação em produção, um operador (ou outra pessoa designada) aprova manualmente a implementação. Nesta arquitetura, o ambiente de produção é um cluster do Google Kubernetes Engine.
Nesta arquitetura, a configuração é partilhada entre os ambientes de desenvolvimento, preparação e produção através do Skaffold, uma ferramenta de linha de comandos que facilita o desenvolvimento contínuo para aplicações nativas do Kubernetes.
Google Cloud Armazena o código fonte da aplicação no GitHub.
Esta arquitetura usa produtos Google para a maioria dos componentes do sistema, com o Skaffold a permitir a integração do sistema. Google Cloud Uma vez que o Skaffold é de código aberto, pode usar estes princípios para criar um sistema semelhante usando uma combinação de componentes Google Cloudinternos e de terceiros. A modularidade desta solução significa que pode adotá-la de forma incremental como parte do seu pipeline de desenvolvimento e implementação.
Exemplos de utilização
Seguem-se as principais funcionalidades deste sistema integrado:
Desenvolva e implemente mais rapidamente.
O ciclo de desenvolvimento é eficiente porque pode validar as alterações no espaço de trabalho do programador. A implementação é rápida porque o sistema de CI/CD automatizado e a maior paridade entre os ambientes permitem-lhe detetar mais problemas quando implementa alterações na produção.
Tire partido da maior paridade entre o desenvolvimento, o teste e a produção.
Os componentes deste sistema usam um conjunto comum de Google Cloud ferramentas.
Reutilize as configurações nos diferentes ambientes.
Esta reutilização é feita com o Skaffold, que permite um formato de configuração comum para os diferentes ambientes. Também permite que os programadores e os operadores atualizem e usem a mesma configuração.
Aplique a governação no início do fluxo de trabalho.
Este sistema aplica testes de validação para a governação na produção e no sistema de IC e ambiente de desenvolvimento. A aplicação da governação no ambiente de desenvolvimento permite encontrar e corrigir problemas mais cedo.
Deixe que as ferramentas com opiniões geram o fornecimento de software.
A entrega contínua é totalmente gerida, separando as fases do pipeline de DC dos detalhes da renderização e implementação.
Implementação
Para implementar esta arquitetura, consulte o artigo Desenvolva e implemente apps contentorizadas através de um pipeline de CI/CD.
O que se segue?
- Para saber como implementar numa instância privada do GKE, consulte o artigo Implementação num cluster privado numa rede de nuvem virtual privada.
- Para obter informações sobre como implementar, melhorar e medir a automatização da implementação, consulte o artigo Automatização da implementação.