CRD EgressPolicy
EgressPolicy CRD 用于指定哪些 Pod 访问哪些目标 CIDR 时走 Egress 策略,以及 Egress 所使用的 IP 地址。租户级资源。
apiVersion: egressgateway.spidernet.io/v1beta1
kind: EgressPolicy
metadata:
namespace: "default"
name: "policy-test"
spec:
egressGatewayName: "eg1" # 1
egressIP: # 2
ipv4: ""
ipv6: ""
useNodeIP: false # 3
appliedTo: # 4
podSelector: # 4-a
matchLabels:
app: "shopping"
podSubnet: # 4-b
- "172.29.16.0/24"
- 'fd00:1/126'
destSubnet: # 5
- "10.6.1.92/32"
- "fd00::92/128"
priority: 100 # 6
- 选择 EgressPolicy 引用的 EgressGateway:
- Egress IP 表示 EgressPolicy 所使用的 EgressIP 设置:
- 若在创建时定义了
ipv4
或ipv6
地址,则从 EgressGateway 的.ippools
中分配一个 IP 地址,若在 policy1 中,申请使用了 IP 地址10.6.1.21
和fd00:1
,然后创建 policy2 中,申请使用了 IP 地址10.6.1.21
和fd00:2
,则会报错,此时 policy2 会分配失败; - 若未定义
ipv4
或ipv6
地址,且useNodeIP
为 true 时,则使用所引用 EgressGateway 的匹配中的 Node 的 IP 作为 Egress 地址; - 若未在创建时定义
ipv4
或ipv6
地址,且useNodeIP
为false
时;- 则自动从 EgressGateway 的
.ranges
中分配一个 IP 地址(开启 IPv6 时,请求分配一个 IPv4 和 一个 IPv6 地址)。
- 则自动从 EgressGateway 的
egressGatewayName
不能为空。
- 若在创建时定义了
- 支持使用节点 IP 作为 Egress IP(只允许选择一种);
- 选择需要应用 EgressPolicy 的 Pod; a. 以 Label 的方式进行选择 b. 直接指定 Pod 的网段 (a 和 b 不能同时使用)
- 指定访问 Egress 的目标地址,若未指定目标地址,则生效的策略位目标地址非集群内 CIDR 时,全部转发到 Egress 节点;
- 策略的优先级。