--- # Namespace (trust zone; default-deny + policies apply) apiVersion: v1 kind: Namespace metadata: name: baseline-demo labels: homelab.keithjackson.dev/app-namespace: 'true' --- # Default-deny baseline (R-NET-01): deny all, allow only DNS apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny namespace: baseline-demo labels: homelab.keithjackson.dev/baseline: default-deny spec: podSelector: {} policyTypes: - Ingress - Egress ingress: [] egress: - to: - namespaceSelector: matchLabels: kubernetes.io/metadata.name: kube-system ports: - protocol: UDP port: 53 - protocol: TCP port: 53 --- # Deployment (R-PLAT-02) apiVersion: apps/v1 kind: Deployment metadata: name: baseline-demo namespace: baseline-demo labels: app.kubernetes.io/name: baseline-demo spec: replicas: 1 selector: matchLabels: app.kubernetes.io/name: baseline-demo template: metadata: labels: app.kubernetes.io/name: baseline-demo homelab.keithjackson.dev/egress-class: internet homelab.keithjackson.dev/auth-mode: none spec: containers: - name: baseline-demo image: nginx:1.27 --- # CiliumNetworkPolicy world egress allow (egress class governs the path; R-NET-05): baseline-demo-allow-internet-egress apiVersion: cilium.io/v2 kind: CiliumNetworkPolicy metadata: name: baseline-demo-allow-internet-egress namespace: baseline-demo labels: app.kubernetes.io/name: baseline-demo spec: endpointSelector: matchLabels: app.kubernetes.io/name: baseline-demo egress: - toEntities: - world --- # Flux ImageRepository (R-UPD) apiVersion: image.toolkit.fluxcd.io/v1 kind: ImageRepository metadata: name: baseline-demo namespace: baseline-demo spec: image: nginx interval: 1h0m0s --- # Flux ImagePolicy (R-UPD) apiVersion: image.toolkit.fluxcd.io/v1 kind: ImagePolicy metadata: name: baseline-demo namespace: baseline-demo annotations: homelab.keithjackson.dev/update-channel: stable homelab.keithjackson.dev/auto-rollback: 'true' spec: imageRepositoryRef: name: baseline-demo policy: semver: range: '>=0.0.0'