Pular para o conteúdo principal

Introdução

Gerencie recursos AWS usando CRDs/GitOps do Kubernetes ou CLI standalone.

O que é o Infra Operator?

Infra Operator é uma ferramenta production-ready para gerenciar recursos de infraestrutura AWS. Pode rodar em dois modos:

  • Operador Kubernetes: Gerencie recursos AWS usando CRDs, kubectl e GitOps (ArgoCD, Flux)
  • CLI Standalone: Gerencie recursos AWS diretamente pela linha de comando, sem Kubernetes

Em vez de usar ferramentas separadas como Terraform ou CloudFormation, você pode gerenciar sua infraestrutura AWS usando manifestos YAML familiares.

Principais Benefícios

Gerencie infraestrutura junto com aplicações usando Git como fonte da verdade

Use kubectl, Helm e ferramentas familiares do ecossistema Kubernetes

Código bem organizado, testável (100% de cobertura) e manutenível seguindo padrões de arquitetura

Suporte completo para rede, computação, armazenamento, banco de dados, mensageria, CDN, segurança e mais

Serviços Suportados (26 no Total)

Rede (9 serviços)

ServiçoDescrição
VPCVirtual Private Cloud
SubnetSubnets da VPC
Internet GatewayAcesso à internet para VPC
NAT GatewayInternet de saída para subnets privadas
Security GroupRegras de firewall
Route TableRoteamento de rede
ALBApplication Load Balancer (Camada 7)
NLBNetwork Load Balancer (Camada 4)
Elastic IPEndereços IP públicos estáticos

Computação (3 serviços)

ServiçoDescrição
EC2 InstanceMáquinas virtuais
LambdaFunções serverless
EKSClusters Kubernetes

Armazenamento & Banco de Dados (3 serviços)

ServiçoDescrição
S3 BucketArmazenamento de objetos
RDS InstanceBancos de dados relacionais (PostgreSQL, MySQL, etc.)
DynamoDB TableBanco de dados NoSQL

Mensageria (2 serviços)

ServiçoDescrição
SQS QueueFilas de mensagens
SNS TopicNotificações Pub/Sub

API & CDN (2 serviços)

ServiçoDescrição
API GatewayAPIs REST, HTTP, WebSocket
CloudFrontRede de Distribuição de Conteúdo (CDN)

Segurança (4 serviços)

ServiçoDescrição
IAM RoleGerenciamento de identidade e acesso
Secrets ManagerArmazenamento de segredos
KMS KeyChaves de criptografia
ACM CertificateCertificados SSL/TLS

Containers (2 serviços)

ServiçoDescrição
ECR RepositoryRegistro de containers
ECS ClusterOrquestração de containers

Cache (1 serviço)

ServiçoDescrição
ElastiCacheCache em memória (Redis, Memcached)

Exemplo Rápido

Exemplo:

---
# Criar VPC
apiVersion: aws-infra-operator.runner.codes/v1alpha1
kind: VPC
metadata:
name: production-vpc
spec:
providerRef:
name: aws-provider
cidrBlock: "10.0.0.0/16"
enableDnsSupport: true
enableDnsHostnames: true

---
# Criar Subnet Pública
apiVersion: aws-infra-operator.runner.codes/v1alpha1
kind: Subnet
metadata:
name: public-subnet
spec:
providerRef:
name: aws-provider
vpcID: vpc-xxx # Será preenchido automaticamente
cidrBlock: "10.0.1.0/24"
mapPublicIpOnLaunch: true

---
# Criar Bucket S3
apiVersion: aws-infra-operator.runner.codes/v1alpha1
kind: S3Bucket
metadata:
name: app-data
spec:
providerRef:
name: aws-provider
bucketName: myapp-production-data
versioning:
enabled: true
encryption:
algorithm: AES256

Comando:

kubectl apply -f infrastructure.yaml

Arquitetura

Visão Geral do Sistema

O Infra Operator segue a arquitetura do padrão controller do Kubernetes:

Como Funciona:

  1. GitOps / kubectl - Cria Custom Resources (CRs) no Kubernetes
  2. Controllers - Detectam mudanças nos CRs e reconciliam o estado
  3. AWS SDK - Controllers usam o AWS SDK para provisionar recursos
  4. Atualização de Status - Estado do recurso AWS é refletido no CR

Componentes Principais:

  • 26 Controllers: Um para cada serviço AWS (VPC, S3, EC2, Lambda, etc.)
  • 26 CRDs: Custom Resource Definitions para cada tipo de recurso
  • AWS SDK v2: Comunicação com as APIs AWS
  • Loop de Reconciliação: Garante que estado desejado = estado atual

Clean Architecture

Implementação seguindo princípios de Clean Architecture para código testável (100% de cobertura), manutenível e desacoplado:

Camadas da Arquitetura:

1. Camada de Domínio (Core)

  • Modelos de negócio puros (VPC, S3, EC2, etc.)
  • Regras de validação
  • Sem dependências externas
  • 100% de cobertura de testes

2. Camada de Casos de Uso

  • Lógica de aplicação
  • Criar, Atualizar, Deletar, GetStatus
  • Orquestração de domínio
  • Interface com Ports

3. Camada de Ports (Interfaces)

  • Interfaces de repositório
  • Interfaces de Cloud Provider
  • Princípio de inversão de dependência
  • Contratos abstratos

4. Camada de Adapters

  • Implementações do AWS SDK
  • Cliente Kubernetes
  • Implementações concretas dos Ports
  • Comunicação com sistemas externos

5. Camada de Controllers

  • Loops de reconciliação
  • Integração com API Kubernetes
  • Tratamento de eventos
  • Mapeamento de CR para Domínio

Benefícios:

  • Testabilidade: 100% de cobertura no domínio
  • Manutenibilidade: Clara separação de responsabilidades
  • Flexibilidade: Fácil adicionar novos serviços
  • Independência: Core desacoplado de frameworks

Próximos Passos