第 8 章 基本网络隔离

配置 overcloud 以使用隔离网络,以便可以隔离托管特定类型的网络流量。Red Hat OpenStack Platform (RHOSP)包括一组环境文件,可用于配置此网络隔离。您可能还需要额外的环境文件来进一步自定义网络参数:

  • 可用于启用网络隔离的环境文件(/usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml)。

    注意

    在使用 director 部署 RHOSP 前,文件 network-isolation.yamlnetwork-environment.yaml 仅采用 Jinja2 格式,且具有 .j2.yaml 扩展。director 在部署过程中将这些文件呈现到 .yaml 版本。

  • 可用于配置网络默认值的环境文件(/usr/share/openstack-tripleo-heat-templates/environments/network-environment.yaml)。
  • 可用于定义网络设置的 network_data 文件,如 IP 范围、子网和虚拟 IP。本例演示了如何创建默认副本并编辑它以适合您的网络。
  • 用于为每个节点定义 NIC 布局的模板。overcloud 核心模板集合包含一组用于不同用例的默认值。
  • 可用于启用 NIC 的环境文件。本例使用位于 environments 目录中的默认文件。

8.1. 网络隔离

overcloud 默认为 provisioning 网络分配服务。但是,director 可以将 overcloud 网络流量划分为隔离的网络。若要使用隔离的网络,overcloud 包含一个启用此功能的环境文件。核心 heat 模板中的 environments/network-isolation.j2.yaml 文件是一个 Jinja2 文件,该文件在可组合网络文件中定义每个网络的所有端口和 VIP。呈现后,它会在带有完整资源 registry 的同一位置生成 network-isolation.yaml 文件:

resource_registry:
  # networks as defined in network_data.yaml
  OS::TripleO::Network::Storage: ../network/storage.yaml
  OS::TripleO::Network::StorageMgmt: ../network/storage_mgmt.yaml
  OS::TripleO::Network::InternalApi: ../network/internal_api.yaml
  OS::TripleO::Network::Tenant: ../network/tenant.yaml
  OS::TripleO::Network::External: ../network/external.yaml

  # Port assignments for the VIPs
  OS::TripleO::Network::Ports::StorageVipPort: ../network/ports/storage.yaml
  OS::TripleO::Network::Ports::StorageMgmtVipPort: ../network/ports/storage_mgmt.yaml
  OS::TripleO::Network::Ports::InternalApiVipPort: ../network/ports/internal_api.yaml
  OS::TripleO::Network::Ports::ExternalVipPort: ../network/ports/external.yaml
  OS::TripleO::Network::Ports::RedisVipPort: ../network/ports/vip.yaml

  # Port assignments by role, edit role definition to assign networks to roles.
  # Port assignments for the Controller
  OS::TripleO::Controller::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::Controller::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml
  OS::TripleO::Controller::Ports::InternalApiPort: ../network/ports/internal_api.yaml
  OS::TripleO::Controller::Ports::TenantPort: ../network/ports/tenant.yaml
  OS::TripleO::Controller::Ports::ExternalPort: ../network/ports/external.yaml

  # Port assignments for the Compute
  OS::TripleO::Compute::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::Compute::Ports::InternalApiPort: ../network/ports/internal_api.yaml
  OS::TripleO::Compute::Ports::TenantPort: ../network/ports/tenant.yaml

  # Port assignments for the CephStorage
  OS::TripleO::CephStorage::Ports::StoragePort: ../network/ports/storage.yaml
  OS::TripleO::CephStorage::Ports::StorageMgmtPort: ../network/ports/storage_mgmt.yaml

此文件的第一个部分具有 OS::TripleO::Network::114 资源的资源 registry 声明。默认情况下,这些资源使用 OS::114::None 资源类型,它不创建任何网络。通过将这些资源重定向到每个网络的 YAML 文件,您可以启用创建这些网络。

接下来的几个部分为各个角色中的节点创建 IP 地址。控制器节点在每个网络上都有 IP。计算和存储节点各自在网络的子集上具有 IP。

overcloud 网络的其他功能,如 第 9 章 自定义可组合网络第 10 章 自定义网络接口模板 依赖于 network-isolation.yaml 环境文件。因此,您必须在部署命令中包含呈现的环境文件:

$ openstack overcloud deploy --templates \
    ...
    -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
    ...