×

OpenStack 云控制器管理器

从 OpenShift Container Platform 4.12 开始,在 Red Hat OpenStack Platform (RHOSP) 上运行的集群已从旧版 OpenStack 云提供程序切换到外部 OpenStack 云控制器管理器 (CCM)。此更改遵循 Kubernetes 中从树内旧版云提供程序迁移到通过使用云控制器管理器实现的外部云提供程序的迁移。

为了保留用户为旧版云提供程序定义的配置,现有配置将在迁移过程中映射到新的配置。它会在 `openshift-config` 命名空间中搜索名为 `cloud-provider-config` 的配置。

配置映射名称 `cloud-provider-config` 不是静态配置的。它源自 `infrastructure/cluster` CRD 中的 `spec.cloudConfig.name` 值。

找到的配置将同步到 `openshift-cloud-controller-manager` 命名空间中的 `cloud-conf` 配置映射。

作为此同步的一部分,OpenStack CCM 运算符会更改新的配置映射,使其属性与外部云提供程序兼容。文件将按以下方式更改

  • `[Global] secret-name`、`[Global] secret-namespace` 和 `[Global] kubeconfig-path` 选项将被删除。它们不适用于外部云提供程序。

  • `[Global] use-clouds`、`[Global] clouds-file` 和 `[Global] cloud` 选项将被添加。

  • 整个 `[BlockStorage]` 部分将被删除。外部云提供程序不再执行存储操作。块存储配置由 Cinder CSI 驱动程序管理。

此外,CCM 运算符会强制执行许多默认选项。这些选项的值将始终按如下方式覆盖

[Global]
use-clouds = true
clouds-file = /etc/openstack/secret/clouds.yaml
cloud = openstack
...

[LoadBalancer]
enabled = true

`clouds-value` 值 `/etc/openstack/secret/clouds.yaml` 将映射到 `openshift-cloud-controller-manager` 命名空间中的 `openstack-cloud-credentials` 配置。您可以修改此文件中的 RHOSP 云,就像修改任何其他 `clouds.yaml` 文件一样。

OpenStack 云控制器管理器 (CCM) 配置映射

OpenStack CCM 配置映射定义了集群如何与 RHOSP 云交互。默认情况下,此配置存储在 `openshift-cloud-controller-manager` 命名空间中 `cloud-conf` 配置映射的 `cloud.conf` 密钥下。

`cloud-conf` 配置映射是从 `openshift-config` 命名空间中的 `cloud-provider-config` 配置映射生成的。

要更改 `cloud-conf` 配置映射描述的设置,请修改 `cloud-provider-config` 配置映射。

作为此同步的一部分,CCM 运算符会覆盖某些选项。有关更多信息,请参阅“RHOSP 云控制器管理器”。

例如

`cloud-conf` 配置映射示例
apiVersion: v1
data:
  cloud.conf: |
    [Global] (1)
    secret-name = openstack-credentials
    secret-namespace = kube-system
    region = regionOne
    [LoadBalancer]
    enabled = True
kind: ConfigMap
metadata:
  creationTimestamp: "2022-12-20T17:01:08Z"
  name: cloud-conf
  namespace: openshift-cloud-controller-manager
  resourceVersion: "2519"
  uid: cbbeedaf-41ed-41c2-9f37-4885732d3677
1 使用 `clouds.yaml` 文件设置全局选项,而不是修改配置映射。

以下选项存在于配置映射中。除非另有说明,否则它们对于在 RHOSP 上运行的集群是必需的。

负载均衡器选项

CCM 支持用于使用 Octavia 的部署的几种负载均衡器选项。

Neutron-LBaaS 支持已弃用。

选项 描述

enabled

是否启用 `LoadBalancer` 类型服务的集成。默认值为 `true`。

floating-network-id

可选。用于为负载均衡器虚拟 IP 地址 (VIP) 创建浮动 IP 地址的外部网络。如果云中存在多个外部网络,则必须设置此选项,或者用户必须在服务注释中指定loadbalancer.openstack.org/floating-network-id

floating-subnet-id

可选。用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网。可以被服务注释loadbalancer.openstack.org/floating-subnet-id覆盖。

floating-subnet

可选。用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网的名称模式(如果以~开头,则为 glob 或正则表达式)。可以被服务注释loadbalancer.openstack.org/floating-subnet覆盖。如果多个子网匹配该模式,则使用第一个具有可用 IP 地址的子网。

floating-subnet-tags

可选。用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网的标签。可以被服务注释loadbalancer.openstack.org/floating-subnet-tags覆盖。如果多个子网匹配这些标签,则使用第一个具有可用 IP 地址的子网。

如果 RHOSP 网络配置为禁用共享,例如,在创建期间使用--no-share标志,则此选项不受支持。将网络设置为共享以使用此选项。

lb-method

用于创建负载均衡器池的负载均衡算法。对于 Amphora 提供程序,值可以是ROUND_ROBINLEAST_CONNECTIONSSOURCE_IP。默认值为ROUND_ROBIN

对于 OVN 提供程序,仅支持SOURCE_IP_PORT算法。

对于 Amphora 提供程序,如果使用LEAST_CONNECTIONSSOURCE_IP方法,请在openshift-config命名空间中的cloud-provider-config配置映射中将create-monitor选项配置为true,并在负载均衡器类型服务上配置ETP:Local,以允许在客户端到服务端点连接中强制执行平衡算法。

lb-provider

可选。用于指定负载均衡器的提供程序,例如amphoraoctavia。仅支持 Amphora 和 Octavia 提供程序。

lb-version

可选。负载均衡器 API 版本。仅支持"v2"

subnet-id

创建负载均衡器 VIP 的网络服务子网的 ID。对于双栈部署,请勿设置此选项。OpenStack 云提供程序会自动选择要用于负载均衡器的子网。

network-id

创建负载均衡器 VIP 的网络服务网络的 ID。如果设置了subnet-id,则不需要。如果未设置此属性,则会根据集群节点使用的网络自动选择网络。

create-monitor

是否为服务负载均衡器创建健康检查程序。声明externalTrafficPolicy: Local的服务需要健康检查程序。默认值为false

如果您使用的是早于版本 17 的 RHOSP 以及ovn提供程序,则此选项不受支持。

monitor-delay

向负载均衡器成员发送探测的间隔(秒)。默认值为5

monitor-max-retries

将负载均衡器成员的操作状态更改为ONLINE所需的成功检查次数。有效范围是110,默认值为1

monitor-timeout

监视器等待连接到后端之前超时的时间(秒)。默认值为3

internal-lb

是否创建没有浮动 IP 地址的内部负载均衡器。默认值为false

LoadBalancerClass "ClassName"

这是一个包含一组选项的配置部分。

  • floating-network-id

  • floating-subnet-id

  • floating-subnet

  • floating-subnet-tags

  • network-id

  • subnet-id

这些选项的行为与 CCM 配置文件负载均衡器部分中相同名称的选项的行为相同。

您可以通过指定服务注释loadbalancer.openstack.org/class来设置ClassName值。

max-shared-lb

可以共享负载均衡器的服务的最大数量。默认值为2

操作员覆盖的选项

CCM 操作员会覆盖以下选项,您可能在配置 RHOSP 时会认识到这些选项。请勿自行配置它们。它们仅出于信息目的包含在此文档中。

选项 描述

auth-url

RHOSP 身份服务 URL。例如,http://128.110.154.166/identity

os-endpoint-type

要从服务目录中使用的端点类型。

username

身份服务用户名。

password

身份服务用户密码。

domain-id

身份服务用户域 ID。

domain-name

身份服务用户域名称。

tenant-id

身份服务项目 ID。如果您使用的是身份服务应用程序凭据,请勿设置此选项。

在身份 API 的版本 3 中,将标识符tenant更改为projecttenant-id的值会自动映射到 API 中的项目结构。

tenant-name

身份服务项目名称。

tenant-domain-id

身份服务项目域 ID。

tenant-domain-name

身份服务项目域名称。

user-domain-id

身份服务用户域 ID。

user-domain-name

身份服务用户域名称。

use-clouds

是否从clouds.yaml文件获取授权凭据。本节中设置的选项优先于从clouds.yaml文件中读取的值。

CCM 在以下位置搜索文件:

  1. clouds-file选项的值。

  2. 存储在环境变量OS_CLIENT_CONFIG_FILE中的文件路径。

  3. pkg/openstack目录。

  4. ~/.config/openstack目录。

  5. /etc/openstack目录。

clouds-file

clouds.yaml文件的路径。如果use-clouds选项设置为true,则使用它。

cloud

要在clouds.yaml文件中使用的命名云。如果use-clouds选项设置为true,则使用它。