8e0a2a8f18
O ipBlock da deny-cross-tenant nao vale para destino em outro namespace (o k3s avalia depois do DNAT), entao a variavel sozinha daria FalhaTemporaria. Vai junto a netpol estreita: so o servico-captacao, so o pod do controlador, so a porta 8080, so saida.
61 lines
2.7 KiB
YAML
61 lines
2.7 KiB
YAML
# =============================================================================
|
|
# 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
|