⚡️ Laboratório prático para criar e destruir clusters Kubernetes usando Terraform, com notificações via Discord e integração com Terraform Cloud.
Este repositório contém um laboratório prático para provisionar um cluster Kubernetes em nuvem usando Terraform. O objetivo é experimentar o provisionamento automatizado, integração com pipelines (GitHub Actions) e notificações via Discord, simulando um ambiente real de trabalho e controle de custos.
- Conta na DigitalOcean
- Token da API
- Conta na HashiCorp Cloud Platform (HCP)
- Token da API
- Backend remoto configurado (HCP Cloud)
- Webhook do Discord para notificações
- Crie uma organização e um workspace no Terraform Cloud.
- Gere um API Token em:
Account Settings > Tokens > Create an API token
Link direto para criar token - Adicione o token como secret no GitHub:
TF_API_TOKEN
No seu main.tf
:
terraform {
cloud {
organization = "joaopedrordeo" # Nome da organização criada
workspaces {
name = "my-kubernetes-cluster-dg" # Nome do workspace criado
}
}
}
No workflow do GitHub Actions:
env:
TF_TOKEN_app_terraform_io: ${{ secrets.TF_API_TOKEN }}
TF_VAR_do_token: ${{ secrets.DO_TOKEN }}
- Crie um servidor e um canal de texto no Discord.
- Vá em Configurações do canal > Integrações > Webhooks > Novo Webhook.
- Copie o URL do webhook e adicione como secret no GitHub:
DISCORD_WEBHOOK
.
- No PowerShell:
$env:KUBECONFIG = ".\kubeconfig.yaml"
- No Linux:
export KUBECONFIG=./kubeconfig.yaml
terraform output -raw kube_config > kubeconfig.yaml # Extrai o kubeconfig do output do Terraform
terraform plan -no-color -input=false # Gera o plano sem interação
terraform apply -auto-approve -input=false # Aplica sem interação
- Fazer o arquivo de configuração
.tfvars
mudar o nome conforme o environment
Feito por João Pedro Ramos