apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-internal
spec:
podSelector:
matchLabels:
app: myapp
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
app: myapp
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 5432
这个策略定义了一个名为allow-internal
的网络策略,它将流量限制为具有标签app: myapp
的Pod及app: database
的Pod。该策略允许来自同一标签的Pod和app: database
pod的入站流量,并限制向app: database
pod的出站流量。限制仅适用于TCP端口80和5432。
apiVersion: API 版本,NetworkPolicy 属于 networking.k8s.io 的 v1 版本。
kind: 声明此 YAML 文件中所描述的 Kubernetes 对象类型为 NetworkPolicy。
metadata: 元数据部分,包含 NetworkPolicy 对象的名称。
spec: NetworkPolicy 对象的规范部分。
podSelector: 用于标识 NetworkPolicy 针对哪些 Pod。本例中,它选择app: myapp 标签的 Pod。
policyTypes: 指定可以应用于 NetworkPolicy 的策略类型。本例中包括入站和出站流量。
ingress: 允许入站流量的规则。
from: 相关源,可以是其他 Pod 或 IP 地址、网段等。
ports: 限制进出网络流量的协议和端口。本例中,限制 TCP 端口 80。
egress: 允许出站流量的规则。
to: 相关目的地,可以是其他 Pod 或 IP 地址、网段等。
ports: 限制进出网络流量的协议和端口。本例中,限制 TCP 端口 5432。