Crossplane: O Plano de Controle Universal para Infraestrutura
Crossplane: Transformando Kubernetes em um Plano de Controle Universal
O Problema que Voce Provavelmente Enfrenta Hoje
Voce se reconhece em algum desses cenarios?
Cenario 1 — O Labirinto dos Tickets: Voce precisa de um novo ambiente Azure. Abre um ticket. Espera 3 dias. Infra cria o Resource Group, Redes configura a VNet, DevOps provisiona o AKS. Uma semana depois, alguem deleta o NSG “por acidente”. Tudo cai. Ninguem sabe quem fez o que.
Cenario 2 — O Terror do Terraform State:
Voce usa Terraform, mas o .tfstate e uma bomba-relogio. Alguem rodou terraform apply com a subscription errada. Recurso sumiu. Recuperacao levou 4 horas. Agora ninguem quer mexer no codigo de infra.
Cenario 3 — O Custo Invisivel: Voce paga R$25k/mes em Azure, mas ninguem tem visibilidade real. ACR esta ocioso. NSG tem 50 regras nao utilizadas. Clusters de staging rodam 24/7 sem ninguem usar.
Se voce se reconheceu em UM desses cenarios, este guia e para voce.
O que voce vai aprender neste guia:
Ao final da leitura e execucao deste guia, voce sera capaz de:
- Entender o que e Crossplane: Compreender a filosofia, arquitetura e por que ele esta mudando o jogo de IaC.
- Dominar os Conceitos Fundamentais: Providers, Managed Resources, ProviderConfig, Compositions e Claims.
- Entender o Loop de Reconciliacao: Como o Crossplane garante que a realidade SEMPRE reflita o estado desejado.
- Configurar um Cluster de Gestao: Preparar o Crossplane para gerenciar multiplas clouds.
- Provisionar Infraestrutura Completa: Criar AKS, ACR, VNet, NSG com um unico
kubectl apply. - Preparar para GitOps: Versionar infraestrutura no Git, pronta para integracao com ArgoCD (artigo futuro).

Sobre a CodeSolve
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ ██████╗ ██████╗ ██████╗ ███████╗███████╗ ██████╗ ██╗ ██╗ ██╗███████╗│
│ ██╔════╝██╔═══██╗██╔══██╗██╔════╝██╔════╝██╔═══██╗██║ ██║ ██║██╔════╝│
│ ██║ ██║ ██║██║ ██║█████╗ ███████╗██║ ██║██║ ██║ ██║█████╗ │
│ ██║ ██║ ██║██║ ██║██╔══╝ ╚════██║██║ ██║██║ ╚██╗ ██╔╝██╔══╝ │
│ ╚██████╗╚██████╔╝██████╔╝███████╗███████║╚██████╔╝███████╗╚████╔╝ ███████╗│
│ ╚═════╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝ ╚═════╝ ╚══════╝ ╚═══╝ ╚══════╝│
│ │
│ A Arte de Resolver Problemas │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Minha profissao e resolver problemas. Ha 22 anos uso tecnologia como ferramenta para isso.
Sou Alexandre Carvalho, fundador da CodeSolve. Ao longo dessas duas decadas, passei por infraestrutura, desenvolvimento, arquitetura e, mais recentemente, mergulhei fundo no universo DevOps e Cloud Native. A CodeSolve nasceu dessa jornada — da vontade de compartilhar conhecimento e ajudar empresas a modernizarem suas operacoes de forma pratica e segura.
O que fazemos:
- Consultoria em DevOps, CI/CD e Kubernetes
- Implementacao de pipelines com Tekton, GitLab CI, ArgoCD
- Migracao e operacao em Cloud (AWS, GCP, Azure, OCI)
- Observabilidade, Seguranca e Infraestrutura como Codigo
Contato:
- Web: www.codesolve.com.br
- Email: alexandre@codesolve.com.br
- Instagram: @falarcomalexandreti
Afinal, o que diabos e Crossplane?
Crossplane e um projeto open-source que transforma qualquer cluster Kubernetes em um plano de controle universal para infraestrutura. Em termos simples: voce usa kubectl para criar recursos na AWS, Azure, GCP, ou qualquer outro provedor — da mesma forma que cria Pods e Deployments.
Lancado em 2018 pela Upbound e promovido a Incubating na CNCF em 2021, o Crossplane nasceu de uma ideia revolucionaria: e se o Kubernetes pudesse gerenciar nao apenas containers, mas QUALQUER recurso de infraestrutura?
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ O QUE E CROSSPLANE? │
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ KUBERNETES (etcd) │ │
│ │ │ │
│ │ Pods Deployments Services ConfigMaps Secrets │ │
│ │ ▲ ▲ ▲ ▲ ▲ │ │
│ │ │ │ │ │ │ │ │
│ │ └───────────┴────────────┴────────────┴────────────┘ │ │
│ │ │ │ │
│ │ RECURSOS NATIVOS K8S │ │
│ │ │ │
│ │ ───────────────────────────────────────────────────────────────── │ │
│ │ │ │
│ │ + CROSSPLANE ADICIONA: │ │
│ │ │ │ │
│ │ ┌───────────┬───────────┼───────────┬───────────┐ │ │
│ │ ▼ ▼ ▼ ▼ ▼ │ │
│ │ VPC RDS AKS S3 CosmosDB │ │
│ │ (AWS) (AWS) (Azure) (AWS) (Azure) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
│ RESULTADO: Kubernetes como PLANO DE CONTROLE UNIVERSAL │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Os 4 Pilares do Crossplane
1. Providers (Os Tradutores)
Providers sao plugins que ensinam o Crossplane a “falar” com uma cloud especifica. Cada provider adiciona novos CRDs (Custom Resource Definitions) ao Kubernetes.
| |
Quando voce instala o provider-azure-network, ele registra CRDs como:
VirtualNetworkSubnetNetworkSecurityGroupPublicIPAddress
Agora voce pode criar esses recursos com kubectl apply!
2. Managed Resources (Os Recursos Reais)
Managed Resources sao representacoes 1:1 de recursos de infraestrutura. Cada Managed Resource corresponde a UM recurso na cloud.
| |
3. ProviderConfig (A Credencial)
O ProviderConfig conecta o Crossplane a sua conta na cloud. Ele referencia um Secret com as credenciais.
| |
4. O Loop de Reconciliacao (A Magia)
Aqui esta o diferencial BRUTAL do Crossplane: ele nao executa uma vez e esquece (como Terraform). Ele reconcilia continuamente.
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ LOOP DE RECONCILIACAO CROSSPLANE │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ │ │ │ │ │ │
│ │ ESTADO │ │ CROSSPLANE │ │ CLOUD │ │
│ │ DESEJADO │◄───────►│ CONTROLLER │◄───────►│ (AZURE) │ │
│ │ (YAML) │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ 1. Usuario aplica YAML ──────────────────────────────► │ │
│ │ │ │
│ │ 2. Controller le o YAML ◄────────────────────────────── │ │
│ │ │ │
│ │ 3. Controller chama API Azure ─────────────────────────► │ │
│ │ │ │
│ │ 4. Azure cria/atualiza recurso ◄─────────────────────── │ │
│ │ │ │
│ │ 5. Controller atualiza status ─────────────────────────► │ │
│ │ │ │
│ │ 6. REPETE A CADA 60 SEGUNDOS (drift detection!) │ │
│ │ │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ SE ALGUEM DELETAR O RECURSO NA AZURE MANUALMENTE: │
│ ────────────────────────────────────────────────── │
│ O Crossplane detecta o drift e RECRIA automaticamente! │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Por que isso e revolucionario?
Com Terraform, se alguem deleta um recurso manualmente, voce so descobre no proximo
terraform plan. Com Crossplane, o recurso e recriado automaticamente em ate 60 segundos. Isso e self-healing infrastructure.
E o Proximo Nivel? Compositions e XRDs
Os 4 pilares acima sao a base. Mas o Crossplane vai muito alem: Compositions e XRDs (Composite Resource Definitions) permitem criar abstracoes poderosas — tipo “pedir um banco de dados” sem saber se e RDS, CloudSQL ou Azure SQL por baixo.
┌─────────────────────────────────────────────────────────────────────────────┐
│ O PROXIMO NIVEL: ABSTRACOES │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ DESENVOLVEDOR PLATAFORMA │
│ ───────────── ────────── │
│ │
│ "Preciso de um banco" XRD: Database │
│ │ │ │
│ ▼ ▼ │
│ kind: Database ┌─── Composition ───┐ │
│ spec: │ │ │
│ engine: postgres │ Se AWS: RDS │ │
│ size: small │ Se Azure: FlexDB │ │
│ │ Se GCP: CloudSQL │ │
│ └───────────────────┘ │
│ │
│ RESULTADO: Dev nao precisa saber detalhes de cloud! │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Quer aprender Compositions e XRDs?
Este guia foca nos fundamentos. No proximo artigo, vamos construir Compositions completas para abstrair a complexidade da cloud. Fique ligado!
Crossplane vs Terraform: A Batalha Final
Essa e a pergunta de 1 milhao de dolares. Vamos ser honestos:
| Aspecto | Terraform | Crossplane |
|---|---|---|
| Modelo | Imperativo (apply/destroy) | Declarativo (reconciliacao continua) |
| Estado | Arquivo .tfstate (fragil) | Kubernetes etcd (robusto) |
| Drift Detection | Manual (terraform plan) | Automatico (a cada 60s) |
| Self-Healing | Nao tem | Nativo |
| GitOps | Requer wrappers (Atlantis) | Nativo com ArgoCD/Flux |
| Multi-tenancy | Complexo (workspaces) | Natural (namespaces) |
| Linguagem | HCL (proprietaria) | YAML (universal) |
| Curva de Aprendizado | Menor | Maior (precisa saber K8s) |
| Maturidade | 10+ anos | 5 anos |
| Ecossistema | Gigante | Crescendo rapido |
Quando usar Terraform?
- Equipe nao conhece Kubernetes
- Projeto simples e isolado
- Ja tem muito codigo Terraform
Quando usar Crossplane?
- Ja usa Kubernetes para workloads
- Quer GitOps de verdade
- Precisa de self-healing e drift detection
- Multi-cloud / Multi-tenant
Nossa escolha: Crossplane
Nosso cluster de gestao ja e Kubernetes. Faz sentido usar a mesma linguagem (YAML), o mesmo fluxo (GitOps com ArgoCD), e o mesmo tooling (kubectl) para gerenciar infraestrutura. O Crossplane unifica tudo.
O Problema que Estamos Resolvendo
Imagine que voce precisa criar um ambiente completo na Azure: cluster Kubernetes, registry de imagens, rede privada, firewall… Como e o processo hoje na sua empresa?
O Modelo Tradicional (O Labirinto):
Voce abre um ticket. A equipe de Cloud recebe. Alguem da equipe de Infra cria o Resource Group. Outra pessoa, da equipe de Redes, configura a VNet. A equipe de Kubernetes provisiona o AKS. Dias (ou semanas) depois, o ambiente chega para voce. Frustrante, ne?
O Modelo Crossplane (O Portal Magico):
Com o Crossplane, voce nao pede mais infraestrutura, voce a declara. Um arquivo YAML descreve exatamente o que voce quer, e o Crossplane reconcilia esse estado desejado com a realidade na cloud. E GitOps puro: versionado, auditavel, reproduzivel.
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ MODELO TRADICIONAL MODELO CROSSPLANE │
│ ────────────────── ───────────────── │
│ │
│ [Ticket] ──► [Infra] [Git Push] ──► [Crossplane] │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ [Rede] ──► [DevOps] [YAML] ──────► [Azure] │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ [Dias...] [Ambiente] [Minutos!] [Ambiente] │
│ │
│ Tempo: Dias/Semanas Tempo: 15-20 minutos │
│ Erro humano: Alto Erro humano: Minimo │
│ Rastreabilidade: Baixa Rastreabilidade: Git │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Nosso Laboratorio: A Arquitetura Multi-Tenant
Antes de mergulhar nos comandos, e crucial entender nosso campo de batalha:
┌─────────────────────────────────────────────────────────────────────────────┐
│ CLUSTER DE GESTAO (Minikube) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────────────────┐ │
│ │ CROSSPLANE SYSTEM │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Provider │ │ Provider │ │ Provider │ │ │
│ │ │ Azure │ │ Azure │ │ Azure │ │ │
│ │ │ Network │ │ Container │ │ Managed │ │ │
│ │ │ │ │ Service │ │ Identity │ │ │
│ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │
│ │ │ │ │ │ │
│ │ └────────────────┼────────────────┘ │ │
│ │ │ │ │
│ │ ┌─────▼─────┐ │ │
│ │ │ Provider │ │ │
│ │ │ Config │ │ │
│ │ │ (Secret) │ │ │
│ │ └─────┬─────┘ │ │
│ └──────────────────────────┼────────────────────────────────────────────┘ │
│ │ │
└─────────────────────────────┼───────────────────────────────────────────────┘
│
│ Azure API
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ AZURE CLOUD │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ TENANT: produto-env-rg │ │
│ │ ┌─────────────────────────────────────────────────────────────┐ │ │
│ │ │ VNet 10.x.0.0/16 │ │ │
│ │ │ ┌─────────────────────┐ ┌─────────────────────┐ │ │ │
│ │ │ │ snet-aks │ │ snet-endpoints │ │ │ │
│ │ │ │ 10.x.0.0/22 │ │ 10.x.4.0/24 │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌───────────────┐ │ │ │ │ │ │
│ │ │ │ │ AKS Cluster │ │ │ │ │ │ │
│ │ │ │ │ (Kubenet) │ │ │ │ │ │ │
│ │ │ │ └───────────────┘ │ │ │ │ │ │
│ │ │ └─────────────────────┘ └─────────────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────────────────┘ │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ ACR │ │ Managed │ │ NSG │ │ │
│ │ │ (Registry) │ │ Identity │ │ (Firewall) │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
O que cada recurso faz?
| Recurso | Proposito |
|---|---|
| Resource Group | Container logico que agrupa todos os recursos do tenant |
| VNet | Rede privada isolada para o tenant |
| Subnet AKS | Rede onde os nodes do Kubernetes rodam |
| Subnet Endpoints | Rede para Private Endpoints (banco, storage) |
| NSG | Firewall de rede (regras de entrada/saida) |
| AKS | Cluster Kubernetes gerenciado |
| ACR | Registry privado de imagens Docker |
| Managed Identity | Identidade para workloads acessarem recursos Azure |
Por que esse desenho importa?
Este nao e um lab de brinquedo. Ao usar VNet dedicada, subnets segregadas e NSG, garantimos:
- Isolamento de rede entre tenants
- Seguranca com firewall dedicado
- Escalabilidade para adicionar mais recursos depois
- O tenant se comporta como um ambiente de producao, so que em escala reduzida.
Pre-requisitos
Ferramentas Necessarias
| |
Crossplane: Este guia foi validado com Crossplane v1.18.x e Providers Azure v2.3.0. Versoes mais recentes devem funcionar, mas verifique a documentacao oficial em caso de breaking changes.
Instalacao (se necessario):
| |
Acesso ao Cluster de Gestao
| |
Por que validar isso antes?
Porque a maioria dos problemas em provisionamentos Crossplane comeca aqui:
- Cluster de gestao inacessivel
- Providers nao instalados
- ProviderConfig ausente
- Credenciais expiradas
Validando esses pontos antes, eliminamos erros dificeis de diagnosticar durante o deploy.
Parte 1 — Preparando o Ambiente
1.1 Login Azure
| |
1.2 Registrar Resource Providers
A Azure exige que certos “Resource Providers” estejam ativos na subscription antes de criar recursos:
| |
1.3 Verificar Quota de vCPU
Antes de provisionar, confira se ha quota disponivel:
| |
Por que verificar quota?
Se a quota estiver esgotada, o AKS vai ficar em estado
Creatingeternamente, sem erro claro. Melhor descobrir isso antes de esperar 15 minutos.
Parte 2 — Configurando Crossplane
2.1 Instalar Providers Azure (v2.3.0)
Os providers sao os “plugins” que ensinam o Crossplane a falar com a Azure:
| |
Esperado: 6 providers com HEALTHY=True
2.2 Criar ProviderConfig
O ProviderConfig conecta o Crossplane a sua subscription Azure:
| |
Parte 3 — POC: Testando a Conectividade
Antes de criar a infraestrutura completa, vamos testar se o Crossplane consegue criar recursos na Azure:
| |
Por que fazer uma POC primeiro?
Se esse Resource Group simples nao funcionar, nada vai funcionar. E muito mais facil debugar um recurso do que onze.
Parte 4 — Criando o Tenant
4.1 Definir Variaveis
| |
Por que calcular CIDRs automaticamente?
O /22 para AKS suporta ate 1000 IPs (suficiente para nodes + pods). O /24 para endpoints suporta 254 IPs. Essa divisao e uma boa pratica que evita desperdicio de IPs.
4.2 Verificar CIDRs Existentes
| |
4.3 Criar Estrutura de Diretorios
| |
4.4 Criar tenant.yaml
Este arquivo e a “fonte da verdade” do tenant:
| |
4.5 Criar Kustomizations
| |
4.6 Criar Script de Variaveis
| |
Parte 5 — Aplicando o Tenant
5.1 Carregar Variaveis
| |
5.2 Preview (Opcional)
| |
Esperado: 11 recursos
1 KubernetesCluster
1 NetworkSecurityGroup
1 Registry
1 ResourceGroup
2 SecurityRule
1 SubnetNetworkSecurityGroupAssociation
2 Subnet
1 UserAssignedIdentity
1 VirtualNetwork
5.3 Aplicar
| |
5.4 Acompanhar Criacao
| |
| Recurso | Tempo Aproximado |
|---|---|
| ResourceGroup | 30s |
| VNet, Subnets, NSG | 1-2 min |
| SecurityRules | 1-2 min |
| Identity | 1 min |
| ACR | 2-3 min |
| AKS | 10-15 min |
┌─────────────────────────────────────────────────────────────────────────────┐
│ TIMELINE DE PROVISIONAMENTO │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ 0min 2min 4min 6min 8min 10min 12min 14min 16min │
│ ├───────┼───────┼───────┼───────┼───────┼───────┼───────┼───────┤ │
│ │ │
│ ├─ RG ──┤ │
│ │ ├─ VNet ─┤ │
│ │ ├─ NSG ──┤ │
│ │ │ ├─ Identity ─┤ │
│ │ │ ├─ ACR ──────┤ │
│ │ │ │ ├───────── AKS ──────────────────┤ │
│ │ │
│ ▼ ▼ │
│ APPLY READY! │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Parte 6 — Post-Deploy
IMPORTANTE: Algumas integracoes nao podem ser feitas 100% via Crossplane. Execute apos todos recursos estarem READY.
6.1 Verificar Node Pool Pronto
| |
6.2 Anexar ACR ao AKS
| |
Por que isso e Post-Deploy?
O Crossplane ainda nao suporta Role Assignments com selectors para principalId. Esse comando
az aks update --attach-acre a forma recomendada pela Microsoft e cria automaticamente o AcrPull role.
Parte 7 — Validacao
7.1 Verificar Crossplane
| |
7.2 Acessar o AKS
| |
7.3 Testar Pull do ACR
| |
7.4 Checklist Final
- 11 recursos READY=True no Crossplane
- Resource Group visivel no Portal Azure
- AKS acessivel via kubectl
- Nodes em Ready
- ACR criado
- Push/Pull de imagens funciona
Parte 8 — Troubleshooting
Resource nao fica READY
| |
Erro de permissao
| |
CIDR em conflito
| |
ACR nome duplicado
| |
Quota insuficiente
| |
Parte 9 — Agendamento Start/Stop (Economia de Custos)
Para ambientes nao-produtivos, configure start/stop automatico:
9.1 Criar Automation Account
| |
9.2 Atribuir Permissao
| |
9.3 Comandos Manuais
| |
Quanto economiza?
Um cluster AKS parado nao cobra pelas VMs. Em um ambiente de staging que roda 12h/dia, 5 dias/semana, voce economiza ~65% do custo de compute.
Parte 10 — Estimativa de Custos
10.1 Custos por Componente (Config Minima)
| Componente | SKU/Tipo | Custo Mensal (USD) |
|---|---|---|
| AKS Node | Standard_E2s_v5 (2 vCPU, 16GB) x 1 | ~$67.40 |
| Container Registry | ACR Basic | ~$5.00 |
| Managed Disk | 30GB Premium SSD (OS) | ~$1.20 |
| Subtotal Visivel | ~$73.60 |
Nota: IP de egress e gerenciado pelo AKS (incluso no custo do Load Balancer).
10.2 Custos Ocultos (Estimados)
| Item | Estimativa Mensal | Observacao |
|---|---|---|
| Trafego de saida (egress) | $5-15 | Depende do volume |
| Logs/Diagnosticos | $10-20 | Se habilitados |
| Load Balancer | $15-25 | Criado automaticamente pelo AKS |
| Total Estimado | $103-133 |
10.3 Otimizacao com Reserved Instances
| Cenario | Economia | Custo Total |
|---|---|---|
| On-Demand (padrao) | - | $103-133/mes |
| Reserved 1 ano | ~15-20% | $87-113/mes |
| Reserved 3 anos | ~30-40% | $72-93/mes |
10.4 Referencias de Preco
| Recurso | Link |
|---|---|
| AKS Pricing | https://azure.microsoft.com/pricing/details/kubernetes-service/ |
| VM Pricing | https://azure.microsoft.com/pricing/details/virtual-machines/linux/ |
| ACR Pricing | https://azure.microsoft.com/pricing/details/container-registry/ |
| Bandwidth Pricing | https://azure.microsoft.com/pricing/details/bandwidth/ |
| Reserved Instances | https://azure.microsoft.com/pricing/reserved-vm-instances/ |
Remover Tenant
| |
O Antes e Depois: Seu Resultado
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ ANTES (Workflow Tradicional) DEPOIS (Com Este Guia) │
│ ──────────────────────────── ───────────────────── │
│ │
│ Dia 1: Abre ticket $ git push │
│ Dia 2: Equipe de Infra trabalha $ kubectl apply -f tenant.yaml │
│ Dia 3: Equipe de Redes trabalha │
│ Dia 4: DevOps configura [Aguarde 15 minutos...] │
│ Dia 5: Testes e ajustes │
│ Dia 6: Finalmente pronto ✓ Resource Group criado │
│ ✓ VNet e Subnets criados │
│ Tempo total: 6 DIAS ✓ NSG com regras aplicadas │
│ Erros humanos: ~70% ✓ AKS rodando com ACR anexado │
│ Rastreabilidade: Tickets perdidos ✓ Managed Identity configurada │
│ Reproducibilidade: Depende ✓ Tudo versionado no Git │
│ │
│ Tempo total: 15 MINUTOS │
│ Erros humanos: ~5% │
│ Rastreabilidade: Git history │
│ Reproducibilidade: 100% │
│ │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ GANHO REAL: │
│ • 96% mais rapido (6 dias → 15 minutos) │
│ • 100% auditavel (Git logs = quem, quando, o que) │
│ • 100% reproduzivel (mesmo comando, mesmo resultado) │
│ • Self-healing (Crossplane recria recursos deletados automaticamente) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Conclusao
Se voce chegou ate aqui, seu tenant esta pronto de verdade:
- Provisionamento declarativo (Crossplane + Kustomize)
- GitOps-ready (tudo versionado no Git)
- Infraestrutura completa (VNet, AKS, ACR, NSG, Identity)
- Integracoes configuradas (ACR → AKS)
- Custos controlados (Start/Stop, estimativas claras)
- Fluxo reproduzivel (qualquer estagiario consegue executar)
Este guia forneceu um caminho completo e validado para criar um ambiente Azure robusto e funcional. Agora voce tem uma base solida para explorar, aprender e se aprofundar no ecossistema Crossplane + Azure. Parabens pela conquista!
Resumo Rapido
| |
Proximos Passos — Escolha Seu Caminho
Se voce quer continuar aprendendo:
- Documentacao oficial Crossplane: https://docs.crossplane.io
- Upbound Marketplace (Providers): https://marketplace.upbound.io
- Slack da comunidade Crossplane: https://slack.crossplane.io
Proximos artigos da serie:
- Compositions e XRDs: Criar abstracoes poderosas para sua plataforma
- Multi-cloud: Provisionar na AWS, Azure e GCP com os mesmos YAMLs
- ArgoCD + Crossplane: GitOps completo para infraestrutura (deploy automatico via Git)
Se voce quer implementar em producao e precisa de ajuda:
A CodeSolve oferece:
- Audit de arquitetura Crossplane existente
- Implementacao acelerada (2-4 semanas para producao)
- Treinamento hands-on para sua equipe
- Suporte pos-implementacao
Agende uma conversa: alexandre@codesolve.com.br
Perguntas Frequentes
| Pergunta | Resposta |
|---|---|
| “E se meu cluster nao conseguir criar o AKS?” | Ver Parte 8 (Troubleshooting) |
| “Quanto custa provisionar tudo isso?” | Ver Parte 10 (~$100/mes config minima) |
| “Posso usar em producao?” | Sim, a arquitetura e production-ready |
| “Minha empresa usa Terraform, vale migrar?” | Se ja usa K8s, provavelmente sim |
| “E se der problema no meio?” | Crossplane tem retry automatico |
Duvidas nao listadas? Abra issue no repositorio ou entre em contato direto.
Precisa de ajuda com Crossplane: O Plano de Controle Universal para Infraestrutura?
A CodeSolve pode ajudar sua equipe a implementar essa e outras solucoes.
Falar com a equipe