4.2. 部署后在 RHOSO 环境中启用 TLS
如果在 OpenShift (RHOSO)环境中部署的 Red Hat OpenStack Services 中禁用了 TLS,您可以在可正常工作的 RHOSO 环境中重新启用它,并尽可能减少中断。
先决条件
- RHOSO 环境部署在 Red Hat OpenShift Container Platform (RHOCP)集群中。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services。
-
以具有
cluster-admin权限的用户身份登录到可访问 RHOCP 集群的工作站。
流程
-
在工作站上打开
OpenStackControlPlane自定义资源(CR)文件openstack_control_plane.yaml。 在
spec配置中添加以下tls配置(如果尚不存在):spec: tls: ingress: ca: duration: 87600h0m0s cert: duration: 43800h0m0s enabled: true podLevel: enabled: true1 internal: ca: duration: 87600h0m0s cert: duration: 43800h0m0s libvirt: ca: duration: 87600h0m0s cert: duration: 43800h0m0s ovn: ca: duration: 87600h0m0s cert: duration: 43800h0m0s- 1
- 如果定义文件中已存在
tls配置,请确保启用了'podLevel'。
更新 control plane:
$ oc apply -f openstack_control_plane.yaml -n <namespace>rabbitmq pod 无法更改操作环境中的 TLS 配置,因此您必须删除现有 rabbitmq pod,以使用启用了 TLS 的新 rabbitmq pod 更新 control plane:
$ oc delete pod -n openstack -l app.kubernetes.io/component=rabbitmq等待 control plane 就绪:
$ oc wait openstackcontrolplane -n <namespace> --for=condition=Ready --timeout=400s -l core.openstack.org/openstackcontrolplane在等待 control plane 就绪时,无法创建新的工作负载,并且无法使用 OpenStack API 管理现有工作负载。data plane 节点上的
nova-compute服务无法连接到 cell1 rabbitmq,并报告为 down :$ oc rsh openstackclient $ openstack compute service list -c Binary -c Host -c Status -c State +----------------+-------------------------------------+---------+-------+ | Binary | Host | Status | State | +----------------+-------------------------------------+---------+-------+ | nova-conductor | nova-cell0-conductor-0 | enabled | up | | nova-scheduler | nova-scheduler-0 | enabled | up | | nova-conductor | nova-cell1-conductor-0 | enabled | up | | nova-compute | edpm-compute-0.ctlplane.example.com | enabled | down | | nova-compute | edpm-compute-1.ctlplane.example.com | enabled | down | +----------------+-------------------------------------+---------+-------+OVN 控制器和 OVN 元数据代理无法连接到南向数据库:
$ openstack network agent list -c 'Agent Type' -c Host -c Alive -c State +------------------------------+-------------------------------------+-------+-------+ | Agent Type | Host | Alive | State | +------------------------------+-------------------------------------+-------+-------+ | OVN Controller Gateway agent | crc | :-) | UP | | OVN Controller agent | edpm-compute-1.ctlplane.example.com | XXX | UP | | OVN Metadata agent | edpm-compute-1.ctlplane.example.com | XXX | UP | | OVN Controller agent | edpm-compute-0.ctlplane.example.com | XXX | UP | | OVN Metadata agent | edpm-compute-0.ctlplane.example.com | XXX | UP | +------------------------------+-------------------------------------+-------+-------+注意如果没有通过 control plane 路由工作负载流量,现有工作负载不会受到影响。
为 data plane 上的每个节点打开
OpenStackDataPlaneNodeSetCR 定义文件,并各自启用 TLS:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: <node_set_name> namespace: openstack spec: tlsEnabled: true保存更新的
OpenStackDataPlaneNodeSetCR 定义文件并应用更新:$ oc apply -f openstack_data_plane.yaml -n <namespace>检查每个节点中是否启用了 TLS:
$ oc get openstackdataplanenodeset <node_set_name> -n <namespace> -o json | jq .items[0].spec.tlsEnabled true在工作站上创建一个文件来定义
OpenStackDataPlaneDeploymentCR:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: <node_set_deployment_name>-
将
<node_set_deployment_name> 替换为OpenStackDataPlaneDeploymentCR 的名称。名称必须是唯一的,必须包含小写字母数字字符(hyphen)或.(句点),且必须以字母数字字符开头和结尾。
提示为定义文件和
OpenStackDataPlaneDeploymentCR 提供唯一和描述性名称,以指示修改的节点集的用途。-
将
添加您修改的
OpenStackDataPlaneNodeSetCR 来启用 TLS:spec: nodeSets: - <nodeSet_name>-
保存
OpenStackDataPlaneDeploymentCR 部署文件。 部署修改后的
OpenStackDataPlaneNodeSetCR:$ oc create -f openstack_data_plane_deploy.yaml -n <namespace>您可以在部署执行时查看 Ansible 日志:
$ oc get pod -l app=openstackansibleee -n <namespace> -w $ oc logs -l app=openstackansibleee -f --max-log-requests 10 -n <namespace>如果
oc logs命令返回类似以下错误的错误,请提高--max-log-requests值:error: you are attempting to follow 19 log streams, but maximum allowed concurrency is 10, use --max-log-requests to increase the limit验证修改后的
OpenStackDataPlaneNodeSetCR 是否已部署:$ oc get openstackdataplanedeployment -n <namespace> NAME STATUS MESSAGE openstack-data-plane True Setup Complete $ oc get openstackdataplanenodeset -n <namespace> NAME STATUS MESSAGE openstack-data-plane True NodeSet Ready有关返回状态的信息,请参阅 在 OpenShift 上部署 Red Hat OpenStack Services 指南中的 Data plane 条件和状态。
如果状态表示 data plane 尚未部署,则对部署进行故障排除。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 指南中的对 data plane 创建和部署进行故障排除。
验证
nova-compute服务是否已重新连接到 TLS rabbitmq:$ oc rsh openstackclient $ openstack compute service list -c Binary -c Host -c Status -c State +----------------+-------------------------------------+---------+-------+ | Binary | Host | Status | State | +----------------+-------------------------------------+---------+-------+ | nova-conductor | nova-cell0-conductor-0 | enabled | up | | nova-scheduler | nova-scheduler-0 | enabled | up | | nova-conductor | nova-cell1-conductor-0 | enabled | up | | nova-compute | edpm-compute-0.ctlplane.example.com | enabled | up | | nova-compute | edpm-compute-1.ctlplane.example.com | enabled | up | +----------------+-------------------------------------+---------+-------+验证 OVN 代理是否已再次运行:
$ openstack network agent list -c 'Agent Type' -c Host -c Alive -c State +------------------------------+-------------------------------------+-------+-------+ | Agent Type | Host | Alive | State | +------------------------------+-------------------------------------+-------+-------+ | OVN Controller Gateway agent | crc | :-) | UP | | OVN Controller agent | edpm-compute-1.ctlplane.example.com | :-) | UP | | OVN Metadata agent | edpm-compute-1.ctlplane.example.com | :-) | UP | | OVN Controller agent | edpm-compute-0.ctlplane.example.com | :-) | UP | | OVN Metadata agent | edpm-compute-0.ctlplane.example.com | :-) | UP | +------------------------------+-------------------------------------+-------+-------+