第 6 章 可组合的服务


Red Hat OpenStack Platform (RHOSP)包含了在角色上定义自定义角色和 compose 服务组合的功能。有关更多信息,请参阅高级 Overcloud 自定义指南中的 {defaultURL}/advanced_overcloud_customization/chap-roles[Composable Services 和 Custom Roles]。作为集成的一部分,您可以定义自己的自定义服务,并将它们包含在所选角色上。

6.1. 检查可组合的服务架构

核心 heat 模板集合包含两组可组合服务模板:

  • Puppet/服务 包含用于配置可组合服务的基础模板。
  • Docker/服务 包含关键 OpenStack 平台服务的容器化模板。这些模板作为对某些基础模板的增强并引用回基础模板。

每个模板都包含一个标识其用途的描述。例如,ntp.yaml 服务模板包含以下描述:

description: >
  NTP service deployment using puppet, this YAML file
  creates the interface between the HOT template
  and the puppet manifest that actually installs
  and configure NTP.

这些服务模板注册为特定于 RHOSP 部署的资源。这意味着,您可以使用 overcloud-resource-registry-puppet.j2.yaml 文件中定义的唯一 heat 资源命名空间调用每个资源。所有服务都将 OS::TripleO::Services 命名空间用作其资源类型。

有些资源直接使用基本可组合服务模板:

resource_registry:
  ...
  OS::TripleO::Services::Ntp: puppet/services/time/ntp.yaml
  ...

但是核心服务需要容器,如使用容器化服务模板。例如,keystone 容器化服务使用以下方法:

resource_registry:
  ...
  OS::TripleO::Services::Keystone: docker/services/keystone.yaml
  ...

这些容器化模板通常引用到基础模板,以包括 Puppet 配置。例如,docker/services/keystone.yaml 模板将基本模板的输出存储在 KeystoneBase 参数中:

KeystoneBase:
  type: ../../puppet/services/keystone.yaml

然后,容器化模板可以包含基础模板中的功能和数据。

overcloud.j2.yaml heat 模板包含 Jinja2 的代码部分,用于在 roles_data.yaml 文件中为每个自定义角色定义一个服务列表:

{{role.name}}Services:
  description: A list of service resources (configured in the Heat
               resource_registry) which represent nested stacks
               for each service that should get installed on the {{role.name}} role.
  type: comma_delimited_list
  default: {{role.ServicesDefault|default([])}}

对于默认角色,这将创建以下服务列表参数: ControllerServicesComputeServicesBlockStorageServicesObjectStorageServices、CephStorageServices 和 CephStorageServices

您可以在 roles_data.yaml 文件中为每个自定义角色定义默认服务。例如,默认的 Controller 角色包含以下内容:

- name: Controller
  CountDefault: 1
  ServicesDefault:
    - OS::TripleO::Services::CACerts
    - OS::TripleO::Services::CephMon
    - OS::TripleO::Services::CephExternal
    - OS::TripleO::Services::CephRgw
    - OS::TripleO::Services::CinderApi
    - OS::TripleO::Services::CinderBackup
    - OS::TripleO::Services::CinderScheduler
    - OS::TripleO::Services::CinderVolume
    - OS::TripleO::Services::Core
    - OS::TripleO::Services::Kernel
    - OS::TripleO::Services::Keystone
    - OS::TripleO::Services::GlanceApi
    - OS::TripleO::Services::GlanceRegistry
...

这些服务随后被定义为 ControllerServices 参数的默认列表。

您还可以使用环境文件覆盖服务参数的默认列表。例如,您可以在环境文件中将 ControllerServices 定义为 parameter_default,以覆盖 roles_data.yaml 文件中的服务列表。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.