Um projeto com pipe line CI-CD para implantar projetos na Google Cloud Platform automatizado com Terraform.
- Sobre o projeto
- 1. Pré-requisitos
- 2. Criando o Cluster no GCP
- 3. Cert-Manager
- 4. Ingress e Cluster Issuer
- 5. Pipeline CI-CD
Esse projeto foi desenvolvido como base de estudo e aplicação prática voltada para produção. Neste projeto vamos (1) criar uma conta e um novo projeto no GCP, (2) criar um cluster kubernetes GKE usando o Terraform, (3) criar certificados tls e manipular o DNS e (4) criar um balanceador de carga para nossos serviços kubernetes, (5) implantar nosso projeto automaticatimente usando 'Git Actons'.
- Instale o Terraform e inicialize-o em seu ambiente.
- Instale a CLI gcloud e configure-o em sua máquina.
- Construa a infraestrutura do projeto no GCP.
- Certifique-se de que você está está logado no gcloud CLI e conectado com seu cluster GKE.
gcloud init
gcloud auth login
gcloud container clusters get-credentials NOME_DO_CLUSTER --project=SEU_PROJETO --zone=SUA_ZONA
Com o cluster e o projeto criados e selecionados no seu terminal, crie o novo cluster de forma automatizada usando Terraform:
cd gcp/terraform
terraform init
terraform apply
Digite "yes" para prosseguir com a criação do seu cluster. Obs.: Isso pode demorar um pouco.
-
Siga os passo do guia de instalação do cert-manager usando o kubectl.
-
Aguarde até que todos os pods do cert-manager estejam com o status "Running".
kubectl get pods --namespace cert-manager --watch
-
Siga os passo do guia de instalação do ingress no GCE-GKE.
-
Para veririfcar o estado dos serviços do ingress, execute o comando:
kubectl get service ingress-nginx-controller --namespace=ingress-nginx
-
Insira o ip do ingress-nginx-controller no ipv4 do seu seu domínio. Caso precise de um gerenciador de domínios e DNS, utilize o Cloudflare.
-
Aplique o manifesto do cluster-issuer e ingress:
kubectl apply -f gcp/k8s/ingress/cluster-issuer.yaml
kubectl apply -f gcp/k8s/ingress/ingress.yaml
- Recuperar certificados e aguardar status = true:
kubectl get certificates --watch
- Detalhar certificado:
kubectl describe certificate letsencrypt-tls
As pipe lines de CI-CD serão acionadas automaticamente quando um novo commit na branch 'master' dos respectivos projetos são enviados. Esse gatilho inicia um novo build da imagem docker no projeto e faz o apply no GKE com a nova versão do projeto.