quorate/vendor/platform/postgres/network-policies.yaml

299 lines
7.7 KiB
YAML
Raw Permalink Normal View History

---
# CNPG cluster pods: intra-namespace, host metrics, DNS.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: postgres-cluster
namespace: postgres
spec:
endpointSelector:
matchLabels:
cnpg.io/cluster: main
ingress:
# Allow intra-namespace replication and metrics.
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: postgres
toPorts:
- ports:
- port: "5432"
protocol: TCP
- port: "8000"
protocol: TCP
# Vault database engine: rotates static role credentials
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: vault
app.kubernetes.io/name: vault
component: server
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Zitadel app and init job
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: zitadel
app.kubernetes.io/name: zitadel
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Forgejo app and init containers
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: forgejo
app.kubernetes.io/name: forgejo
toPorts:
- ports:
- port: "5432"
protocol: TCP
- fromEndpoints:
- matchExpressions:
- key: k8s:io.kubernetes.pod.namespace
operator: In
values:
- forgejo-public
- key: app.kubernetes.io/name
operator: In
values:
- forgejo
- key: app.kubernetes.io/instance
operator: In
values:
- forge-code
- forge-git
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Grafana app
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: grafana
app.kubernetes.io/name: grafana
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Quay registry, mirror, and Clair
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: quay
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Argo Workflows controller/server archive and node-status offload
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: argo
app.kubernetes.io/name: argo-workflows-workflow-controller
toPorts:
- ports:
- port: "5432"
protocol: TCP
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: argo
app.kubernetes.io/name: argo-workflows-server
toPorts:
- ports:
- port: "5432"
protocol: TCP
- fromEndpoints:
- matchExpressions:
- key: k8s:io.kubernetes.pod.namespace
operator: In
values:
- stalwart
- key: app.kubernetes.io/name
operator: In
values:
- stalwart
- stalwart-bootstrap
- stalwart-controller
- key: app.kubernetes.io/instance
operator: In
values:
- stalwart
toPorts:
- ports:
- port: "5432"
protocol: TCP
# Allow host for metrics.
- fromEntities:
- host
toPorts:
- ports:
- port: "8000"
protocol: TCP
egress:
# Allow intra-namespace replication and metrics.
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: postgres
toPorts:
- ports:
- port: "5432"
protocol: TCP
- port: "8000"
protocol: TCP
# Allow kube-apiserver access.
- toEntities:
- kube-apiserver
toPorts:
- ports:
- port: "6443"
protocol: TCP
# Allow DNS access.
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: "53"
protocol: UDP
- port: "53"
protocol: TCP
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: versitygw
app.kubernetes.io/name: versitygw
app.kubernetes.io/instance: versitygw
toPorts:
- ports:
- port: "7070"
protocol: TCP
- toCIDR:
- 10.66.127.81/32
toPorts:
- ports:
- port: "443"
protocol: TCP
---
# Host egress to postgres pods (metrics, webhook).
apiVersion: cilium.io/v2
kind: CiliumClusterwideNetworkPolicy
metadata:
name: host-egress-postgres
spec:
nodeSelector: {}
egress:
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: postgres
toPorts:
- ports:
- port: "8000"
protocol: TCP
- port: "9443"
protocol: TCP
- port: "8081"
protocol: TCP
---
# CNPG operator: webhook (9443), host metrics (8000), apiserver.
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: cnpg-operator
namespace: postgres
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: cloudnative-pg
ingress:
# Allow webhook access from kube-apiserver (may arrive as remote-node when apiserver is on a different node).
- fromEntities:
- kube-apiserver
- host
- remote-node
toPorts:
- ports:
- port: "9443"
protocol: TCP
# Allow host for metrics.
- fromEntities:
- host
toPorts:
- ports:
- port: "8000"
protocol: TCP
egress:
# Allow metrics scraping from cluster pods.
- toEndpoints:
- matchLabels:
cnpg.io/cluster: main
toPorts:
- ports:
- port: "8000"
protocol: TCP
# Allow kube-apiserver access.
- toEntities:
- kube-apiserver
toPorts:
- ports:
- port: "6443"
protocol: TCP
# Allow DNS access.
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: "53"
protocol: UDP
- port: "53"
protocol: TCP
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: postgres
app.kubernetes.io/name: plugin-barman-cloud
toPorts:
- ports:
- port: "9090"
protocol: TCP
---
apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
name: barman
namespace: postgres
spec:
endpointSelector:
matchLabels:
app.kubernetes.io/name: plugin-barman-cloud
ingress:
- fromEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: postgres
app.kubernetes.io/name: cloudnative-pg
toPorts:
- ports:
- port: "9090"
protocol: TCP
- fromEntities:
- host
toPorts:
- ports:
- port: "8081"
protocol: TCP
egress:
- toEntities:
- kube-apiserver
toPorts:
- ports:
- port: "6443"
protocol: TCP
- toEndpoints:
- matchLabels:
k8s:io.kubernetes.pod.namespace: kube-system
k8s-app: kube-dns
toPorts:
- ports:
- port: "53"
protocol: UDP
- port: "53"
protocol: TCP