About
On this page
- Instalando o OpenTofu
- Instalando o OCI CLI
- Instalando Kubectl - Kubernetes 1.28.2
- Autenticando na OCI
- Criando o cluster
- Load Balancer
- Deletando o cluster
- Problemas conhecidos
- Se você tentar criar um cluster com uma conta gratuita e receber o erro abaixo
- Erro
401-NotAuthenticated
ou o comandokubectl
não funciona. Isso ocorre porque o token de autenticação expirou - Erros devido a falha na execução do
tofu destroy
, impossibilitando a exclusão do cluster e todos os recursos. Ou erros como oError Code: CompartmentAlreadyExists
que não são resolvidos com otofu destroy
Criando um Cluster Kubernetes na OCI utilizando OpenTofu #MêsDoKubernetes
Crie uma conta gratuita na Oracle Cloud, e provisione um cluster Kubernetes utilizando o Terraform de forma simples e rápida.
Acesse este link e crie a sua conta
Pontos Importantes Antes de Começar
Devido limitações da conta gratuita, você provavelmente precisará realizar o upgrade para uma conta
Pay As You Go
para conseguir criar o cluster utilizando as instâncias gratuitasVM.Standard.A1.Flex
. Você não será cobrado pelo uso de recursos gratuitos mesmo após o upgrade.Crie um alerta na sua conta para não ser cobrado por acidente Budget.
Não altere o shape da instância utilizada no cluster, pois a única instância gratuita compatível com o OKE é a
VM.Standard.A1.Flex
.
Instalando o OpenTofu
- GNU/Linux
- Windows
Instalando o OCI CLI
- GNU/Linux
- Execute o comando de instalação:
Quando solicitado para atualizar a variável PATH, digite
yes
e ele atualizará automaticamente o arquivo .bashrc ou .bash_profile. Se você utiliza um shell diferente, precisará informar o caminho para o OCI CLI (por exemplo, ~/zshrc).Reinicie sua sessão no terminal.
Verifique a instalação.
- Windows
Faça download do instalador MSI da CLI do OCI para Windows no GitHub Releases
Execute o instalador e siga as instruções.
Instalando Kubectl - Kubernetes 1.28.2
- GNU/Linux
Kubectl é quem faz a comunicação com a API Kubernetes usando CLI. Devemos usar a mesma versão que está explicita no arquivo de variáveis. Veja variables.tf
- Baixando o binário kubectl
- Instalando o binário
- Adicione kubectl completion bash
- Valide a versão
- Note: O comando acima irá gerar um aviso: “WARNING: This version information is deprecated and will be replaced with the output from kubectl version –short.”
Você pode ignorar este aviso. Você está apenas verificando a versão do kubectl que instalou.
- Windows
- Baixe o binário kubectl
Anexe a pasta binária kubectl à sua variável de ambiente PATH.
Valide a versão
🔗 Guia de instalação para todos os ambientes
Autenticando na OCI
- Antes de começar, clone o repositório.
- Crie uma
API key
- Entre no seu perfil, acesse a aba API Keys e clique em
Add API Key
.
Selecione
Generate API key pair
, faça o download da chave privada. Em seguida, clique emAdd
.Após o download, mova a chave para o diretório do
OCI CLI
e renomeie paraoci_api_key.pem
.
- GNU/Linux
- Windows
- Corrija as permissões da chave privada:
- Copie o texto que apareceu na página de criação da
API KEY
para o arquivo de configuração doOCI CLI
. Não se esqueça de substituir o valor do compokey_file
pelo caminho da chave privada.
- GNU/Linux
- Windows
- Crie a pasta
./ssh
e gere a chavessh
(No Windows, utilize o Git Bash para executar o comando abaixo).
- Crie o arquivo com as variáveis de ambiente, substituindo os valores das variáveis pelos valores da sua conta (o conteúdo usado no arquivo ~/.oci/config acima).
- GNU/Linux
Agora rode o script para exportar as variáveis:
- Windows
No Windows, você pode criar um arquivo env.bat
com o conteúdo abaixo e executar o arquivo para exportar as variáveis.
Agora execute o arquivo para exportar as variáveis:
Criando o cluster
- Instale os módulos
- Crie o cluster.
- OBS: Opicionalmente, você pode utilizar o comando
tofu plan
para visualizar as alterações que serão realizadas antes de executar otofu apply
. Com os seguintes comandos:
- Edite o arquivo
~/.kube/config
para adicionar a autenticação com aAPI KEY
conforme exemplo abaixo.
- Acesse o cluster.
Script para criação do cluster
Atenção: O script está em fase de testes e funciona apenas no Linux.
Caso queira automatizar o processo de criação do cluster, basta executar o script main.sh que está na raiz do projeto. O script irá gerar a chave SSH, adicionar a chave pública na TF_VAR, inicializar o Terraform e criar o cluster.
Load Balancer
O cluster que criamos já conta com um Network Load Balancer configurado para expor uma aplicação na porta 80. Basta configurar um serviço do tipo NodePort
com a porta 80
e a nodePort 30080
. Exemplos de como configurar o serviço podem ser encontrados no diretório manifests
.
O endereço do Load Balancer é informado na final da execução, no formato public_ip = "xxx.xxx.xxx.xxx"
e pode ser consultado a qualquer momento com o comando:
Deletando o cluster
- Para deletar o cluster bastar executar o comando:
Problemas conhecidos
Se você tentar criar um cluster com uma conta gratuita e receber o erro abaixo
As contas gratuitas tem um número limitado de instâncias disponíveis, possivelmente a região que você está tentando criar o cluster não tem mais instâncias disponíveis. Você pode esperar até que novas instâncias fiquem disponíveis ou tentar criar o cluster em outra região. Além disso, o upgrade para uma conta Pay As You Go
pode resolver o problema, pois as contas Pay As You Go
tem um número maior de instâncias disponíveis. Você não será cobrado pelo uso de recursos gratuitos mesmo após o upgrade.
Erro
401-NotAuthenticated
ou o comandokubectl
não funciona. Isso ocorre porque o token de autenticação expirou
Gere um novo token de autenticação e exporte para a variável de ambiente OCI_CLI_AUTH
.
- Linux
- Windows
Erros devido a falha na execução do
tofu destroy
, impossibilitando a exclusão do cluster e todos os recursos. Ou erros como oError Code: CompartmentAlreadyExists
que não são resolvidos com otofu destroy
Para resolver esse problema, basta deletar os recursos manualmente no console da OCI. Seguindo a ordem abaixo:
Obs: Caso não apareça o Cluster ou a VPN para deletar, certifique que selecionou o Compartment certo k8s
.