SmartHub AppsMáquina de aquisição

P0.2 · DNS, Ingress e TLS

Depende de P0.1. Skills: `/dns`, `/k8s-ecomsmart`.

O prompt

Leia as skills /dns e /k8s-ecomsmart. Publique o projeto radar nos domínios abaixo, zona ecomsmart.com.br no Cloudflare.

1. Registros

HostTipoAlvoProxy
radarAIP do clusterDNS only
roiAidemDNS only
api.radarAidemDNS only

Descubra o IP consultando um Ingress que já funciona. Não chute.

Proxy desligado porque o cert-manager valida por HTTP-01 e o proxy da Cloudflare quebra o desafio. Para ligar o proxy depois, migramos para DNS-01 — registre isso no README.

2. Ingress

Um por host, ingressClassName: nginx, anotação cert-manager.io/cluster-issuer: letsencrypt-prodconfirme o nome do ClusterIssuer existente antes de usar.

Anotações:

nginx.ingress.kubernetes.io/proxy-body-size: 10m
nginx.ingress.kubernetes.io/ssl-redirect: "true"
# só no host de API:
nginx.ingress.kubernetes.io/limit-rps: "20"

Gotcha registrado na skill do GitLab: já apareceu Ingress ganhando regra de host duplicada sozinho, apontando para porta interna errada, dando 503 com todo o resto certo. Depois de aplicar:

kubectl -n producao get ingress -o jsonpath=\
'{range .items[*]}{.metadata.name}{" -> "}{.spec.rules[*].host}{"\n"}{end}'

Confirme que nenhum host aparece em dois Ingress.

3. Django

Atualize ALLOWED_HOSTS e CSRF_TRUSTED_ORIGINS. Roteie por host com middleware simples: roi. cai no app roi, o resto no app público. Não use subdomínio como tenant.

Critérios de aceite

  1. curl -I https://radar.ecomsmart.com.br/healthz retorna 200 com certificado válido. Mostre a saída
  2. O mesmo para roi. e api.radar.
  3. kubectl -n producao get certificate mostra os três com READY=True
  4. Nenhum host duplicado entre Ingress

Commit em k8s/ e suba pelo pipeline. Aplicação manual só para teste.

© 2026 EcomSmart · Uso interno · pt-BR