2.2. 为 director Operator 的采用准备 RHOSO


当使用两个 Red Hat OpenShift Container Platform (RHOCP) master 节点在 OpenShift (RHOSO)环境中部署 Red Hat OpenStack Services 时,您必须执行以下操作:

  • 为 RHOSO 安装创建一个新命名空间。
  • 创建自定义节点网络配置策略。
  • 为每个隔离网络创建 NetworkAttachmentDefinition 自定义资源。
  • 安装 RHOSO 操作器.

流程

  1. 将剩余的两个节点的主机名保存到 RHOSO_NODES 变量中:

    $ RHOSO_NODES=$(oc get nodes -o name | grep -v $CONTROLLER_NODE | sed 's#node/##g' | tr '\n' ' ')
  2. 提取要用于 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
  3. 创建一个新命名空间,用于安装 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}
    }
  4. 为 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_NODE 1> 替换为节点的名称。
  5. 为每个隔离网络应用 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& gt; 替换为您的 OpenStack 18 命名空间。
  6. 确保 OVNKubernetes IPForwarding 字段设置为 enabled

    $ oc patch network.operator cluster -p '{"spec":{"defaultNetwork":{"ovnKubernetesConfig":{"gatewayConfig":{"ipForwarding": "Global"}}}}}' --type=merge
  7. 从 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
    }
  8. 安装 RHOSO 操作器。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的 安装和准备 Operator
  9. 应用与新的 OpenStack 18 部署匹配的 IPAddressPool 资源,以配置哪些 IP 可用作虚拟 IP (VIP):

    $ oc apply -f - <<EOF
    apiVersion: metallb.io/v1beta1
    kind: IPAddressPool
    ...
  10. 应用 L2Advertisement 资源来定义如何宣布 VIP:

    $ cat << EOF | oc apply -f -
    apiVersion: metallb.io/v1beta1
    kind: L2Advertisement
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部