网络策略

全部拒绝默认策略

# 拒绝命名空间内所有入站流量 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-ingress namespace: production spec: podSelector: {} policyTypes: - Ingress --- # 拒绝所有入站和出站流量 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: default-deny-all namespace: production spec: podSelector: {} policyTypes: - Ingress - Egress

入站规则

# 允许同命名空间内特定 Pod 访问 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: allow-frontend-to-api namespace: production spec: podSelector: matchLabels: app: api policyTypes: - Ingress ingress: - from: - podSelector: matchLabels: app: frontend ports: - protocol: TCP port: 8080

出站规则

# 仅允许访问数据库 apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: api-egress namespace: production spec: podSelector: matchLabels: app: api policyTypes: - Egress egress: - to: - podSelector: matchLabels: app: postgres ports: - protocol: TCP port: 5432 # 允许 DNS 解析 - ports: - protocol: UDP port: 53

命名空间选择器

# 允许来自 frontend 命名空间的所有 Pod spec: ingress: - from: - namespaceSelector: matchLabels: team: frontend # 重要:同一 from 元素中的选择器为 AND 逻辑 # 不同 from 元素之间为 OR 逻辑

常用模式

模式使用场景
全部拒绝 + 显式允许零信任命名空间隔离
仅允许同命名空间微服务命名空间隔离
允许来自 Ingress Controller限制外部流量路径
仅允许 DNS 出站隔离互联网的工作负载