Políticas de cluster
Políticas de cluster são manifests que controlam a comunicação entre Pods, entre namespaces e entre o cluster e redes externas. Elas não instalam componentes — definem quais ligações são permitidas ou bloqueadas ao nível da plataforma.
No contexto da instalação do TDP Kubernetes, estas políticas só são necessárias quando o ambiente impõe restrições de conectividade que afetam o funcionamento dos componentes.
Um conceito recorrente nestas políticas é o egress: o tráfego de saída de um Pod em direção a serviços externos ao próprio workload — como bases de dados, endpoints S3, APIs corporativas e object storage. Ambientes com NetworkPolicies ativas bloqueiam este tráfego por defeito, exigindo que cada destino seja declarado explicitamente.
Quando considerar este ajuste
Considere este ajuste quando o cluster adotar NetworkPolicies ativas ou outras regras de conectividade que possam bloquear a comunicação necessária aos componentes do TDP.
Dependendo do ambiente, estas políticas podem ter de ser aplicadas antes da instalação dos componentes ou em conjunto com ela.
Sem estas regras, os componentes do TDP podem falhar ao tentar aceder a:
- bases de dados externas
- endpoints S3 e object storage
- serviços corporativos fora do namespace
- outros intervalos de IP libertados pela rede do ambiente
Papel deste YAML no fluxo GitOps
O YAML abaixo é um manifest de política de plataforma. Não instala componentes do TDP nem substitui os manifests das Applications. O seu papel é libertar ou restringir comunicações exigidas pelo ambiente.
Exemplo de NetworkPolicy
O exemplo abaixo permite comunicação interna entre Pods do namespace e liberta egress para destinos externos específicos:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-internal-full-and-external-ip
namespace: tdp-project
spec:
podSelector: {}
policyTypes:
- Egress
- Ingress
ingress:
- from:
- podSelector: {}
egress:
- to:
- podSelector: {}
- to:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: kube-system
- to:
- ipBlock:
cidr: x.x.x.0/24
Aplicação
kubectl apply -f allow-internal-full-and-external-ip.yaml
O que rever antes de aplicar
- O namespace de destino (
tdp-projectno exemplo) - Os intervalos de IP libertados em
ipBlock.cidr - A necessidade de permitir comunicação com
kube-system - As políticas já existentes no cluster, para evitar sobreposição ou bloqueios involuntários
Onde guardar no repositório GitOps
Para manter rastreabilidade, versione este arquivo no repositório GitOps dentro de uma pasta policies/:
tdp-gitops/
├── app-of-apps.yaml
├── apps/
├── values/
└── policies/
└── allow-internal-full-and-external-ip.yaml
Esses arquivos não são gerenciados pelo Argo CD como Applications — são aplicados diretamente com kubectl apply -f. Armazená-los no repositório garante histórico de mudanças junto ao restante da configuração da plataforma.