--- apiVersion: cilium.io/v2 kind: CiliumNetworkPolicy metadata: name: versitygw namespace: versitygw spec: endpointSelector: matchLabels: app.kubernetes.io/name: versitygw app.kubernetes.io/instance: versitygw ingress: # Kubelet probes and local port-forwarding. - fromEntities: - host toPorts: - ports: - port: "7070" protocol: TCP - port: "7071" protocol: TCP - port: "8080" protocol: TCP # Gateway I Envoy proxy: outbound connections use reserved:ingress identity. - fromEntities: - ingress toPorts: - ports: - port: "7071" protocol: TCP - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: kube-system gateway.networking.k8s.io/gateway-name: gateway-internal toPorts: - ports: - port: "7071" protocol: TCP - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: frigate app.kubernetes.io/name: frigate app.kubernetes.io/instance: frigate toPorts: - ports: - port: "7070" protocol: TCP # Quay uses VersityGW directly inside the cluster for registry object storage. - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: quay toPorts: - ports: - port: "7070" protocol: TCP # Forgejo uses VersityGW directly inside the cluster for attachments and avatars. - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: forgejo toPorts: - ports: - port: "7070" 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: "7070" protocol: TCP - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: postgres cnpg.io/cluster: main toPorts: - ports: - port: "7070" protocol: TCP # Argo Workflows executor/workflow pods for artifact upload/download. - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: argo app.kubernetes.io/name: argo-workflow toPorts: - ports: - port: "7070" 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 - key: app.kubernetes.io/instance operator: In values: - stalwart toPorts: - ports: - port: "7070" protocol: TCP # Cross-node kubelet blob pulls arrive with Cilium's remote-node identity. - fromEntities: - remote-node toPorts: - ports: - port: "7070" protocol: TCP # Direct LAN/WireGuard clients reach S3 through versitygw-direct LoadBalancer. - fromCIDR: - 10.115.187.218/24 - 10.63.81.107/24 - 10.162.8.60/24 toPorts: - ports: - port: "7070" protocol: TCP - port: "8080" protocol: TCP egress: - toEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: kube-system k8s-app: kube-dns toPorts: - ports: - port: "53" protocol: UDP - port: "53" protocol: TCP --- apiVersion: cilium.io/v2 kind: CiliumClusterwideNetworkPolicy metadata: name: gateway-internal-egress-versitygw spec: endpointSelector: matchLabels: "reserved:ingress": "" egress: - toEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: versitygw app.kubernetes.io/name: versitygw app.kubernetes.io/instance: versitygw toPorts: - ports: - port: "7071" protocol: TCP --- apiVersion: cilium.io/v2 kind: CiliumClusterwideNetworkPolicy metadata: name: host-egress-versitygw spec: nodeSelector: {} egress: - toEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: versitygw app.kubernetes.io/name: versitygw app.kubernetes.io/instance: versitygw toPorts: - ports: - port: "7070" protocol: TCP - port: "7071" protocol: TCP - port: "8080" protocol: TCP --- # Same-node Gateway backend selections can return to node-local ephemeral # source ports via the host path. apiVersion: cilium.io/v2 kind: CiliumClusterwideNetworkPolicy metadata: name: host-ingress-versitygw-replies spec: nodeSelector: {} ingress: - fromEndpoints: - matchLabels: k8s:io.kubernetes.pod.namespace: versitygw app.kubernetes.io/name: versitygw app.kubernetes.io/instance: versitygw toPorts: - ports: - port: "32768" endPort: 60999 protocol: TCP