Skip to content

Latest commit

 

History

History
116 lines (79 loc) · 2.65 KB

File metadata and controls

116 lines (79 loc) · 2.65 KB

🌩️ CloudForge

Uma plataforma moderna de IaC (Infrastructure as Code) desenvolvida em Python com CDKTF e Streamlit, permitindo o provisionamento e gerenciamento de ambientes Docker e Kubernetes por meio de uma interface web intuitiva.


Visão Geral

O CloudForge demonstra como integrar CDKTF (Cloud Development Kit for Terraform) com uma interface interativa feita em Streamlit, tornando o uso de IaC mais acessível e visual.

A aplicação permite criar e gerenciar stacks de infraestrutura baseadas em:

  • Docker (containers e imagens)
  • Kubernetes (via Kind local)

Tudo isso de forma interativa, sem necessidade de rodar comandos Terraform manualmente.


Tecnologias Utilizadas

  • Python 3.13
  • Streamlit — Interface web interativa
  • CDKTF — Infraestrutura como código com Python
  • Kind — Kubernetes local em containers
  • Docker — Ambiente de containers
  • UV — Gerenciador de pacotes rápido e leve

Instalação e Execução

Clone o repositório

git clone https://github.com/seuusuario/cloudforge.git
cd cloudforge

Configure o ambiente com UV

O UV é uma alternativa moderna ao pip/venv. Caso ainda não tenha instalado:

pip install uv

Crie o ambiente virtual e instale as dependências:

uv sync

Verifique se o Kind está configurado

kind get clusters
kubectl config current-context

O contexto ativo deve ser algo como:

kind-platform

Nesse caso, o config_path usado será ~/.kube/config.

Execute o aplicativo

uv run streamlit run app.py

Acesse em:

http://localhost:8501

Como Funciona

  1. O usuário seleciona o tipo de ambiente (Docker ou Kind/Kubernetes).
  2. O CDKTF é utilizado para gerar o código Terraform e aplicar a infraestrutura.
  3. O Streamlit exibe o progresso e os logs em tempo real.
  4. A infraestrutura é criada localmente, seja como container Docker ou pod no cluster Kind.

Exemplo de Uso

Criar um container NGINX com Docker

  • Provider: docker
  • Nome: api-demo
  • Imagem: nginx:latest
  • Porta interna: 80
  • Porta externa: 8080

Criar um serviço no Kind

  • Provider: kind
  • Nome: service-demo
  • Imagem: nginx:alpine
  • Porta interna: 80
  • Porta externa: 30080

Licença

Este projeto é distribuído sob a licença MIT. Sinta-se à vontade para usar, modificar e contribuir.