3.5. 安装 OpenShift Ansible Broker

您可以安装 OpenShift Ansible Broker,以访问它所提供的服务捆绑包。

重要

OpenShift Container Platform 4 中已弃用 OpenShift Ansible Broker。Operator Framework 和 Operator Lifecycle Manager (OLM) 提供了等效和更好的功能。

3.5.1. 先决条件

3.5.2. 关于 OpenShift Ansible Broker

OpenShift Ansible Broker 是 Open Service Broker (OSB) API 的一种实施,可以管理 Ansible playbook 捆绑包 (APB) 定义的应用程序。APB 提供了一个在 OpenShift Container Platform 中定义和发布容器应用程序的方法,它包括构建到带有 Ansible 运行时的容器镜像中的一系列 Ansible playbook。APB 利用 Ansible 创建可自动完成复杂部署的标准机制。

OpenShift Ansible Broker 遵循以下基本工作流:

  1. 用户使用 OpenShift Container Platform Web 控制台从服务目录请求可用应用程序列表。
  2. 服务目录从 OpenShift Ansible Broker 请求可用应用程序列表。
  3. OpenShift Ansible Broker 与定义的容器镜像 registry 通信,以了解有哪些 APB 可用。
  4. 用户发出置备特定 APB 的请求。
  5. OpenShift Ansible Broker 通过调用 APB 上的置备方法来履行用户的置备请求。

默认情况下,OpenShift Container Platform 4 中不安装 OpenShift Ansible Service Broker。

3.5.2.1. Ansible playbook 捆绑包

Ansible playbook 捆绑包 (APB) 是一种轻量级应用程序定义,可让您利用 Ansible 角色和 playbook 中的现有投入。

APB 使用含有指定 playbook 的简单目录来执行 OSB API 操作,比如置备和绑定。apb.yml 文件中定义的元数据包含部署过程中要使用的一系列必要和可选参数。

3.5.3. 安装 OpenShift Ansible Service Broker Operator

先决条件

  • 已安装服务目录。

流程

以下流程使用 Web 控制台安装 OpenShift Ansible Service Broker Operator。

  1. 创建命名空间。

    1. 在 Web 控制台中导航至 AdministrationNamespaces,再点击 Create Namespace
    2. Name 字段中输入 openshift-ansible-service-broker,在 Labels 字段中输入 openshift.io/cluster-monitoring=true,然后点击 Create

      注意

      命名空间必须以 openshift- 开头。

  2. 创建集群角色绑定。

    1. 导航到 AdministrationRole Bindings,再点击 Create Binding
    2. 对于 Binding Type,选择 Cluster-wide Role Binding (ClusterRoleBinding)
    3. 对于 Role Binding,在 Name 字段中输入 ansible-service-broker
    4. 对于 Role,选择 admin
    5. 对于 Subject,选择 Service Account 选项,再选择 openshift-ansible-service-broker 命名空间,然后在 Subject Name 字段中输入 openshift-ansible-service-broker-operator
    6. 点击 Create
  3. 创建用于连接 Red Hat Container Catalog 的 secret。

    1. 导航到 WorkloadsSecrets。验证是否已选中 openshift-ansible-service-broker 项目。
    2. 点击 CreateKey/Value Secret
    3. 输入 asb-registry-auth 作为 Secret Name
    4. 添加名为 usernameKey 和值为 Red Hat Container Catalog 用户名的 Value
    5. 点击 Add Key/Value,再添加名为 passwordKey 和值为 Red Hat Container Catalog 密码的 Value
    6. 点击 Create
  4. 导航到 OperatorsOperatorHub 页面。验证是否已选中 openshift-ansible-service-broker 项目。
  5. 选择 OpenShift Ansible Service Broker Operator
  6. 阅读 Operator 的信息并点击 Install
  7. 检查默认选择并点击 Subscribe

接下来,必须启动 OpenShift Ansible Broker,以便能访问它所提供的服务捆绑包。

3.5.4. 启动 OpenShift Ansible Broker

安装 OpenShift Ansible Service Broker Operator 后,可以按照以下流程启动 OpenShift Ansible Broker。

先决条件

  • 已安装服务目录。
  • 已安装 OpenShift Ansible Service Broker Operator。

流程

  1. 在 Web 控制台中导航到 OperatorsInstalled Operators,再选择 openshift-ansible-service-broker 项目。
  2. 选择 OpenShift Ansible Service Broker Operator
  3. Provided APIs 下,点击 Automation BrokerCreate New
  4. 在提供的默认 YAML 里的 spec 字段中添加以下内容:

    registry:
      - name: rhcc
        type: rhcc
        url: https://registry.redhat.io
        auth_type: secret
        auth_name: asb-registry-auth

    这将引用安装 OpenShift Ansible Service Broker Operator 时创建的 secret,该 secret 允许您连接到 Red Hat Container Catalog。

  5. 设置其他 OpenShift Ansible Broker 配置选项,再点击 Create
  6. 验证 OpenShift Ansible Broker 是否已启动。

    在 OpenShift Ansible Broker 启动后,您可以通过导航到 CatalogDeveloper Catalog 并选中 Service Class 复选框来查看可用的服务捆绑包。请注意,可能需要等几分钟后 OpenShift Ansible Broker 才会启动,并且服务捆绑包可供使用。

    如果还没有看到这些服务类,您可以检查以下项目的状态:

    • OpenShift Ansible Broker Pod 状态

      • openshift-ansible-service-broker 项目的 WorkloadsPods 页面中,验证名称开头为 asb- 的 Pod 的状态是否为 Running 并且就绪状态是否为 Ready
    • 集群服务代理状态

      • CatalogBroker ManagementService Brokers 页面中,验证 ansible-service-broker 服务代理的状态是否为 Ready
    • 服务目录控制器管理器 Pod 日志

      • openshift-service-catalog-controller-manager 项目的 WorkloadsPods 页面中,检查各个 Pod 的日志,并验证是否看到一个含有 Successfully fetched catalog entries from broker 消息的日志条目。

3.5.4.1. OpenShift Ansible Broker 配置选项

您可以为 OpenShift Ansible Broker 设置以下选项。

表 3.1. OpenShift Ansible Broker 配置选项

YAML 键描述默认值

brokerName

用于标识代理实例的名称。

ansible-service-broker

brokerNamespace

代理所处的命名空间。

openshift-ansible-service-broker

brokerImage

用于代理的完全限定镜像。

docker.io/ansibleplaybookbundle/origin-ansible-service-broker:v4.0

brokerImagePullPolicy

用于代理镜像本身的拉取策略。

IfNotPresent

brokerNodeSelector

用于代理部署的节点选择器字符串。

''

registries

代理 registry 的 yaml 列表,指定允许用户配置的、代理用于从中发现并提供 APB 镜像的 registry。

请参阅默认 registries 数组

logLevel

代理日志的日志级别。

info

apbPullPolicy

APB Pod 的拉取策略。

IfNotPresent

sandboxRole

赋予用于执行 APB 的服务帐户的角色。

edit

keepNamespace

是否在 APB 完成后(不论结果如何)删除为运行 APB 而创建的临时命名空间。

false

keepNamespaceOnError

是否在 APB 完成后(仅当结果为错误时)删除为运行 APB 而创建的临时命名空间。

false

bootstrapOnStartup

代理是否应该在启动时运行它的 bootstrap 例程。

true

refreshInterval

代理 bootstrap 刷新其 APB 清单的时间间隔。

600s

launchApbOnBind

试验性:切换对绑定操作执行 APB 的代理。

false

autoEscalate

代理是否应该在运行 APB 时提升用户的权限。这通常保留为 false,因为代理执行原始用户授权来确保该用户具有授予 APB 沙盒的权限。

false

outputRequest

是否输出代理接收的低级 HTTP 请求。

false

registries 的默认数组

- type: rhcc
  name: rhcc
  url: https://registry.redhat.io
  white_list:
  - ".*-apb$"
  auth_type: secret
  auth_name: asb-registry-auth


为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。