Aula 11 – K8S – Deploy na Digital Ocean com Terraform
Aula 11 – K8S – Deploy na Digital Ocean com Terraform
Voltar para página principal do blog
Todas as aulas desse curso
Aula 10 Aula 12
Redes Sociais do Código Fluente:
Scarlett Finch
Scarlett Finch é uma influenciadora virtual criada com IA.
Ela é 🎤 cantora e 🎶compositora pop britânica , 24 anos de idade, adora o Brasil e em especial o Rio de Janeiro.
Siga a Scarlett Finch no Instagram:
Conecte-se comigo!
LinkedIn: Fique à vontade para me adicionar no LinkedIn.
Ao conectar-se comigo, você terá acesso a atualizações regulares sobre desenvolvimento web, insights profissionais e oportunidades de networking no setor de tecnologia.
GitHub: Siga-me no GitHub para ficar por dentro dos meus projetos mais recentes, colaborar em código aberto ou simplesmente explorar os repositórios que eu contribuo, o que pode ajudar você a aprender mais sobre programação e desenvolvimento de software.
Recursos e Afiliados
Explorando os recursos abaixo, você ajuda a apoiar nosso site.
Somos parceiros afiliados das seguintes plataformas:
- https://heygen.com/ – Eleve a produção de seus vídeos com HeyGen! Com esta plataforma inovadora, você pode criar vídeos envolventes utilizando avatares personalizados, ideal para quem busca impactar e conectar com audiências em todo o mundo. HeyGen transforma a maneira como você cria conteúdo, oferecendo ferramentas fáceis de usar para produzir vídeos educativos, demonstrações de produtos e muito mais. Descubra o poder de comunicar através de avatares interativos e traga uma nova dimensão para seus projetos. Experimente HeyGen agora e revolucione sua forma de criar vídeos!
- letsrecast.ai – Redefina a maneira como você consome artigos com Recast. Esta plataforma transforma artigos longos em diálogos de áudio que são informativos, divertidos e fáceis de entender. Ideal para quem está sempre em movimento ou busca uma forma mais conveniente de se manter informado. Experimente Recast agora.
- dupdub.com – Explore o universo do marketing digital com DupDub. Esta plataforma oferece ferramentas inovadoras e soluções personalizadas para elevar a sua estratégia de marketing online. Ideal para empresas que buscam aumentar sua visibilidade e eficiência em campanhas digitais. Descubra mais sobre DupDub.
- DeepBrain AI Studios – Revolucione a criação de conteúdo com a tecnologia de inteligência artificial da DeepBrain AI Studios. Esta plataforma avançada permite que você crie vídeos interativos e apresentações utilizando avatares digitais gerados por IA, que podem simular conversas reais e interações humanas. Perfeito para educadores, criadores de conteúdo e empresas que querem inovar em suas comunicações digitais. Explore DeepBrain AI Studios.
- Audyo.ai – Transforme a maneira como você interage com conteúdo auditivo com Audyo.ai. Esta plataforma inovadora utiliza inteligência artificial para criar experiências de áudio personalizadas, melhorando a acessibilidade e a compreensão de informações através de podcasts, transcrições automáticas e síntese de voz avançada. Ideal para profissionais de mídia, educadores e qualquer pessoa que deseje acessar informações auditivas de maneira mais eficiente e envolvente. Descubra Audyo.ai e suas possibilidades.
- Acoust.io – Transforme sua produção de áudio com Acoust.io. Esta plataforma inovadora fornece uma suite completa de ferramentas para criação, edição e distribuição de áudio, ideal para artistas, produtores e empresas de mídia em busca de excelência e inovação sonora. Acoust.io simplifica o processo de levar suas ideias à realidade, oferecendo soluções de alta qualidade que elevam seus projetos de áudio. Experimente Acoust.io agora e descubra um novo patamar de possibilidades para seu conteúdo sonoro.
- Hostinger – Hospedagem web acessível e confiável. Ideal para quem busca soluções de hospedagem de sites com excelente custo-benefício e suporte ao cliente robusto. Saiba mais sobre a Hostinger.
- Digital Ocean – Infraestrutura de nuvem para desenvolvedores. Oferece uma plataforma de nuvem confiável e escalável projetada especificamente para desenvolvedores que precisam de servidores virtuais, armazenamento e networking. Explore a Digital Ocean.
- One.com – Soluções simples e poderosas para o seu site. Uma escolha ideal para quem busca registrar domínios, hospedar sites ou criar presença online com facilidade e eficiência. Visite One.com.
Educação e Networking
Amplie suas habilidades e sua rede participando de cursos gratuitos e comunidades de desenvolvedores:
- Digital Innovation One – Cursos gratuitos com certificado.
- Workover – Aprenda Python3 gratuitamente.
- Comunidades de desenvolvedores para networking:
Canais do Youtube
Explore nossos canais no YouTube para uma variedade de conteúdos educativos e de entretenimento, cada um com um foco único para enriquecer sua experiência de aprendizado e lazer.
Toti
Toti: Meu canal pessoal, onde posto clips artesanais de músicas que curto tocar, dicas de teoria musical, entre outras coisas.
Lofi Music Zone Beats
Lofi Music Zone Beats: O melhor da música Lofi para estudo, trabalho e relaxamento, criando o ambiente perfeito para sua concentração.
Backing Track / Play-Along
Backing Track / Play-Along: Acompanhe faixas instrumentais para prática musical, ideal para músicos que desejam aprimorar suas habilidades.
Código Fluente
Código Fluente: Aulas gratuitas de programação, devops, IA, entre outras coisas.
Putz!
Putz!: Canal da banda Putz!, uma banda virtual, criada durante a pandemia com mais 3 amigos, Fábio, Tatá e Lula.
Scarlett Finch
Scarlett Finch: Cantora e influenciadora criada com IA.
PIX para doações
Download do Terraform
Aula 11 – K8S – Deploy na Digital Ocean com Terraform
Código da Aula no Github: Link
Introdução
Nessa aula criaremos um cluster K8S na Digital Ocean e colocaremos a aplicação FlappyBird que usamos na aula 09, para rodar no cluster, usando o Terraform, que começamos a ver na aula passada.
Crie sua conta na Digital Ocean
Faça seu cadastro através desse link: Digital Ocean para ganhar $200.00 dólares de crédito para usar na plataforma.
Configurar o ambiente DigitalOcean
- Obter o Token da API DigitalOcean:
- Acesse o Painel DigitalOcean.
- Gere um novo token de acesso pessoal (Personal Access Token) e copie-o.
- Instalar a CLI do DigitalOcean (
doctl
):- Siga as instruções para instalar a CLI da DigitalOcean no seu sistema conforme necessário.
Por exemplo, para fazer download da versão mais recente do doctl
no windows, execute:
Em seguida, extraia o binário executando:
Por fim, em um terminal do PowerShell aberto como administrador, mova o binário doctl
para um diretório dedicado e adicione-o ao caminho do seu sistema executando:
As instruções para instalação em outros sistemas operacionais estão aqui.
Verifique a versão
# Verificar se o doctl foi instalado corretamente
doctl version
Autenticar usando seu token de API
doctl auth init --access-token your_digitalocean_api_token_here
Criando o Cluster na Digital Ocean
Configurar os arquivos Terraform
Arquivo main.tf
O main.tf
é o principal arquivo de configuração do Terraform onde você define os recursos que deseja criar. Neste caso, estamos criando um cluster Kubernetes na DigitalOcean.
./main.tf
resource "digitalocean_kubernetes_cluster" "example" {
name = var.cluster_name
region = var.region
version = "latest"
node_pool {
name = "default-pool"
size = var.node_size
node_count = var.node_count
}
}
output "cluster_name" {
value = digitalocean_kubernetes_cluster.example.name
}
output "cluster_id" {
value = digitalocean_kubernetes_cluster.example.id
}
output "cluster_endpoint" {
value = digitalocean_kubernetes_cluster.example.endpoint
}
output "cluster_kubeconfig" {
value = digitalocean_kubernetes_cluster.example.kube_config
sensitive = true
}
Explicação:
resource "digitalocean_kubernetes_cluster" "example"
: Define um recurso de cluster Kubernetes na DigitalOcean.name
,region
,version
: Especificam o nome, região e versão do cluster.node_pool
: Configura um pool de nós com nome, tamanho e contagem de nós.output
: Define as saídas que exportam informações sobre o cluster criado, como o nome, ID, endpoint e kubeconfig.
Arquivo provider.tf
O provider.tf
especifica os provedores que o Terraform deve usar. No caso, estamos usando o provedor DigitalOcean.
./provider.tf
terraform {
required_providers {
digitalocean = {
source = "digitalocean/digitalocean"
version = "~> 2.0"
}
}
}
provider "digitalocean" {
token = var.do_token
}
terraform { required_providers { ... } }
: Especifica que o Terraform deve usar o provedor DigitalOcean.provider "digitalocean"
: Configura o provedor DigitalOcean com um token de acesso (do_token
), que é usado para autenticação.
Arquivo variables.tf
O variables.tf
define variáveis que são usadas nos arquivos de configuração do Terraform. Essas variáveis tornam o código mais reutilizável e fácil de modificar.
./variables.tf
variable "do_token" {
type = string
description = "API token for DigitalOcean"
sensitive = true
}
variable "region" {
type = string
description = "The region to deploy resources in"
default = "nyc1"
}
variable "cluster_name" {
type = string
description = "The name of the Kubernetes cluster"
default = "example-cluster"
}
variable "node_size" {
type = string
description = "The size of the nodes in the Kubernetes cluster"
default = "s-2vcpu-2gb"
}
variable "node_count" {
type = number
description = "The number of nodes in the Kubernetes cluster"
default = 3
}
variable "do_token"
: Define a variáveldo_token
para o token de acesso da API DigitalOcean.variable "region"
: Define a variávelregion
para especificar a região onde os recursos serão implantados.variable "cluster_name"
: Define a variávelcluster_name
para o nome do cluster Kubernetes.variable "node_size"
: Define a variávelnode_size
para o tamanho dos nós do cluster.variable "node_count"
: Define a variávelnode_count
para a quantidade de nós no cluster.
Arquivo terraform.tfvars
do_token
: O token de acesso da API DigitalOcean que você gerou.region
: A região onde os recursos serão implantados (por exemplo, “nyc1”).cluster_name
: O nome do cluster Kubernetes (por exemplo, “example-cluster”).node_size
: O tamanho dos nós no cluster (por exemplo, “s-2vcpu-2gb”).node_count
: O número de nós no cluster (por exemplo, 3).
./terraform.tfvars
do_token = "your_digitalocean_api_token_here" region = "nyc1" cluster_name = "example-cluster" node_size = "s-2vcpu-2gb" node_count = 3
Inicializar o Terraform
terraform init
Planejar a Aplicação
terraform plan
Aplicar as Configurações (Cria O cluster Efetivamente)
terraform apply
Do you want to perform these actions?
Terraform will perform the actions described above.
Only ‘yes‘ will be accepted to approve.
Enter a value: yes
Criação do kubeconfig.yaml no Windows/Powershell
Depois do cluster completamente criado, vamos gerar o kubeconfig.yaml:
terraform output -json cluster_kubeconfig | ConvertFrom-Json | ForEach-Object { $_.raw_config } > kubeconfig.yaml
Defina a variável de ambiente KUBECONFIG no Windows/PowerShell.
$env:KUBECONFIG = (Resolve-Path .\kubeconfig.yaml).Path
Criação do kubeconfig.yaml no Linux ou Mac
terraform output -json cluster_kubeconfig > kubeconfig.json
cat kubeconfig.json | awk -F'"raw_config":' '{print $2}' | sed 's/}]},//;s/^"//;s/"$//' > kubeconfig.yaml
Defina a variável de ambiente KUBECONFIG no Mac/Linux.
export KUBECONFIG=$(pwd)/kubeconfig.yaml
Cluster Criado
Execute o comando get nodes.
kubectl get nodes
Implantar o app Flappy Bird
Arquivos YAML Kubernetes para Implantação e Serviço.
./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: flappy-bird
spec:
replicas: 3
selector:
matchLabels:
app: flappy-bird
template:
metadata:
labels:
app: flappy-bird
spec:
containers:
- name: flappy-bird
image: toticavalcanti/flappy-bird:latest
ports:
- containerPort: 80
resources:
requests:
memory: "64Mi"
cpu: "250m"
limits:
memory: "128Mi"
cpu: "500m"
./service.yaml
apiVersion: v1
kind: Service
metadata:
name: flappy-bird-service
spec:
selector:
app: flappy-bird
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
Aplique os arquivos de configuração no cluster Kubernetes.
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
Verifique o deployments, pods e services.
kubectl get pods
kubectl get deployments
kubectl get services
Use o comando abaixo para obter o endereço IP externo.
kubectl get services flappy-bird-service
Acesse o IP e veja se o Flappy Bird vai rodar certinho!
Destruindo o Cluster
Para destruir o cluster é só usar:
terraform destroy
Do you really want to destroy all resources?
Terraform will destroy all your managed infrastructure, as shown above.
There is no undo. Only ‘yes‘ will be accepted to confirm.
Enter a value: yes
Saída:
digitalocean_kubernetes_cluster.example: Destroying… [id=994e0c55-fadc-41b7-bf4a-dcd4d8c2a324]
digitalocean_kubernetes_cluster.example: Destruction complete after 2s
Destroy complete! Resources: 1 destroyed.