Skip to content

Commit

Permalink
remove tunnel limitation for IPSec
Browse files Browse the repository at this point in the history
this PR is based on antrea-io#2486 and I verified all tunnel modes with
IPSec in K8s Cluster, it all works fine now, so I remove the limitation
on our docs and the check in the code.

Signed-off-by: Lan Luo <luola@vmware.com>
  • Loading branch information
luolanzone committed Aug 10, 2021
1 parent d785904 commit 4d7473b
Show file tree
Hide file tree
Showing 11 changed files with 32 additions and 44 deletions.
11 changes: 5 additions & 6 deletions build/yamls/antrea-aks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3740,8 +3740,7 @@ data:
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0
# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
#enableIPSecTunnel: false
# ClusterIP CIDR range for IPv6 Services. It's required when using kube-proxy to provide IPv6 Service in a Dual-Stack
Expand Down Expand Up @@ -3892,7 +3891,7 @@ metadata:
annotations: {}
labels:
app: antrea
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
namespace: kube-system
---
apiVersion: v1
Expand Down Expand Up @@ -3963,7 +3962,7 @@ spec:
fieldRef:
fieldPath: spec.serviceAccountName
- name: ANTREA_CONFIG_MAP_NAME
value: antrea-config-gdgb98gmfd
value: antrea-config-66dt98cgtb
image: projects.registry.vmware.com/antrea/antrea-ubuntu:latest
imagePullPolicy: IfNotPresent
livenessProbe:
Expand Down Expand Up @@ -4014,7 +4013,7 @@ spec:
key: node-role.kubernetes.io/master
volumes:
- configMap:
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
name: antrea-config
- name: antrea-controller-tls
secret:
Expand Down Expand Up @@ -4295,7 +4294,7 @@ spec:
operator: Exists
volumes:
- configMap:
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
name: antrea-config
- hostPath:
path: /etc/cni/net.d
Expand Down
11 changes: 5 additions & 6 deletions build/yamls/antrea-eks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3740,8 +3740,7 @@ data:
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0
# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
#enableIPSecTunnel: false
# ClusterIP CIDR range for IPv6 Services. It's required when using kube-proxy to provide IPv6 Service in a Dual-Stack
Expand Down Expand Up @@ -3892,7 +3891,7 @@ metadata:
annotations: {}
labels:
app: antrea
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
namespace: kube-system
---
apiVersion: v1
Expand Down Expand Up @@ -3963,7 +3962,7 @@ spec:
fieldRef:
fieldPath: spec.serviceAccountName
- name: ANTREA_CONFIG_MAP_NAME
value: antrea-config-gdgb98gmfd
value: antrea-config-66dt98cgtb
image: projects.registry.vmware.com/antrea/antrea-ubuntu:latest
imagePullPolicy: IfNotPresent
livenessProbe:
Expand Down Expand Up @@ -4014,7 +4013,7 @@ spec:
key: node-role.kubernetes.io/master
volumes:
- configMap:
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
name: antrea-config
- name: antrea-controller-tls
secret:
Expand Down Expand Up @@ -4297,7 +4296,7 @@ spec:
operator: Exists
volumes:
- configMap:
name: antrea-config-gdgb98gmfd
name: antrea-config-66dt98cgtb
name: antrea-config
- hostPath:
path: /etc/cni/net.d
Expand Down
11 changes: 5 additions & 6 deletions build/yamls/antrea-gke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3740,8 +3740,7 @@ data:
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0
# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
#enableIPSecTunnel: false
# ClusterIP CIDR range for IPv6 Services. It's required when using kube-proxy to provide IPv6 Service in a Dual-Stack
Expand Down Expand Up @@ -3892,7 +3891,7 @@ metadata:
annotations: {}
labels:
app: antrea
name: antrea-config-dc9bfdb7f6
name: antrea-config-d2f597tg62
namespace: kube-system
---
apiVersion: v1
Expand Down Expand Up @@ -3963,7 +3962,7 @@ spec:
fieldRef:
fieldPath: spec.serviceAccountName
- name: ANTREA_CONFIG_MAP_NAME
value: antrea-config-dc9bfdb7f6
value: antrea-config-d2f597tg62
image: projects.registry.vmware.com/antrea/antrea-ubuntu:latest
imagePullPolicy: IfNotPresent
livenessProbe:
Expand Down Expand Up @@ -4014,7 +4013,7 @@ spec:
key: node-role.kubernetes.io/master
volumes:
- configMap:
name: antrea-config-dc9bfdb7f6
name: antrea-config-d2f597tg62
name: antrea-config
- name: antrea-controller-tls
secret:
Expand Down Expand Up @@ -4298,7 +4297,7 @@ spec:
path: /home/kubernetes/bin
name: host-cni-bin
- configMap:
name: antrea-config-dc9bfdb7f6
name: antrea-config-d2f597tg62
name: antrea-config
- hostPath:
path: /etc/cni/net.d
Expand Down
13 changes: 6 additions & 7 deletions build/yamls/antrea-ipsec.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3733,15 +3733,14 @@ data:
# - vxlan
# - gre
# - stt
tunnelType: gre
#tunnelType: geneve
# Default MTU to use for the host gateway interface and the network interface of each Pod.
# If omitted, antrea-agent will discover the MTU of the Node's primary interface and
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0
# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
enableIPSecTunnel: true
# ClusterIP CIDR range for Services. It's required when AntreaProxy is not enabled, and should be
Expand Down Expand Up @@ -3897,7 +3896,7 @@ metadata:
annotations: {}
labels:
app: antrea
name: antrea-config-cccf8b2ggf
name: antrea-config-fbk7tmbtmh
namespace: kube-system
---
apiVersion: v1
Expand Down Expand Up @@ -3977,7 +3976,7 @@ spec:
fieldRef:
fieldPath: spec.serviceAccountName
- name: ANTREA_CONFIG_MAP_NAME
value: antrea-config-cccf8b2ggf
value: antrea-config-fbk7tmbtmh
image: projects.registry.vmware.com/antrea/antrea-ubuntu:latest
imagePullPolicy: IfNotPresent
livenessProbe:
Expand Down Expand Up @@ -4028,7 +4027,7 @@ spec:
key: node-role.kubernetes.io/master
volumes:
- configMap:
name: antrea-config-cccf8b2ggf
name: antrea-config-fbk7tmbtmh
name: antrea-config
- name: antrea-controller-tls
secret:
Expand Down Expand Up @@ -4344,7 +4343,7 @@ spec:
operator: Exists
volumes:
- configMap:
name: antrea-config-cccf8b2ggf
name: antrea-config-fbk7tmbtmh
name: antrea-config
- hostPath:
path: /etc/cni/net.d
Expand Down
11 changes: 5 additions & 6 deletions build/yamls/antrea.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3740,8 +3740,7 @@ data:
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0
# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
#enableIPSecTunnel: false
# ClusterIP CIDR range for Services. It's required when AntreaProxy is not enabled, and should be
Expand Down Expand Up @@ -3897,7 +3896,7 @@ metadata:
annotations: {}
labels:
app: antrea
name: antrea-config-mdd77fmc97
name: antrea-config-dd8ffc8tk9
namespace: kube-system
---
apiVersion: v1
Expand Down Expand Up @@ -3968,7 +3967,7 @@ spec:
fieldRef:
fieldPath: spec.serviceAccountName
- name: ANTREA_CONFIG_MAP_NAME
value: antrea-config-mdd77fmc97
value: antrea-config-dd8ffc8tk9
image: projects.registry.vmware.com/antrea/antrea-ubuntu:latest
imagePullPolicy: IfNotPresent
livenessProbe:
Expand Down Expand Up @@ -4019,7 +4018,7 @@ spec:
key: node-role.kubernetes.io/master
volumes:
- configMap:
name: antrea-config-mdd77fmc97
name: antrea-config-dd8ffc8tk9
name: antrea-config
- name: antrea-controller-tls
secret:
Expand Down Expand Up @@ -4300,7 +4299,7 @@ spec:
operator: Exists
volumes:
- configMap:
name: antrea-config-mdd77fmc97
name: antrea-config-dd8ffc8tk9
name: antrea-config
- hostPath:
path: /etc/cni/net.d
Expand Down
3 changes: 1 addition & 2 deletions build/yamls/base/conf/antrea-agent.conf
Original file line number Diff line number Diff line change
Expand Up @@ -77,8 +77,7 @@ featureGates:
# also adjust MTU to accommodate for tunnel encapsulation overhead (if applicable).
#defaultMTU: 0

# Whether or not to enable IPsec encryption of tunnel traffic. IPsec encryption is only supported
# for the GRE tunnel type.
# Whether or not to enable IPsec encryption of tunnel traffic.
#enableIPSecTunnel: false

# ClusterIP CIDR range for Services. It's required when AntreaProxy is not enabled, and should be
Expand Down
3 changes: 1 addition & 2 deletions cmd/antrea-agent/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,8 +89,7 @@ type AgentConfig struct {
// --service-cluster-ip-range. When AntreaProxy is enabled, this parameter is not needed.
// No default value for this field.
ServiceCIDRv6 string `yaml:"serviceCIDRv6,omitempty"`
// Whether or not to enable IPSec (ESP) encryption for Pod traffic across Nodes. IPSec encryption
// is supported only for the GRE tunnel type. Antrea uses Preshared Key (PSK) for IKE
// Whether or not to enable IPSec (ESP) encryption for Pod traffic across Nodes. Antrea uses Preshared Key (PSK) for IKE
// authentication. When IPSec tunnel is enabled, the PSK value must be passed to Antrea Agent
// through an environment variable: ANTREA_IPSEC_PSK.
// Defaults to false.
Expand Down
3 changes: 0 additions & 3 deletions cmd/antrea-agent/options.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,6 @@ func (o *Options) validate(args []string) error {
o.config.TunnelType != ovsconfig.GRETunnel && o.config.TunnelType != ovsconfig.STTTunnel {
return fmt.Errorf("tunnel type %s is invalid", o.config.TunnelType)
}
if o.config.EnableIPSecTunnel && o.config.TunnelType != ovsconfig.GRETunnel {
return fmt.Errorf("IPSec encyption is supported only for GRE tunnel")
}
if o.config.OVSDatapathType != string(ovsconfig.OVSDatapathSystem) && o.config.OVSDatapathType != string(ovsconfig.OVSDatapathNetdev) {
return fmt.Errorf("OVS datapath type %s is not supported", o.config.OVSDatapathType)
}
Expand Down
2 changes: 1 addition & 1 deletion docs/design/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,7 @@ the [Antrea IPsec deployment yaml](/build/yamls/antrea-ipsec.yml), which creates
a Kubernetes Secret to save the PSK value and populates it to the
`ANTREA_IPSEC_PSK` environment variable of the Antrea Agent container.

When IPsec is enabled, Antrea Agent will create a separate GRE tunnel port on
When IPsec is enabled, Antrea Agent will create a separate tunnel port on
the OVS bridge for each remote Node, and write the PSK string and the remote
Node IP address to two OVS interface options of the tunnel interface. Then
`ovs-monitor-ipsec` can detect the tunnel and create IPsec Security Policies
Expand Down
6 changes: 3 additions & 3 deletions docs/ipsec-tunnel.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# IPsec Encryption of Tunnel Traffic with Antrea

Antrea supports encrypting tunnel traffic across Nodes with IPsec ESP. At this
moment, IPsec encyption works only for GRE tunnel (but not Geneve, VXLAN, and
STT tunnel types).
Antrea supports encrypting tunnel traffic across Nodes with IPsec ESP.
IPsec encyption works for all OVS supported tunnel including Geneve, GRE,
VXLAN, and STT tunnel.

## Prerequisites

Expand Down
2 changes: 0 additions & 2 deletions hack/generate-manifest.sh
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,6 @@ fi

if $IPSEC; then
sed -i.bak -E "s/^[[:space:]]*#[[:space:]]*enableIPSecTunnel[[:space:]]*:[[:space:]]*[a-z]+[[:space:]]*$/enableIPSecTunnel: true/" antrea-agent.conf
# change the tunnel type to GRE which works better with IPSec encryption than other types.
sed -i.bak -E "s/^[[:space:]]*#[[:space:]]*tunnelType[[:space:]]*:[[:space:]]*[a-z]+[[:space:]]*$/tunnelType: gre/" antrea-agent.conf
fi

if $ALLFEATURES; then
Expand Down

0 comments on commit 4d7473b

Please sign in to comment.