8.2. 在 MicroShift 中使用 Operator Lifecycle Manager
Operator Lifecycle Manager (OLM)软件包管理器在 MicroShift 中使用,用于 安装和运行可选附加组件 Operator。
8.2.1. 在 MicroShift 中使用 OLM 的注意事项
- 在 OpenShift Container Platform 中应用的集群 Operator 不会在 MicroShift 中使用。
您必须为您要用于应用程序的附加组件 Operator 创建自己的目录。默认不提供目录。
-
每个目录都必须添加到集群中的一个可访问的
CatalogSource
,以便 OLM 目录 Operator 可以使用目录进行内容。
-
每个目录都必须添加到集群中的一个可访问的
您必须使用 CLI 与 MicroShift 进行 OLM 活动。控制台和 OperatorHub GUI 不可用。
-
使用带有网络连接集群的 Operator Package Manager
opm
CLI,或为使用内部 registry 的自定义 Operator 构建目录。 - 要镜像目录和用于断开连接的集群的 Operator,请安装 oc-mirror OpenShift CLI 插件。
-
使用带有网络连接集群的 Operator Package Manager
在使用 Operator 之前,请验证红帽构建的 MicroShift 上是否支持 Operator 的供应商。
8.2.2. 确定您的 OLM 安装类型
您可以安装 OLM 软件包管理器以用于 MicroShift 4.15 或更新版本。根据您的用例,可以通过不同的方法为 MicroShift 集群安装 OLM。
-
您可以在 Red Hat Enterprise Linux (RHEL)上安装 MicroShift RPM 同时运行
microshift-olm
RPM。 -
您可以在现有的 MicroShift 4.17 上安装
microshift-olm
。安装 OLM 后重启 MicroShift 服务以进行更改。请参阅从 RPM 软件包安装 Operator Lifecycle Manager (OLM)。 - 您可以将 OLM 嵌入到 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中。请参阅 将 Operator Lifecycle Manager (OLM)服务添加到蓝图中。
8.2.3. MicroShift 中的命名空间使用
microshift-olm
RPM 创建三个默认命名空间:一个用于运行 OLM,两个用于目录和 Operator 安装。您可以根据您的用例需要创建额外的命名空间。
8.2.3.1. 默认命名空间
下表列出了默认命名空间以及每个命名空间的工作方式的简短描述。
默认命名空间 | 详情 |
| OLM 软件包管理器在此命名空间中运行。 |
|
全局命名空间。默认为空。要使目录源对所有命名空间中的用户全局可用,请在 catalog-source YAML 中设置 |
|
Operator 在 MicroShift 中运行的默认命名空间。引用 |
8.2.3.2. 自定义命名空间
如果要在一个命名空间中同时使用目录和 Operator,您必须创建一个自定义命名空间。创建命名空间后,您必须在该命名空间中创建目录。在自定义命名空间中运行的所有 Operator 都必须具有相同的单命名空间监视范围。
8.2.4. 关于构建 Operator 目录
要将 Operator Lifecycle Manager (OLM)与 MicroShift 搭配使用,您必须构建自定义 Operator 目录,然后使用 OLM 管理。OpenShift Container Platform 中包含的标准目录没有包括在 MicroShift 中。
8.2.4.1. 基于文件的目录
您可以为自定义 Operator 创建目录,或过滤广泛可用 Operator 的目录。您可以组合这两种方法来创建特定用例所需的目录。要使用您自己的 Operator 和 OLM 运行 MicroShift,请使用基于文件的目录结构制作目录。
- 详情请参阅 管理自定义目录和示例 目录。
-
另请参阅
opm
CLI 参考。
-
将目录源添加到集群时, 在
catalogSource.yaml
文件中将securityContextConfig
值设置为restricted
。确保您的目录可以使用restricted
权限运行。
其他资源
-
opm
CLI 参考 - 关于 Operator 目录
-
要使用
opm
CLI 创建基于文件的目录,请参阅管理自定义目录
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 添加到网络集群中
要将不同的操作器部署到不同的命名空间,请使用此流程。对于具有网络连接的 MicroShift 集群,Operator Lifecycle Manager (OLM)可以访问托管在远程 registry 上的源。以下流程列出了使用配置文件安装使用全局命名空间的 Operator 的基本步骤。
要使用安装在其他命名空间中或多个命名空间中的 Operator,请确保目录源和引用 Operator 的 Subscription CR 在 openshift-marketplace
命名空间中运行。
先决条件
-
已安装 OpenShift CLI (
oc
)。 - 已安装 Operator Lifecycle Manager (OLM)。
- 您已在全局命名空间中创建了自定义目录。
流程
使用以下命令确认 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
使用以下命令确认 OLM 目录 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 模式。
使用以下示例 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
运行以下命令来应用
CatalogSource
配置:$ oc apply -f <catalog_source.yaml> 1
- 1
- 将
<catalog-source.yaml
> 替换为您的目录源配置文件名称。在本例中,使用catalogsource.yaml
。
输出示例
catalogsource.operators.coreos.com/operatorhubio-catalog created
要验证是否应用了目录源,请使用以下命令检查
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
。
使用以下命令确认目录源正在运行:
$ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog
输出示例
NAME READY STATUS RESTARTS AGE operatorhubio-catalog-x24nh 1/1 Running 0 59s
使用以下示例 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
- 全局命名空间。将
sourceNamespace
值设置为openshift-marketplace
可让 Operator 在openshift-marketplace
命名空间中运行。
运行以下命令来应用 Subscription CR 配置:
$ oc apply -f <subscription_cr.yaml> 1
- 1
- 将
<subscription_cr.yaml&
gt; 替换为您的 Subscription CR 文件名。
输出示例
subscription.operators.coreos.com/my-cert-manager created
- 您可以为您要使用的特定 Operand 创建配置文件,并立即应用它。
验证
使用以下命令验证您的 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 必须具有相同的监视范围。在这种情况下,watch 范围为 OwnNamespace。
先决条件
-
已安装 OpenShift CLI (
oc
)。 - 已安装 Operator Lifecycle Manager (OLM)。
- 您已创建了在全局命名空间中运行的自定义目录。
流程
使用以下命令确认 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
使用以下命令确认 OLM 目录 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
使用以下示例 YAML 创建命名空间:
命名空间 YAML 示例
apiVersion: v1 kind: Namespace metadata: name: olm-microshift
使用以下命令应用命名空间配置:
$ oc apply -f <ns.yaml> 1
- 1
- 将
<ns.yaml
> 替换为命名空间配置文件的名称。本例中使用了olm-microshift
。
输出示例
namespace/olm-microshift created
使用以下示例 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
字段和值。
运行以下命令来应用 Operator 组配置:
$ oc apply -f <og.yaml> 1
- 1
- 将
<og.yaml
> 替换为 operator 组配置文件的名称。
输出示例
operatorgroup.operators.coreos.com/og created
使用以下示例 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
运行以下命令来应用
CatalogSource
配置:$ oc apply -f <catalog_source.yaml> 1
- 1
- 将
<catalog_source.yaml
> 替换为您的目录源配置文件名称。
要验证是否应用了目录源,请使用以下命令检查
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
。
使用以下命令确认目录源正在运行:
$ oc get pods -n openshift-marketplace -l olm.catalogSource=operatorhubio-catalog
输出示例
NAME READY STATUS RESTARTS AGE operatorhubio-catalog-j7sc8 1/1 Running 0 43s
使用以下示例 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
运行以下命令来应用 Subscription CR 配置:
$ oc apply -f <subscription_cr.yaml> 1
- 1
- 将
<subscription_cr.yaml
> 替换为 Subscription CR 配置文件的名称。
输出示例
subscription.operators.coreos.com/my-gitlab-operator-kubernetes
- 您可以为您要使用的特定 Operand 创建配置文件,并立即应用它。
验证
使用以下命令验证您的 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