apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: {{ .Release.Name }}-egress namespace: {{ .Release.Namespace }} spec: podSelector: matchLabels: app: {{ .Release.Name }} policyTypes: [Egress] egress: # Forgejo — same cicd namespace (git push, registry push/pull) - to: - podSelector: {} # CoreDNS - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system ports: - protocol: UDP port: 53 - protocol: TCP port: 53 # Internet (action deps, base images) — never LAN or pod network - to: - ipBlock: cidr: 0.0.0.0/0 except: - 192.168.1.0/24 - 10.244.0.0/16 # Single LAN exception: the ingress-nginx LoadBalancer, which is how # forgejo.riotpiao.com resolves. Image pushes go to that name so the tag # matches what containerd pulls on the nodes; without this the whole /24 is # denied above and `docker push` hangs until it times out. - to: - ipBlock: cidr: {{ .Values.egress.ingressLoadBalancerIP }}/32 ports: - protocol: TCP port: 443