23.5. 配置 IPsec 加密
启用 IPsec 后,OVN-Kubernetes 集群网络上的节点之间所有 pod 到 pod 网络流量都使用 IPsec 传输模式加密。
默认禁用 IPsec。它可以在安装集群期间或之后启用。有关集群安装的详情,请参阅 OpenShift Container Platform 安装概述。如果您需要在集群安装后启用 IPsec,您必须首先将集群 MTU 大小调整为考虑 IPsec ESP IP 标头的开销。
以下文档描述了如何在集群安装后启用和禁用 IPSec。
23.5.1. 先决条件
-
您已将集群 MTU 的大小减少为
46
字节,以便增加 IPsec ESP 标头的开销。有关重新定义集群使用的 MTU 大小的更多信息,请参阅为集群网络更改 MTU。
23.5.2. 使用 IPsec 加密的网络流量类型
启用 IPsec 后,只有 pod 间的以下网络流量会被加密:
- 集群网络的不同节点上的 pod 间的流量
- 从主机网络上的 pod 流量到集群网络上的 pod
以下流量流没有加密:
- 集群网络上同一节点上的 pod 间的流量
- 主机网络上的 pod 间的流量
- 从集群网络上的 pod 流量到主机网络上的 pod
下图中显示了加密和未加密的流程:
23.5.2.1. 启用 IPsec 时的网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
协议 | port | 描述 |
---|---|---|
UDP |
| IPsec IKE 数据包 |
| IPsec NAT-T 数据包 | |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
23.5.3. 加密协议和 IPsec 模式
使用的加密机制是 AES-GCM-16-256
。完整性检查值(ICV)为 16
字节。密钥长度为 256
位。
使用的 IPsec 模式是 传输模式,这是通过向原始数据包的 IP 标头添加封装安全 Payload (ESP) 标头来加密端到端通信的模式。OpenShift Container Platform 目前不支持 pod 到 pod 通信的 IPsec Tunnel 模式。
23.5.4. 安全证书生成和轮转
Cluster Network Operator(CNO)生成自签名 X.509 证书颁发机构(CA),该颁发机构(CA)用于加密。来自每个节点的证书签名请求(CSR)由 CNO 自动实现。
CA 的有效期为 10 年。独立节点证书的有效期为 5 年,并在 4 年半后自动轮转。
23.5.5. 启用 IPsec 加密
作为集群管理员,您可以在集群安装后启用 IPsec 加密。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
使用具有
cluster-admin
权限的用户登陆到集群。 -
您已将集群 MTU 的大小减少为
46
字节,以允许 IPsec ESP 标头的开销。
流程
要启用 IPsec 加密,请输入以下命令:
$ oc patch networks.operator.openshift.io cluster --type=merge \ -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"ipsecConfig":{ }}}}}'
23.5.6. 验证是否启用了 IPsec
作为集群管理员,您可以验证 IPsec 是否已启用。
验证
要查找 OVN-Kubernetes control plane pod 的名称,请输入以下命令:
$ oc get pods -n openshift-ovn-kubernetes | grep ovnkube-master
输出示例
ovnkube-master-4496s 1/1 Running 0 6h39m ovnkube-master-d6cht 1/1 Running 0 6h42m ovnkube-master-skblc 1/1 Running 0 6h51m ovnkube-master-vf8rf 1/1 Running 0 6h51m ovnkube-master-w7hjr 1/1 Running 0 6h51m ovnkube-master-zsk7x 1/1 Running 0 6h42m
验证在集群中启用了 IPsec:
$ oc -n openshift-ovn-kubernetes -c nbdb rsh ovnkube-master-<XXXXX> \ ovn-nbctl --no-leader-only get nb_global . ipsec
其中:
<XXXXX>
- 指定上一步中 pod 的随机字符序列。
输出示例
true
23.5.7. 禁用 IPsec 加密
作为集群管理员,只有在集群安装后启用了 IPsec 时,才能禁用 IPsec 加密。
如果在安装集群时启用了 IPsec,则无法使用此流程禁用 IPsec。
先决条件
-
安装 OpenShift CLI(
oc
)。 -
使用具有
cluster-admin
权限的用户登陆到集群。
流程
要禁用 IPsec 加密,请输入以下命令:
$ oc patch networks.operator.openshift.io/cluster --type=json \ -p='[{"op":"remove", "path":"/spec/defaultNetwork/ovnKubernetesConfig/ipsecConfig"}]'
-
可选:您可以将集群 MTU 的大小增加
46
个字节,因为 IP 数据包中不再有 IPsec ESP 标头的开销。