Skip to content
Natália Granato edited this page Jul 31, 2024 · 1 revision

Terraform Kubernetes Cluster Module - Magalu Cloud

Descrição

Este projeto utiliza o Terraform para provisionar e gerenciar um cluster Kubernetes. Ele inclui funcionalidades para aguardar a criação do cluster, obter o kubeconfig e salvá-lo em um arquivo local.

Estrutura do Projeto

  • main.tf: Arquivo principal contendo os recursos e data sources do Terraform.
  • outputs.tf: Define os outputs do Terraform.
  • variables.tf: Define as variáveis utilizadas no projeto.
  • kubeconfig.yaml: Arquivo gerado contendo o kubeconfig do cluster Kubernetes.

Funcionalidades

  1. Provisionamento do Cluster Kubernetes:

    • Cria um cluster Kubernetes com um node pool.
  2. Tempo de Espera para o Cluster:

    • Utiliza o recurso time_sleep para aguardar a criação do cluster antes de prosseguir.
  3. Obtenção do Kubeconfig:

    • Utiliza um data source para obter o kubeconfig do cluster Kubernetes após a criação.
  4. Salvamento do Kubeconfig:

    • Salva o kubeconfig obtido em um arquivo local (kubeconfig.yaml).

Pré-requisitos

  • Terraform instalado.
  • Credenciais configuradas para acessar o provedor de nuvem utilizado.

Como Usar

Passo 1: Clonar o Repositório e autenticar-se na Magalu Cloud

git clone https://github.com/nataliagranato/terraform-mgc-k8s-module.git
cd terraform-mgc-k8s-module
mgc auth login

Você será redirecionado para realizar o login em sua conta Magalu, depois disso inicie o projeto.

Passo 2: Configurar Variáveis

Edite o arquivo variables.tf para configurar as variáveis necessárias para o provisionamento do cluster.

Passo 3: Inicializar o Terraform

terraform init --upgrade

Passo 4: Aplicar as Configurações

terraform apply 

Passo 5: Verificar o Arquivo Kubeconfig

Após a execução bem-sucedida, verifique se o arquivo kubeconfig.yaml foi criado no diretório especificado.

Estrutura do Arquivo main.tf

resource "time_sleep" "wait_for_cluster" {
  depends_on      = [mgc_kubernetes_cluster.cluster_with_nodepool]
  create_duration = "10m" # Ajuste o tempo conforme necessário
}

data "mgc_kubernetes_cluster_kubeconfig" "cluster" {
  depends_on = [time_sleep.wait_for_cluster]
  cluster_id = mgc_kubernetes_cluster.cluster_with_nodepool.id
}

resource "local_file" "kubeconfig" {
  provider = local
  content  = data.mgc_kubernetes_cluster_kubeconfig.cluster.kubeconfig
  filename = "${path.module}/kubeconfig.yaml"
}

Contribuição

  1. Faça um fork do projeto.
  2. Crie uma branch para sua feature (git checkout -b feature/nova-feature).
  3. Commit suas mudanças (git commit -am 'Adiciona nova feature').
  4. Faça um push para a branch (git push origin feature/nova-feature).
  5. Crie um novo Pull Request.

Licença

Este projeto está licenciado sob a Licença MIT. Veja o arquivo LICENSE para mais detalhes.

Contato

Para mais informações, entre em contato com contato@nataliagranato.xyz.


Este README fornece uma visão geral do projeto, instruções de uso e informações sobre como contribuir. Certifique-se de ajustar os detalhes conforme necessário para o seu projeto específico.