2.2. 为 director Operator 的采用准备 RHOSO
当使用两个 Red Hat OpenShift Container Platform (RHOCP) master 节点在 OpenShift (RHOSO)环境中部署 Red Hat OpenStack Services 时,您必须执行以下操作:
- 为 RHOSO 安装创建一个新命名空间。
- 创建自定义节点网络配置策略。
-
为每个隔离网络创建
NetworkAttachmentDefinition自定义资源。 - 安装 RHOSO 操作器.
流程
将剩余的两个节点的主机名保存到
RHOSO_NODES变量中:$ RHOSO_NODES=$(oc get nodes -o name | grep -v $CONTROLLER_NODE | sed 's#node/##g' | tr '\n' ' ')提取要用于 RHOSO 安装和标签节点的节点:
$ export RHOSO18_NODE1=$(echo "${RHOSO_NODES}" | cut -d ' ' -f 1) $ export RHOSO18_NODE2=$(echo "${RHOSO_NODES}" | cut -d ' ' -f 2) $ oc label nodes "${RHOSO18_NODE1}" type=openstack $ oc label nodes "${RHOSO18_NODE2}" type=openstack创建一个新命名空间,用于安装 RHOSO。您必须在与 director Operator (OSPdO)不同的命名空间中安装 RHOSO:
$ oc get namespace ${RHOSO18_NAMESPACE} 2>/dev/null || { oc create namespace ${RHOSO18_NAMESPACE} || { echo "Failed to create namespace ${RHOSO18_NAMESPACE}" exit 1 } oc project ${RHOSO18_NAMESPACE} }为 RHOSO 创建自定义节点网络配置策略:
注意节点网络配置策略使用
nodeSelector属性限制为OSP18_NODE1/2。新节点网络配置策略会镜像现有节点网络配置策略。在以下示例中,子网范围会被重复使用。此外,OSPdO 将网桥用于控制,外部接口会重复。$ oc apply -f - <<EOF apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: labels: osp/interface: enp7s0 name: enp7s0-<RHOSO18_NODE1> spec: desiredState: dns-resolver: config: search: [] server: - 172.22.0.1 interfaces: - description: internalapi vlan interface name: enp7s0.20 state: up type: vlan vlan: base-iface: enp7s0 id: 20 reorder-headers: true ipv4: address: - ip: 172.17.0.5 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false - description: storage vlan interface name: enp7s0.30 state: up type: vlan vlan: base-iface: enp7s0 id: 30 reorder-headers: true ipv4: address: - ip: 172.18.0.5 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false - description: tenant vlan interface name: enp7s0.50 state: up type: vlan vlan: base-iface: enp7s0 id: 50 reorder-headers: true ipv4: address: - ip: 172.19.0.5 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false - description: storagemgmt vlan interface name: enp7s0.40 state: up type: vlan vlan: base-iface: enp7s0 id: 40 reorder-headers: true ipv4: address: - ip: 172.20.0.5 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false - description: Configuring Bridge ospbr with interface enp1s0 name: br-ctlplane mtu: 1500 type: linux-bridge state: up bridge: options: stp: enabled: false port: - name: enp1s0 vlan: {} ipv4: address: - ip: 172.22.0.51 prefix-length: 24 enabled: true dhcp: false ipv6: enabled: false - description: external bridge name: br-external type: linux-bridge mtu: 1500 ipv6: enabled: false ipv4: enabled: false bridge: options: stp: enabled: false port: - name: enp6s0 nodeSelector: kubernetes.io/hostname: <RHOSO18_NODE1> node-role.kubernetes.io/worker: "" EOF-
将
<RHOSO18_NODE1> 替换为节点的名称。
-
将
为每个隔离网络应用 RHOSO 的
NetworkAttachmentDefinition自定义资源,以将服务 pod 附加到网络:$ oc apply -f - <<EOF apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: ctlplane spec: config: | { "cniVersion": "0.3.1", "name": "ctlplane", "type": "bridge", "master": "br-ctlplane", "ipam": { "type": "whereabouts", "range": "172.22.0.0/24", "range_start": "172.22.0.30", "range_end": "172.22.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: internalapi spec: config: | { "cniVersion": "0.3.1", "name": "internalapi", "type": "macvlan", "master": "enp7s0.20", "ipam": { "type": "whereabouts", "range": "172.17.0.0/24", "range_start": "172.17.0.30", "range_end": "172.17.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: external spec: config: | { "cniVersion": "0.3.1", "name": "external", "type": "macvlan", "master": "br-external", "ipam": { "type": "whereabouts", "range": "10.0.0.0/24", "range_start": "10.0.0.30", "range_end": "10.0.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: storage spec: config: | { "cniVersion": "0.3.1", "name": "storage", "type": "macvlan", "master": "enp7s0.30", "ipam": { "type": "whereabouts", "range": "172.18.0.0/24", "range_start": "172.18.0.30", "range_end": "172.18.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: storagemgmt spec: config: | { "cniVersion": "0.3.1", "name": "storagemgmt", "type": "macvlan", "master": "enp7s0.40", "ipam": { "type": "whereabouts", "range": "172.19.0.0/24", "range_start": "172.19.0.30", "range_end": "172.19.0.70" } } --- apiVersion: k8s.cni.cncf.io/v1 kind: NetworkAttachmentDefinition metadata: name: tenant spec: config: | { "cniVersion": "0.3.1", "name": "tenant", "type": "macvlan", "master": "enp7s0.50", "ipam": { "type": "whereabouts", "range": "172.20.0.0/24", "range_start": "172.20.0.30", "range_end": "172.20.0.70" } } EOF-
将
<RHOSO18_NAMESPACE> 替换为您的 OpenStack 18 命名空间。
-
将
确保
OVNKubernetes IPForwarding字段设置为enabled:$ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge从 OSPdO 中提取并保存密码:
$ oc get secret tripleo-passwords -n $OSPDO_NAMESPACE -o json | jq -r '.data["tripleo-overcloud-passwords.yaml"]' | base64 -d >"${PASSWORD_FILE}" || { echo "ERROR: Failed to extract passwords from OSPdO" exit 1 }- 安装 RHOSO 操作器。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的 安装和准备 Operator。
应用与新的 OpenStack 18 部署匹配的
IPAddressPool资源,以配置哪些 IP 可用作虚拟 IP (VIP):$ oc apply -f - <<EOF apiVersion: metallb.io/v1beta1 kind: IPAddressPool ...应用
L2Advertisement资源来定义如何宣布 VIP:$ cat << EOF | oc apply -f - apiVersion: metallb.io/v1beta1 kind: L2Advertisement