Tutorial prático para implementar Kubernetes híbrido em AWS, Azure e GCP. Guia completo para arquitetos de cloud com arquiteturas, custos e configurações.
Em 2023, uma empresa brasileira do setor financeiro migrou 40% de sua carga de trabalho para Kubernetes híbrido após um apagão de 6 horas em provedor único. O prejuízo? R$ 2,3 milhões em transações perdidas. Este cenário não é ficção — é a realidade de organizações que subestimam a complexidade de clusters distribuídos entre datacenters on-premises e múltiplas nuvens públicas. Se você é arquiteto de cloud e precisa implementar Kubernetes híbrido sem criar Frankenstein operacional, este guia vai direto ao ponto.
O Que É Kubernetes Híbrido e Por Que Sua Empresa Precisa Disso Agora
Kubernetes híbrido é a arte de orquestrar contêineres através de boundaries físicos e lógicos — datacenters próprios, nuvens públicas e até edge locations. Não se trata apenas de "colocar Kubernetes em dois lugares"; é criar uma camada de abstração que mascara a heterogeneidade do hardware enquanto mantém consistência operacional.
Os três drivers que forçam essa decisão:
- Regulação: Dados sensíveis (LGPD, PCI-DSS, normas bancárias) não podem sair do país ou exigem baixa latência < 5ms para sistemas críticos
- Resiliência: RTO < 15 minutos não é alcançável com single-cloud — o outage da AWS us-east-1 em December 2021 lasted 7 hours
- Otimização de custos: Workloads com pico previsível (e-commerce em Black Friday, processamento batch noturno) podem elasticizar na nuvem pública, evitando CAPEX em hardware subutilizado
Arquitetura de Referência para Kubernetes Híbrido
Antes de abrir terminal, defina seu modelo operacional. Existem três padrões consolidados:
Padrão 1: Federated Clusters (KubeFed)
Ideal para: Organizações com equipes DevOps maduras que precisam de sincronização de recursos cross-cluster.
┌─────────────────────────────────────────────────────────────┐
│ Control Plane (Hub) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Policy │ │ Secrets │ │ RBAC │ │
│ │ Engine │ │ Store │ │ Sync │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │ │
┌────▼────┐ ┌────▼────┐ ┌────▼────┐
│ AWS EKS │ │Azure AKS│ │On-Prem │
│ (us-east│ │(Brazil) │ │vSphere │
└─────────┘ └─────────┘ └─────────┘
Padrão 2: Cluster API com Management Cluster Centralizado
Ideal para: Infraestrutura como código aggressive e GitOps completo.
Padrão 3: Plataforma Gerenciada Híbrida (Anthos, AKS Arc, EKS Anywhere)
Ideal para: Times que querem managed experience sem sacrificar controle.
Minha recomendação de mercado: Para 80% dos casos, o Padrão 3 com AKS Arc ou EKS Anywhere entrega o melhor equilíbrio entre controle e simplicidade operacional. KubeFed exige深厚的 Kubernetes internals knowledge e adiciona complexidade de debugging.
Pré-requisitos e Planejamento (O Que Ninguém Conta Antes)
Requisitos de Rede
| Componente | Requisito Mínimo | Recomendado |
|---|---|---|
| Latência | < 100ms RTT | < 30ms RTT |
| Throughput | 1 Gbps | 10 Gbps com Bonding |
| MTU | 1500 bytes | 9000 bytes (Jumbo Frames) |
| Conectividade | Site-to-Site VPN | ExpressRoute/Azure ExpressRoute/GCP Cloud Interconnect |
Custos de conectividade (estimativas 2024):
- AWS Direct Connect: $0.03/GB para port 1 Gbps, $0.025/GB para 10 Gbps
- Azure ExpressRoute: R$0,19/MB para peering local, R$0,09/MB para Microsoft peering
- GCP Cloud Interconnect: $0.015/GB para attach de 10 Gbps
Requisitos de Identidade e Acesso
- Identity Provider centralizado: Azure AD, Okta, ou Keycloak com OIDC
- Certificados X.509: Renovação automática com cert-manager e Let's Encrypt
- Service Account Management: Limite privilégios com least-privilege; não use tokens estáticos
Requisitos de Storage
Para StatefulSets críticos, você precisa de storage classes que abstraiam a heterogeneidade:
- On-premises: CSIplugin para NetApp, Dell EMC PowerFlex, ou vSAN
- Cloud: EBS gp3, Azure Managed Disks, GCP Persistent Disk
- Unificação: Rook/Ceph para storage definido por software que funciona cross-cluster
Tutorial 1: Implementar Kubernetes Híbrido com AWS EKS e On-Premises via EKS Anywhere
Cenário
Você precisa de um cluster EKS na AWS us-east-1 para workloads elásticos e um cluster on-premises para dados sensíveis. Ambos devem compartilhar políticas RBAC e ter Service Mesh unificado com Istio.
Passo 1: Preparar o Ambiente On-Premises
# Requisitos mínimos
# - 3 nodes (mínimo) para etcd e control plane
# - 8 vCPUs, 32GB RAM por node
# - 500GB SSD para /var/lib/containerd
# - VMware ESXi 7.0+ ou bare metal com Ubuntu 22.04 LTS
# Instalar dependências
sudo apt update && sudo apt install -y
conntrack
jq
socat
unzip
curl
# Download EKS Anywhere
curl "https://anywhere-release.s3.amazonaws.com/0.17.0/eksctl-anywhere-release-0.17.0-linux-amd64.tar.gz" \
-o /tmp/eksa.tar.gz
sudo tar -xzf /tmp/eksa.tar.gz -C /usr/local/bin
rm /tmp/eksa.tar.gz
Passo 2: Configurar o Cluster On-Premises
# Gerar cluster spec
cat > cluster.yaml <<EOF
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: Cluster
metadata:
name: onprem-cluster
namespace: default
spec:
clusterServiceRef:
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: Bundles
name:Releases v0.17.0"
kubernetesVersion: "1.28"
controlPlaneConfiguration:
count: 3
endpoint:
host: "192.168.1.10"
port: 6443
machineGroupRef:
kind: TinkerbellMachineConfig
name: onprem-machine-config
datacenterConfiguration:
kind: TinkerbellDatacenterConfig
metadata:
name: onprem-datacenter
spec:
stackETCD: true
externalProxy:
httpProxy: "http://proxy.company.com:3128"
httpsProxy: "http://proxy.company.com:3128"
noProxy:
- "localhost"
- "127.0.0.1"
- "10.0.0.0/8"
EOF
# Criar machine config
cat > machine-config.yaml <<EOF
apiVersion: anywhere.eks.amazonaws.com/v1alpha1
kind: TinkerbellMachineConfig
metadata:
name: onprem-machine-config
spec:
hardwareSelector:
type: "cp"
templateRef:
kind: TinkerbellTemplateConfig
name: onprem-template
volumes:
- name: "root"
device: "/dev/sda"
size: 500
type: "gp3"
EOF
# Apply
eksctl anywhere create cluster -f cluster.yaml
Passo 3: Configurar EKS na AWS
# Criar VPC dedicada
aws ec2 create-vpc
--cidr-block 10.100.0.0/16
--tag-specifications "ResourceType=vpc,Tags=[{Key=Name,Value=eks-hybrid-vpc}]"
# Criar EKS cluster
aws eks create-cluster \
--name production-eks \
--role-arn arn:aws:iam::123456789012:role/EKSClusterRole \
--resources-vpc-config subnetIds=subnet-0123456789abcdef,subnet-abcdef0123456789 \
--kubernetes-version 1.28 \
--outpost-configuration "outpostArns=[arn:aws:outposts:us-east-1:123456789012:outpost/op-xxxxx]"
# Habilitar RBAC integration com IAM
aws eks describe-cluster
--name production-eks
--query "cluster.identity.oidc.issuer"
--output text
Passo 4: Configurar Federation com EKS Connector
# Registrar cluster on-premises no EKS
aws eks register-cluster \
--name onprem-cluster \
--provider-cluster-arn arn:aws:eks:us-east-1:123456789012:cluster/onprem-cluster \
--region us-east-1
# Instalar EKS Connector no cluster on-premises
kubectl apply -f https://raw.githubusercontent.com/aws/eks-charts/master/stable/eks-conne
ctor/values.yaml
kubectl edit configmap aws-connector -n kube-system
# Adicionar: annotations: eks.amazonaws.com/roleArn: arn:aws:iam::123456789012:role/EKSConnectorRole
Tempo estimado de implementação: 8-12 horas para equipe experiente. Primeiros 4 horas são provisionamento de hardware e rede.
Tutorial 2: Implementar Kubernetes Híbrido com Azure AKS e On-Premises via AKS Arc
Cenário
Organização regulated que precisa manter dados de clientes brasileiros em datacenters LocaçãoCloud no Brasil, mas quer burst capacity na Azure Global para eventos de alta demanda.
Passo 1: Habilitar Arc-enabled Kubernetes no On-Premises
# Instalar Azure CLI e extensões
az extension add --name connectedk8s
az extension add --name k8s-extension
# Login Azure
az login --use-device-code
az account set --subscription "subscription-id"
# Conectar cluster on-premises (Kubernetes existente ou novo)
# Assuming you have a kubeconfig pointing to on-prem cluster
RESOURCE_GROUP="rg-hybrid-k8s-brazil-south"
LOCATION="brazilsouth"
CLUSTER_NAME="onprem-cluster-01"
az connectedk8s connect \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--tags "Environment=Production" "Team=Platform" \
--kube-config ~/.kube/config
Passo 2: Criar AKS Cluster Híbrido na Azure
# Criar resource group e VNet
az group create \
--name $RESOURCE_GROUP \
--location $LOCATION
az network vnet create \
--resource-group $RESOURCE_GROUP \
--name aks-hybrid-vnet \
--address-prefixes 10.200.0.0/16 \
--subnet-name aks-subnet \
--subnet-prefixes 10.200.0.0/20
# Habilitar ExpressRoute ou VPN Gateway para conectividade
az network vnet-gateway create \
--name hybrid-vpn-gateway \
--resource-group $RESOURCE_GROUP \
--vnet aks-hybrid-vnet \
--gateway-type Vpn \
--vpn-type RouteBased \
--sku VpnGw2 \
--location $LOCATION
# Criar AKS com Azure CNI Overlay
az aks create \
--resource-group $RESOURCE_GROUP \
--name aks-production \
--location $LOCATION \
--network-plugin azure \
--network-plugin-mode overlay \
--pod-cidr 10.244.0.0/16 \
--service-cidr 10.96.0.0/16 \
--dns-service-ip 10.96.0.10 \
--vnet-subnet-id /subscriptions/xxx/resourceGroups/rg-hybrid-k8s-brazil-south/providers/Microsoft.Network/virtualNetworks/aks-hybrid-vnet/subnets/aks-subnet \
--enable-azure-portal \
--enable-managed-identity \
--node-count 3 \
--node-vm-size Standard_D4s_v5 \
--kubernetes-version 1.28.3
Passo 3: Configurar FluxCD para GitOps Unificado
# Instalar FluxCD em ambos clusters
flux install \
--network-policy false \
--components=source-controller,helm-controller,kustomize-controller,notification-controller \
--secret-generation all
# Configurar GitRepository source
flux create source git azure-fleet \
--url=https://github.com/company/k8s-manifests \
--branch=main \
--interval=30s \
--export > ./clusters/aks-production/gotk-source.yaml
# Configurar Kustomization para deploy consistente
flux create kustomization production \
--source=azure-fleet \
--path="./staging/production" \
--prune=true \
--validation=client \
--interval=5m \
--export > ./clusters/aks-production/gotk-kustomization.yaml
# Sincronizar para cluster on-premises
flux create kustomization onprem \
--source=azure-fleet \
--path="./staging/onprem" \
--prune=true \
--validation=client \
--interval=5m \
--export > ./clusters/onprem-cluster-01/gotk-kustomization.yaml
Custo estimado mensal: AKS Basic tier é gratuito (você paga apenas VMs, storage, networking). Para 3 nodes Standard_D4s_v5: ~$450/mês. VPN Gateway VpnGw2: ~$85/mês.
Tutorial 3: Implementar Kubernetes Híbrido com GCP GKE e On-Premises via GKE Enterprise (Anthos)
Cenário
Startup de healthtech que precisa de conformidade com RDC 510/2021 e LGPD para dados de pacientes, mas quer usar BigQuery e AI/ML services da GCP para análise diagnóstica.
Passo 1: Configurar Anthos Config Management
# Instalar gcloud CLI e componentes
curl https://sdk.cloud.google.com | bash -s -- --disable-prompts
exec -l $SHELL
gcloud components install anthoscli beta
# Configurar projeto
gcloud config set project project-id
# Criar ConfigController (manage lifecycle do cluster)
gcloud alpha container hub config-management apply \
--membership=membership-name \
--config=config-management.yaml
# config-management.yaml
cat > config-management.yaml <<EOF
apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
name: config-management
spec:
clusterName: gke-prod
git:
repo: https://source.developers.google.com/p/project-id/r/k8s-config
branch: main
policyDir: "config-sync/root/"
secretType: gcpserviceaccount
gcpServiceAccountEmail: config-sync@project-id.iam.gserviceaccount.com
hierarchyController:
enable: true
policyController:
enable: true
exemptNamespaces: ["kube-system", "gatekeeper-system"]
gatekeeper:
enable: true
EOF
Passo 2: Criar GKE Cluster Autopilot (para workloads cloud-native)
# GKE Autopilot elimina gestão de nodes — você paga por workload
# Latência de provisioning: ~3-5 minutos vs 10-15min em managed node pools
gcloud container clusters create-auto gke-production \
--location=us-central1 \
--release-channel=regular \
--network=projects/project-id/global/networks/gke-vpc \
--subnetwork=projects/project-id/regions/us-central1/subnetworks/gke-subnet \
--cluster-secondary-range-name pods \
--services-secondary-range-name services \
--enable-private-nodes \
--master-ipv4-cidr=172.16.0.0/28
# Para clusters on-premises via Anthos on VMWare
# (Assumindo vCenter disponível)
gcloud container bare-metal clusters create gke-onprem \
--location=projects/project-id/locations/brazil-south \
--version=1.28.3-gke.100 \
--vcenter-fqdn=vcenter.company.com \
--vcenter-datacenter=DC-Brazil \
--vcenter-cluster=Cluster-Brazil \
--vcenter-datastore=Datastore-NFS \
--vcenter-network=VM-Network \
--control-plane-load-balancer=STATIC \
--control-plane-ip-block-file-path=ip-block.yaml
Passo 3: Configurar Multi-Cluster Services com Anthos Service Mesh
# Habilitar Anthos Service Mesh (baseado em Istio)
gcloud container hub mesh enable
# Register clusters para mesh
gcloud container hub memberships register gke-production \
--gke-uri=https://container.googleapis.com/projects/project-id/locations/us-central1/clusters/gke-production \
--service-account-key-file=./sa-key.json
gcloud container hub memberships register gke-onprem \
--context=gke-onprem \
--kubeconfig=./kubeconfig-hybrid
# Configurar mesh com mTLS strict
cat > asm-config.yaml <<EOF
apiVersion: mesh.cloud.google.com/v1alpha1
kind: ControlPlaneRevision
metadata:
name: asm-managed
namespace: istio-system
spec:
revision: asm-managed
mTLSMode: STRICT
automaticDeployment: true
EOF
kubectl apply -f asm-config.yaml
# Configurar cross-cluster service discovery
cat > service-discovery.yaml <<EOF
apiVersion: networking.gke.io/v1alpha1
kind: MultiClusterService
metadata:
name: patient-analytics
namespace: data-platform
spec:
template:
spec:
ports:
- name: http
port: 8080
selector:
app: analytics-engine
clusters:
- link: "us-central1/gke-production"
- link: "brazil-south/gke-onprem"
EOF
kubectl apply -f service-discovery.yaml
Custo Anthos: $29 por cluster por mês + custos de infraestrutura. Para 2 clusters: $58/mês fixos. GKE Autopilot cobra ~$0.000045 por vCPU-second e $0.000005 por GB-second — workloads bem dimensionados costumam ser 30-40% mais baratos que managed node pools.
Gestão Unificada de Múltiplos Clusters
Independente da plataforma, você precisa de uma control plane de gestão que abstraia a heterogeneidade. Recomendações de mercado:
Ferramentas por cenário
| Cenário | Ferramenta | Quando Usar |
|---|---|---|
| Multi-cloud primário | Rancher (SUSE) | Equipes que precisam UI unificada e suporte enterprise |
| GitOps-native | ArgoCD + Cluster Federation | Organizações que vivem em YAML e promoção via PR |
| Microsoft-centric | Azure Arc + GitHub Actions | Time já invested in Azure DevOps e Microsoft ecosystem |
| Google/Anthropic-centric | Anthos Config Management | Commitment longo com GCP e necessidade de Istio/ASM nativo |
| Enterprise completo | Red Hat OpenShift | Quando você precisa de PAAS sobre Kubernetes com SLAs vendor-backed |
Exemplo: Rancher para Gestão Centralizada
# Instalar Rancher em cluster dedicated (mínimo 2 nodes, 4 vCPU, 8GB RAM cada)
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
helm repo update
kubectl create namespace cattle-system
helm install rancher rancher-latest/rancher \
--namespace cattle-system \
--set hostname=rancher.company.com \
--set replicas=3 \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=infra@company.com
# Importar clusters existentes (EKS, AKS, GKE, on-prem)
# Obter kubeconfig do cluster target
rancher cluster import <cluster-name> --kubeconfig ~/.kube/config-target
Segurança e Compliance em Ambientes Híbridos
Kubernetes híbrido amplifica a superfície de ataque. Ataques como container escape em um cluster podem propagar se não houver network segmentation adequado.
Arquitetura de Segurança Zero Trust
┌──────────────────────────────────────────────────────────┐
│ Identity Provider │
│ (Azure AD / Okta / Keycloak) │
└───────────────────────┬──────────────────────────────────┘
│ OIDC/SAML
┌───────────────────────▼──────────────────────────────────┐
│ Service Account │
│ RBAC + OPA/Gatekeeper Policies │
└───────────────────────┬──────────────────────────────────┘
│ mTLS (SPIFFE/SPIRE)
┌───────────────────────▼──────────────────────────────────┐
│ Network Policies (Calico/Teleport) │
│ Default deny + explicit allow by namespace │
└──────────────────────────────────────────────────────────┘
Checklist de Segurança Obrigatório
- Network Policies: Implemente default deny em todos os namespaces; calico.io/v3 é padrão cross-platform
- Secrets Management: Use external secrets operator + Vault, AWS Secrets Manager, ou Azure Key Vault — nunca store secrets em etcd plain text
- Runtime Security: Falco ou Tracee para detection de anomalias em tempo real
- Image Scanning: Trivy ou Snyk no CI/CD pipeline; rejeite imagens com CVEs Critical sem exception rationale
- Admission Control: OPA Gatekeeper com políticas customizadas para sua compliance (LGPD, PCI-DSS)
- Audit Logging: Habilite audit logs em todos os clusters; ship para SIEM centralizado (Splunk, Elastic, Sumo Logic)
Monitoramento e Observabilidade em Kubernetes Híbrido
Para debugging effective em ambiente distribuído, você precisa de três pilares funcionando em conjunto:
Pilares de Observabilidade
- Metrics: Prometheus + Thanos ou CloudWatch Container Insights
- Logs: Loki + Grafana ou Cloud Logging
- Traces: Jaeger ou Cloud Trace (OpenTelemetry-native)
Stack Recomendado por Plataforma
| Provider | Metrics | Logs | Traces |
|---|---|---|---|
| AWS | CloudWatch Container Insights ($0.02/GB) | CloudWatch Logs | X-Ray |
| Azure | Container Insights + Log Analytics | Azure Monitor | Application Insights |
| GCP | Cloud Monitoring | Cloud Logging | Cloud Trace |
| On-Premises | Prometheus Operator | Loki | Jaeger |
Configurar Observability Federation
# Instalar kube-prometheus-stack em cluster central (on-prem ou cloud)
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace \
--set prometheus.prometheusSpec.retention=30d \
--set prometheus.prometheusSpec.replicas=2 \
--set alertmanager.enabled=true \
--set grafana.adminPassword=$GRAFANA_PASSWORD
# Adicionar remote_write para federation
cat > prometheus-additional.yaml <<EOF
remote_write:
- url: https://thanos-receive.company.com/api/v1/receive
queue_config:
capacity: 10000
max_shards: 5
basic_auth:
username: thanos
password: $THANOS_PASSWORD
EOF
Boas Práticas e Armadilhas Comuns
O Que Fazer
Use GitOps desde o dia 1: FluxCD ou ArgoCD não são luxo — são necessidade quando você tem 3+ clusters. Promotion de código entre ambientes via PR reduz erros humanos em 73% segundo State of DevOps Report 2023.
Padronize Helm charts e Kustomize overlays: Crie uma "golden path" com templates validados para cada workload type. Times devem poder deploy em 15 minutos sem need to deep dive em Kubernetes internals.
Implemente FinOps desde o início: Tag todos os recursos com owner, environment, team, cost-center. K8s não é free — um cluster mal dimensionado pode custar $800-2000/mês em cloud. Right-size nodes baseado em actual utilization, não peak.
Automatize upgrades: Cluster upgrades são inevitáveis. Kubernetes 1.28 tem support até February 2024. Use tools como eksctl upgrade cluster ou AKS auto-upgrade channels. Nunca deixe clusters em versions com security patches pendentes > 30 dias.
O Que NÃO Fazer
Não misture etcd clusters cross-cloud: Cada cluster deve ter seu próprio etcd. Shared etcd entre AWS e Azure vaiintroduzir latência e split-brain scenarios.
Não ignore CNI differences: AWS VPC CNI, Azure CNI, GKE Cilium têm behaviors diferentes. Prefira CNIs que usam encapsulation (Cilium eBPF, Calico IPIP) para hybrid scenarios onde network policies precisam funcionar cross-cluster.
Não sobredimensione para high availabilityprematurely: 3 control plane nodes em cada location adds complexity e custo. Se seu SLA objetivo é 99.5% (21.6 horas downtime/ano), single control plane com regular backups pode ser suficiente. Aumente para multi-control-plane quando você tiver proven track record de incidentes.
Conclusão: Próximos Passos
Implementar Kubernetes híbrido não é projeto — é jornada contínua. Comece pequeno: um cluster cloud + um workload não-crítico. Valide seus processos de deployment, segurança e monitoramento antes de migrar sistemas core.
Roadmap sugerido:
- Mês 1-2: Provisionar cluster cloud + cluster on-prem simples; configurar GitOps pipeline
- Mês 3-4: Migrar primeiro workload stateless; implementar observabilidade unificada
- Mês 5-6: Migrar workload stateful (banco de dados com replication cross-cloud); testar disaster recovery
- Mês 7+: Otimizar custos, automatizar compliance checks, implementar service mesh cross-cluster
Se precisar de ajuda específica para seu cenário — seja arquitetura de referência, comparação de custos entre providers, ou validation de security posture — deixe nos comentários ou entre em contato. Ciro Cloud mantém equipe especializada em hybrid cloud deployments para empresas brasileiras que precisam de compliance local com performance global.
Recursos Adicionais:
Weekly cloud insights — free
Practical guides on cloud costs, security and strategy. No spam, ever.
Comments