Egress Gateway
- Egress Gateway allows a node to be designated as the source of all outbound cluster traffic (i.e. force all traffic out a specific node)
Enable
bpf:
masquerade: true
kubeProxyReplacement: true
egressGateway:
enabled: true
You then have to create an Egress Gateway Policy
apiVersion: cilium.io/v2
kind: CiliumEgressGatewayPolicy
metadata:
name: egress-sample
spec:
# Specify which pods should be subject to the current policy.
# Multiple pod selectors can be specified.
selectors:
- podSelector:
matchLabels:
org: empire
class: mediabot
# The following label selects default namespace
io.kubernetes.pod.namespace: default
nodeSelector: # optional, if not specified the policy applies to all nodes
matchLabels:
node.kubernetes.io/name: node1 # only traffic from this node will be SNATed
# Specify which destination CIDR(s) this policy applies to.
# Multiple CIDRs can be specified.
destinationCIDRs:
- "0.0.0.0/0"
- "::/0"
# Configure the gateway node.
egressGateway:
# Specify which node should act as gateway for this policy.
nodeSelector:
matchLabels:
node.kubernetes.io/name: node2
# Specify the IP address used to SNAT traffic matched by the policy.
# It must exist as an IP associated with a network interface on the instance.
egressIP: 10.168.60.100
# Alternatively it's possible to specify the interface to be used for egress traffic.
# In this case the first IPv4 and IPv6 addresses assigned to that interface will be used
# as egress IP.
# interface: enp0s8