# ============================================================================= # P5.3 — o provisionamento alcanca o controlador do sealed-secrets. # # ── POR QUE, E POR QUE SO AGORA ───────────────────────────────────────────── # # A etapa `SEGREDOS_SELADOS` precisa do certificado PUBLICO do controlador. Ate # 2026-09-22 ela o lia de um ARQUIVO; desde entao aceita tambem a URL # `http://sealed-secrets-controller.kube-system:8080/v1/cert.pem`, que e a forma # recomendada — o controlador ROTACIONA a chave a cada 30 dias (medido: 16/06, # 16/07, 15/08, 14/09), e um arquivo versionado nasce certo e fica velho em um # mes, EM SILENCIO. # # ── O MESMO DEFEITO DO 17-netpol-api-do-kubernetes, PELA MESMA CAUSA ──────── # # Medido em 2026-09-22, de dentro do pod do `servico-captacao`: # # getent hosts sealed-secrets-controller.kube-system -> 10.43.71.152 OK # curl http://sealed-secrets-controller.kube-system:8080/v1/cert.pem # -> HTTP 000, exit 7 # # O nome RESOLVE e a conexao NAO sai. A `deny-cross-tenant` libera # `ipBlock: 10.43.0.0/16`, que cobre o ClusterIP `10.43.71.152` — e nao adianta: # **o controlador de rede do k3s avalia DEPOIS do DNAT**, e ali o destino ja e o # IP do POD do controlador (`10.42.x.x`), que nao casa com nenhuma regra. # # E a mesma armadilha que fez a API do Kubernetes devolver `000` em 2026-09-20, # e vale registrar que ela se repete: `ipBlock` com ClusterIP nao protege nem # libera nada para destino em OUTRO namespace. # # ── POR QUE ESTA REGRA E ESTREITA ─────────────────────────────────────────── # # `podSelector` por app: so o `servico-captacao` sela segredo; nenhum outro pod # do namespace tem o que pedir ao controlador. # # O destino e o POD do controlador, por rotulo, e nao o namespace inteiro — # `namespaceSelector` sozinho abriria a porta 8080 de TODO o kube-system. # # Saida apenas; o controlador nunca inicia conversa conosco. # ============================================================================= apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: egress-sealed-secrets namespace: plataforma-prod spec: podSelector: matchLabels: app: servico-captacao policyTypes: [Egress] egress: - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system podSelector: matchLabels: name: sealed-secrets-controller ports: - port: 8080 protocol: TCP