gcloud-lab/apps/base/customer1/trading-platform/network-policies/trading-network-policies.yaml

146 lines
3.5 KiB
YAML

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: trading-platform-netpol
namespace: customer1
spec:
podSelector:
matchExpressions:
- key: app
operator: In
values:
- trading-data-service
- trading-execute-service
- trading-news-service
- trading-dashboard
policyTypes:
- Ingress
- Egress
ingress:
# Allow from Gateway / ingress controller
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: customer1
ports:
- port: 3000
protocol: TCP
- port: 8000
protocol: TCP
- port: 8001
protocol: TCP
- port: 8002
protocol: TCP
- port: 8003
protocol: TCP
# Allow from Tailscale proxy namespace
- from:
- namespaceSelector:
matchLabels:
kubernetes.io/metadata.name: tailscale
ports:
- port: 3000
protocol: TCP
- port: 8000
protocol: TCP
- port: 8001
protocol: TCP
- port: 8002
protocol: TCP
- port: 8003
protocol: TCP
# Allow inter-service communication
- from:
- podSelector:
matchExpressions:
- key: app
operator: In
values:
- trading-data-service
- trading-execute-service
- trading-news-service
- trading-dashboard
ports:
- port: 3000
protocol: TCP
- port: 8000
protocol: TCP
- port: 8001
protocol: TCP
- port: 8002
protocol: TCP
- port: 8003
protocol: TCP
egress:
# Allow DNS
- to:
- namespaceSelector: {}
podSelector:
matchLabels:
k8s-app: kube-dns
ports:
- port: 53
protocol: UDP
- port: 53
protocol: TCP
# Allow DB access
- to:
- podSelector:
matchLabels:
cnpg.io/cluster: siriusdevops-pgdb
ports:
- port: 5432
protocol: TCP
# Allow Redis access
- to:
- podSelector:
matchLabels:
app: trading-redis
ports:
- port: 6379
protocol: TCP
# Allow Kafka access (Strimzi labels)
- to:
- podSelector:
matchLabels:
strimzi.io/name: trading-kafka
ports:
- port: 9092
protocol: TCP
# Allow Kafka bootstrap service (fallback)
- to:
- podSelector:
matchLabels:
strimzi.io/cluster: trading-kafka
ports:
- port: 9092
protocol: TCP
# Allow inter-service egress (via ClusterIP services on port 80, plus direct pod ports)
- to:
- podSelector:
matchExpressions:
- key: app
operator: In
values:
- trading-data-service
- trading-execute-service
- trading-news-service
- trading-dashboard
ports:
- port: 80
protocol: TCP
- port: 8000
protocol: TCP
- port: 8001
protocol: TCP
- port: 8002
protocol: TCP
- port: 8003
protocol: TCP
# Allow external HTTPS/WSS (Helius, Solana, Jupiter, Hyperliquid APIs)
- to: []
ports:
- port: 443
protocol: TCP
- port: 80
protocol: TCP