21.8. OpenStack Cloud Controller Manager 参考指南

21.8.1. OpenStack Cloud Controller Manager

在 OpenShift Container Platform 4.12 中,在 Red Hat OpenStack Platform (RHOSP) 上运行的集群从旧的 OpenStack 云供应商切换到外部 OpenStack Cloud Controller Manager (CCM)。此更改遵循 Kubernetes 的变化,它从 in-tree(传统的云供应商)变为使用 Cloud Controller Manager 实施的外部云供应商。

要为旧的云供应商保留用户定义的配置,现有配置作为迁移过程的一部分映射到新的配置。它会在 openshift-config 命名空间中搜索名为 cloud-provider-config 的配置。

注意

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

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

作为此同步的一部分,OpenStack CCM Operator 会更改新的配置映射,以便其属性与外部云供应商兼容。该文件通过以下方式更改:

  • [Global] secret-name,[Global] secret-namespace, 和 [Global] kubeconfig-path 选项会被删除。它们不适用于外部云供应商。
  • 添加 [Global] use-clouds,[Global] clouds-file, 和 [Global] cloud 选项。
  • 整个 [BlockStorage] 部分已被删除。外部云供应商不再执行存储操作。块存储配置由 Cinder CSI 驱动程序管理。

另外,CCM Operator 会强制执行多个默认选项。这些选项的值始终被覆盖,如下所示:

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

[LoadBalancer]
use-octavia = true
enabled = true 1
1
如果网络被配置为使用 Kuryr,则默认值为 false

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

21.8.2. OpenStack Cloud Controller Manager (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 Operator 会覆盖一些选项。如需更多信息,请参阅 "RHOSP Cloud Controller Manager"。

例如:

cloud-conf 配置映射示例

apiVersion: v1
data:
  cloud.conf: |
    [Global] 1
    secret-name = openstack-credentials
    secret-namespace = kube-system
    region = regionOne
    [LoadBalancer]
    use-octavia = 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 上运行的集群,它们是必需的。

21.8.2.1. 负载均衡器选项

CCM 为使用 Octavia 的部署支持多个负载均衡器选项。

注意

neutron-rhcs 支持已弃用。

选项描述

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

可选。一个名称特征(如果以 ~ 开始为 glob 或正则表达式),用于为负载均衡器 VIP 创建浮动 IP 地址的外部网络子网。可以被服务注解 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。

network-id

创建负载均衡器 VIP 的网络服务网络的 ID。如果设置了 subnet-id,则不需要。

create-monitor

是否为服务负载均衡器创建运行状况监控器。声明 externalTrafficPolicy: Local 的服务需要健康监控器。默认值为 false

如果您使用早于 ovn 供应商的版本 17 的 RHOSP,则不支持这个选项。

monitor-delay

将探测发送到负载均衡器成员的时间间隔(以秒为单位)。默认值为 5

monitor-max-retries

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

monitor-timeout

监控器在超时前等待连接到后端的时间(以秒为单位)。默认值为 3

internal-lb

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

LoadBalancerClass "ClassName"

这是一个 config 部分,其中包含一组选项:

  • 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

21.8.2.2. Operator 覆盖的选项

CCM Operator 覆盖以下选项,您可以识别其配置 RHOSP。不要自行配置它们。本文档中包含它们仅用于信息。

选项描述

auth-url

RHOSP Identity 服务 URL。例如: http://128.110.154.166/identity

os-endpoint-type

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

username

Identity 服务用户名。

password

Identity 服务用户密码。

domain-id

Identity 服务用户域 ID。

domain-name

Identity 服务用户域名。

tenant-id

Identity 服务项目 ID。如果您使用 Identity 服务应用程序凭证,请保留这个选项。

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

tenant-name

Identity 服务项目名称。

tenant-domain-id

Identity service 项目域 ID。

tenant-domain-name

Identity service 项目域名。

user-domain-id

Identity 服务用户域 ID。

user-domain-name

Identity 服务用户域名。

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,则会使用它。