6.7. 为外部流量配置 IPsec 加密
作为集群管理员,要使用 IPsec 加密外部流量,您必须为网络基础架构配置 IPsec,包括提供 PKCS#12 证书。因为这个步骤使用 Butane 创建机器配置,所以您必须安装 butane 工具。
应用机器配置后,Machine Config Operator (MCO)会重启集群中的受影响节点以推出新机器配置。
先决条件
-
安装 OpenShift CLI (
oc) 。 -
您已在本地计算机上安装了
butane工具。 - 在集群中安装了 NMState Operator。
-
以具有
cluster-admin权限的用户身份登录集群。 - 您已为 IPsec 端点有一个现有的 PKCSxdg 证书,并以 Privacy Enhanced Mail (PEM)格式使用 CA 证书。
-
您在集群中的
Full或External模式中启用了 IPsec。 -
您必须在 OVN-Kubernetes 网络插件的
ovnKubernetesConfig.gatewayConfig规格中将routingViaHost参数设置为true。
流程
使用 NMState Operator 节点网络配置策略创建 IPsec 配置。如需更多信息,请参阅使用 nmstatectl 配置基于 IPsec 的 VPN 连接。
要识别 IPsec 端点的集群节点的 IP 地址,请输入以下命令:
oc get nodes
$ oc get nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
ipsec-config.yaml的文件,该文件具有 NMState Operator 的节点网络配置策略,如下例所示。有关NodeNetworkConfigurationPolicy对象的概述,请参阅 Kubernetes NMState 项目。NMState IPsec 传输配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 其中:
kubernetes.io/hostname- 指定要将策略应用到的主机名。此主机充当 IPsec 配置中的左侧主机。
name- 指定要在主机上创建的接口名称。
left-
指定在集群端终止 IPsec 隧道的集群节点的主机名。名称必须与您提供的 PKCS resources 证书中的 SAN
[Subject Alternate Name]匹配。 right-
指定外部主机名,如
host.example.com。名称应与您提供的 PKCS#12 证书中的 SAN[Subject Alternate Name]匹配。 rightsubnet指定外部主机的 IP 地址,如
10.1.2.3/32。NMState IPsec 隧道配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要配置 IPsec 接口,请输入以下命令:
oc create -f ipsec-config.yaml
$ oc create -f ipsec-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
授予以下证书文件添加到每个主机上的网络安全服务(NSS)数据库中。这些文件在下一步中作为 Butane 配置的一部分导入。
-
left_server.p12:IPsec 端点的证书捆绑包 -
ca.pem:您使用签名证书的证书颁发机构
-
- 创建机器配置以将证书添加到集群中。
从挂载的 secret 文件中读取密码:
password=$(cat run/secrets/<left_server_password>)
$ password=$(cat run/secrets/<left_server_password>)Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
left_server_password:: 包含密码的文件名称。此文件存在于挂载的 secret 中。
-
使用
pk12util工具,它预先打包了 Red Hat Enterprise Linux (RHEL),输入以下命令指定保护PKCSedServiceSet 文件的密码。确保将 <password> 值替换为您的密码。pk12util -W "<password>" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/
$ pk12util -W "<password>" -i /etc/pki/certs/left_server.p12 -d /var/lib/ipsec/nss/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为 control plane 和计算节点创建 Butane 配置文件,请输入以下命令:
注意您在配置文件中指定的 Butane 版本应与 OpenShift Container Platform 版本匹配,并且始终以
0结尾。例如,4.19.0。有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要将上一步中创建的 Butane 文件转换为机器配置,请输入以下命令:
for role in master worker; do butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml done$ for role in master worker; do butane -d . 99-ipsec-${role}-endpoint-config.bu -o ./99-ipsec-$role-endpoint-config.yaml doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要将机器配置应用到集群,请输入以下命令:
for role in master worker; do oc apply -f 99-ipsec-${role}-endpoint-config.yaml done$ for role in master worker; do oc apply -f 99-ipsec-${role}-endpoint-config.yaml doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要当 Machine Config Operator (MCO) 更新每个机器配置池中的机器时,它会逐一重启每个节点。在外部 IPsec 连接可用前,您必须等待所有节点更新。
验证
输入以下命令检查机器配置池状态:
oc get mcp
$ oc get mcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow 成功更新的节点具有以下状态:
UPDATED=true、UPDATING=false、DEGRADED=false。注意默认情况下,MCO 会一次在一个池中更新一个机器,从而导致迁移总时间随着集群大小的增加而增加。
要确认 IPsec 机器配置已被成功推出,请输入以下命令:
确认创建 IPsec 机器配置:
oc get mc | grep ipsec
$ oc get mc | grep ipsecCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
80-ipsec-master-extensions 3.2.0 6d15h 80-ipsec-worker-extensions 3.2.0 6d15h
80-ipsec-master-extensions 3.2.0 6d15h 80-ipsec-worker-extensions 3.2.0 6d15hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认已将 IPsec 扩展应用到 control plane 节点:
oc get mcp master -o yaml | grep 80-ipsec-master-extensions -c
$ oc get mcp master -o yaml | grep 80-ipsec-master-extensions -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow 确认计算节点的 IPsec 扩展的应用程序。示例输出将显示
2。oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -c
$ oc get mcp worker -o yaml | grep 80-ipsec-worker-extensions -cCopy to Clipboard Copied! Toggle word wrap Toggle overflow