搜索

8.2. 在 MicroShift 中使用 Operator Lifecycle Manager

download PDF

MicroShift 中使用 Operator Lifecycle Manager (OLM)软件包管理器来安装和运行可选 的附加组件 Operator

8.2.1. 在 MicroShift 中使用 OLM 的注意事项

  • MicroShift 不使用 OpenShift Container Platform 中所应用的集群 Operator。
  • 您必须为应用程序一起使用的附加组件 Operator 创建自己的目录。默认不提供目录。

    • 每个目录都必须集群中添加了一个可访问的 CatalogSource,以便 OLM catalog Operator 可以使用目录进行内容。
  • 您必须使用 CLI 对 MicroShift 进行 OLM 活动。控制台和 OperatorHub GUI 不可用。

重要

在使用 Operator 之前,请验证红帽构建的 MicroShift 上支持 Operator 的供应商。

8.2.2. 确定 OLM 安装类型

您可以安装 OLM 软件包管理器以用于 MicroShift 4.15 或更新版本。根据您的用例,可以为 MicroShift 集群安装 OLM 的不同方法。

8.2.3. MicroShift 中的命名空间使用

microshift-olm RPM 会创建三个默认命名空间:一个用于运行 OLM,两个用于目录和 Operator 安装。您可以根据需要为用例创建额外的命名空间。

8.2.3.1. 默认命名空间

下表列出了默认命名空间,以及各个命名空间如何工作的简要描述。

表 8.1. OLM 为 MicroShift 创建的默认命名空间

默认命名空间

详情

openshift-operator-lifecycle-manager

OLM 软件包管理器在此命名空间中运行。

openshift-marketplace

全局命名空间。默认为空。要使目录源对所有命名空间的用户全局可用,请在 catalog-source YAML 中设置 openshift-marketplace 命名空间。

openshift-operators

Operator 在 MicroShift 中运行的默认命名空间。引用 openshift-operators 命名空间中的目录的 Operator 必须具有 AllNamespaces 监视范围。

8.2.3.2. 自定义命名空间

如果要在单个命名空间中同时使用目录和 Operator,则必须创建自定义命名空间。创建命名空间后,您必须在该命名空间中创建目录。在自定义命名空间中运行的所有 Operator 必须具有相同的单命名空间监视范围。

8.2.4. 关于构建 Operator 目录

要将 Operator Lifecycle Manager (OLM)与 MicroShift 搭配使用,您必须构建自定义 Operator 目录,然后使用 OLM 管理。MicroShift 不包含在 OpenShift Container Platform 中包含的标准目录。

8.2.4.1. 基于文件的目录

您可以为自定义 Operator 创建目录或过滤广泛可用 Operator 的目录。您可以组合这两种方法创建特定用例所需的目录。要使用您自己的 Operator 和 OLM 运行 MicroShift,请使用基于文件的目录结构创建一个目录。

重要
  • 在集群中添加目录源 时,在 catalogSource.yaml 文件中将 securityContextConfig 值设置为 restricted。确保您的目录可以使用 受限 权限运行。

其他资源

8.2.5. 如何使用 OLM 部署 Operator

创建并部署自定义目录后,您必须创建一个 Subscription 自定义资源(CR),以访问目录并安装您选择的 Operator。Operator 运行的位置取决于创建 Subscription CR 的命名空间。

重要

OLM 中的 Operator 具有监视范围。例如,一些 Operator 仅支持监视自己的命名空间,而其他 Operator 支持监视集群中的每个命名空间。在给定命名空间中安装的所有 Operator 必须具有相同的监视范围。

8.2.5.1. 连接和 OLM Operator 部署

可以在目录运行的任何位置部署 Operator。

  • 对于连接到互联网的集群,不需要镜像镜像。镜像可以通过网络拉取。
  • 对于 MicroShift 只能访问内部网络的受限网络,镜像必须镜像到内部 registry。
  • 对于 MicroShift 集群完全离线的用例,所有镜像都必须嵌入到 osbuild 蓝图中。

其他资源

8.2.5.2. 使用全局命名空间将基于 OLM 的 Operator 添加到网络集群中

要将不同的 Operator 部署到不同的命名空间中,请使用此流程。对于具有网络连接的 MicroShift 集群,Operator Lifecycle Manager (OLM)可以访问托管在远程 registry 上的源。以下流程列出了使用配置文件安装使用全局命名空间的 Operator 的基本步骤。

注意

要使用安装在不同命名空间中的 Operator 或多个命名空间中,请确保目录源和引用 Operator 在 openshift-marketplace 命名空间中运行的 Subscription CR。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 已安装 Operator Lifecycle Manager (OLM)。
  • 您已在全局命名空间中创建了一个自定义目录。

流程

  1. 使用以下命令确认 OLM 正在运行:

    $ oc -n openshift-operator-lifecycle-manager get pod -l app=olm-operator

    输出示例

    NAME                            READY   STATUS    RESTARTS   AGE
    olm-operator-85b5c6786-n6kbc    1/1     Running   0          2m24s

  2. 使用以下命令确认 OLM catalog Operator 正在运行:

    $ oc -n openshift-operator-lifecycle-manager get pod -l app=catalog-operator

    输出示例

    NAME                                READY   STATUS    RESTARTS   AGE
    catalog-operator-5fc7f857b6-tj8cf   1/1     Running   0          2m33s

注意

以下步骤假设您使用全局命名空间 openshift-marketplace。目录必须与 Operator 在同一命名空间中运行。Operator 必须支持 AllNamespaces 模式。

  1. 使用以下示例 YAML 创建 CatalogSource 对象:

    目录源 YAML 示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: operatorhubio-catalog
      namespace: openshift-marketplace 1
    spec:
      sourceType: grpc
      image: quay.io/operatorhubio/catalog:latest
      displayName: Community Operators 2
      publisher: OperatorHub.io
      grpcPodConfig:
        securityContextConfig: restricted 3
      updateStrategy:
        registryPoll:
          interval: 60m

    1
    全局命名空间。将 metadata.namespace 设置为 openshift-marketplace 可让目录在所有命名空间中运行。任何命名空间中的订阅可以引用 openshift-marketplace 命名空间中创建的目录。
    2
    对于 MicroShift,默认情况下不通过 OLM 安装社区 Operator。此处仅列出的示例。
    3
    对于 MicroShift,securityContextConfig 的值必须设置为 restricted
  2. 运行以下命令来应用 CatalogSource 配置:

    $ oc apply -f <my-catalog-source.yaml> 1
    1
    <my-catalog-source.yaml > 替换为您的目录源配置文件名称。在本例中,使用 catalogsource.yaml

    输出示例

    catalogsource.operators.coreos.com/operatorhubio-catalog created

  3. 要验证是否已应用目录源,请使用以下命令检查 READY 状态:

    $ oc describe catalogsources.operators.coreos.com -n openshift-marketplace operatorhubio-catalog

    输出示例

    Name:         operatorhubio-catalog
    Namespace:    openshift-marketplace
    Labels:       <none>
    Annotations:  <none>
    API Version:  operators.coreos.com/v1alpha1
    Kind:         CatalogSource
    Metadata:
      Creation Timestamp:  2024-01-31T09:55:31Z
      Generation:          1
      Resource Version:    1212
      UID:                 4edc1a96-83cd-4de9-ac8c-c269ca895f3e
    Spec:
      Display Name:  Community Operators
      Grpc Pod Config:
        Security Context Config:  restricted
      Image:                      quay.io/operatorhubio/catalog:latest
      Publisher:                  OperatorHub.io
      Source Type:                grpc
      Update Strategy:
        Registry Poll:
          Interval:  60m
    Status:
      Connection State:
        Address:              operatorhubio-catalog.openshift-marketplace.svc:50051
        Last Connect:         2024-01-31T09:55:57Z
        Last Observed State:  READY 1
      Registry Service:
        Created At:         2024-01-31T09:55:31Z
        Port:               50051
        Protocol:           grpc
        Service Name:       operatorhubio-catalog
        Service Namespace:  openshift-marketplace
    Events:                 <none>

    1
    状态报告为 READY
  4. 使用以下命令确认目录源正在运行:

    $ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog

    输出示例

    NAME                          READY   STATUS    RESTARTS   AGE
    operatorhubio-catalog-x24nh   1/1     Running   0          59s

  5. 使用以下示例 YAML 创建 Subscription CR 配置文件:

    Subscription 自定义资源 YAML 示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: my-cert-manager
      namespace: openshift-operators
    spec:
      channel: stable
      name: cert-manager
      source: operatorhubio-catalog
      sourceNamespace: openshift-marketplace 1

    1
    全局命名空间。如果目录也在 openshift-marketplace 命名空间中运行,将 sourceNamespace 值设置为 openshift-marketplace 可让 Operator 在多个命名空间中运行。
  6. 运行以下命令来应用 Subscription CR 配置:

    $ oc apply -f <my-subscription-cr.yaml> 1
    1
    <my-subscription-cr.yaml& gt; 替换为您的订阅 CR 文件名。在本例中,使用 sub.yaml

    输出示例

    subscription.operators.coreos.com/my-cert-manager created

  7. 您可以为您要使用的特定 Operand 创建配置文件,并现在应用它。

验证

  1. 使用以下命令验证您的 Operator 是否正在运行:

    $ oc get pods -n openshift-operators 1
    1
    使用 Subscription CR 中的命名空间。
    注意

    在 Operator 启动时,允许一两分钟。

    输出示例

    NAME                                       READY   STATUS    RESTARTS   AGE
    cert-manager-7df8994ddb-4vrkr              1/1     Running   0          19s
    cert-manager-cainjector-5746db8fd7-69442   1/1     Running   0          18s
    cert-manager-webhook-f858bf58b-748nt       1/1     Running   0          18s

8.2.5.3. 将基于 OLM 的 Operator 添加到特定命名空间中的网络集群中

如果要为 Operator 指定命名空间,如 olm-microshift,请使用此流程。在本例中,目录有范围,可在全局 openshift-marketplace 命名空间中使用。Operator 使用来自全局命名空间的内容,但仅在 olm-microshift 命名空间中运行。对于具有网络连接的 MicroShift 集群,Operator Lifecycle Manager (OLM)可以访问托管在远程 registry 上的源。

重要

在特定命名空间中安装的所有 Operator 必须具有相同的监视范围。在这种情况下,监视范围为 OwnNamespace

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 已安装 Operator Lifecycle Manager (OLM)。
  • 您已创建了在全局命名空间中运行的自定义目录。

流程

  1. 使用以下命令确认 OLM 正在运行:

    $ oc -n openshift-operator-lifecycle-manager get pod -l app=olm-operator

    输出示例

    NAME                           READY   STATUS    RESTARTS   AGE
    olm-operator-85b5c6786-n6kbc   1/1     Running   0          16m

  2. 使用以下命令确认 OLM catalog Operator 正在运行:

    $ oc -n openshift-operator-lifecycle-manager get pod -l app=catalog-operator

    输出示例

    NAME                                READY   STATUS    RESTARTS   AGE
    catalog-operator-5fc7f857b6-tj8cf   1/1     Running   0          16m

  3. 使用以下 YAML 示例创建命名空间:

    命名空间 YAML 示例

    apiVersion: v1
    kind: Namespace
    metadata:
      name: olm-microshift

  4. 使用以下命令应用命名空间配置:

    $ oc apply -f _<ns.yaml>_ 1
    1
    <ns.yaml > 替换为命名空间配置文件的名称。在本例中,使用了 olm-microshift

    输出示例

    namespace/olm-microshift created

  5. 使用以下示例 YAML 创建 Operator 组 YAML:

    Operator 组 YAML 示例

    kind: OperatorGroup
    apiVersion: operators.coreos.com/v1
    metadata:
      name: og
      namespace: olm-microshift
    spec: 1
      targetNamespaces:
      - olm-microshift

    1
    对于使用全局命名空间的 Operator,请省略 spec.targetNamespaces 字段和值。
  6. 运行以下命令来应用 Operator 组配置:

    $ oc apply -f _<og.yaml>_ 1
    1
    <og.yaml > 替换为 operator 组配置文件的名称。

    输出示例

    operatorgroup.operators.coreos.com/og created

  7. 使用以下示例 YAML 创建 CatalogSource 对象:

    目录源 YAML 示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: CatalogSource
    metadata:
      name: operatorhubio-catalog
      namespace: openshift-marketplace 1
    spec:
      sourceType: grpc
      image: quay.io/operatorhubio/catalog:latest
      displayName: Community Operators 2
      publisher: OperatorHub.io
      grpcPodConfig:
        securityContextConfig: restricted 3
      updateStrategy:
        registryPoll:
          interval: 60m

    1
    全局命名空间。将 metadata.namespace 设置为 openshift-marketplace 可让目录在所有命名空间中运行。任何命名空间中的订阅 CR 可以引用 openshift-marketplace 命名空间中创建的目录。
    2
    对于 MicroShift,默认情况下不通过 OLM 安装社区 Operator。此处仅列出的示例。
    3
    对于 MicroShift,securityContextConfig 的值必须设置为 restricted
  8. 运行以下命令来应用 CatalogSource 配置:

    $ oc apply -f _<my-catalog-source.yaml>_ 1
    1
    <my-catalog-source.yaml > 替换为您的目录源配置文件名称。
  9. 要验证是否已应用目录源,请使用以下命令检查 READY 状态:

    $ oc describe catalogsources.operators.coreos.com -n openshift-marketplace operatorhubio-catalog

    输出示例

    Name:         operatorhubio-catalog
    Namespace:    openshift-marketplace
    Labels:       <none>
    Annotations:  <none>
    API Version:  operators.coreos.com/v1alpha1
    Kind:         CatalogSource
    Metadata:
      Creation Timestamp:  2024-01-31T10:09:46Z
      Generation:          1
      Resource Version:    2811
      UID:                 60ce4a36-86d3-4921-b9fc-84d67c28df48
    Spec:
      Display Name:  Community Operators
      Grpc Pod Config:
        Security Context Config:  restricted
      Image:                      quay.io/operatorhubio/catalog:latest
      Publisher:                  OperatorHub.io
      Source Type:                grpc
      Update Strategy:
        Registry Poll:
          Interval:  60m
    Status:
      Connection State:
        Address:              operatorhubio-catalog.openshift-marketplace.svc:50051
        Last Connect:         2024-01-31T10:10:04Z
        Last Observed State:  READY 1
      Registry Service:
        Created At:         2024-01-31T10:09:46Z
        Port:               50051
        Protocol:           grpc
        Service Name:       operatorhubio-catalog
        Service Namespace:  openshift-marketplace
    Events:                 <none>

    1
    状态报告为 READY
  10. 使用以下命令确认目录源正在运行:

    $ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog

    输出示例

    NAME                          READY   STATUS    RESTARTS   AGE
    operatorhubio-catalog-j7sc8   1/1     Running   0          43s

  11. 使用以下示例 YAML 创建 Subscription CR 配置文件:

    Subscription 自定义资源 YAML 示例

    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: my-gitlab-operator-kubernetes
      namespace: olm-microshift 1
    spec:
      channel: stable
      name: gitlab-operator-kubernetes
      source: operatorhubio-catalog
      sourceNamespace: openshift-marketplace 2

    1
    特定命名空间。Operator 引用内容的全局命名空间,但在 olm-microshift 命名空间中运行。
    2
    全局命名空间。任何命名空间中的订阅 CR 可以引用 openshift-marketplace 命名空间中创建的目录。
  12. 运行以下命令来应用 Subscription CR 配置:

    $ oc apply -f _<my-subscription-cr.yaml>_

    输出示例

    subscription.operators.coreos.com/my-gitlab-operator-kubernetes

  13. 您可以为您要使用的特定 Operand 创建配置文件,并现在应用它。

验证

  1. 使用以下命令验证您的 Operator 是否正在运行:

    $ oc get pods -n olm-microshift 1
    1
    使用 Subscription CR 中的命名空间。
    注意

    在 Operator 启动时,允许一两分钟。

    输出示例

    NAME                                         READY   STATUS    RESTARTS   AGE
    gitlab-controller-manager-69bb6df7d6-g7ntx   2/2     Running   0          3m24s

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.