8.2. 在 MicroShift 中使用 Operator Lifecycle Manager
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 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.15 上安装
microshift-olm
。在安装 OLM 后,重启 MicroShift 服务,以使更改生效。请参阅从 RPM 软件包安装 Operator Lifecycle Manager (OLM)。 - 您可以在 Red Hat Enterprise Linux for Edge (RHEL for Edge)镜像中嵌入 OLM。请参阅 将 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 管理。MicroShift 不包含在 OpenShift Container Platform 中包含的标准目录。
8.2.4.1. 基于文件的目录
您可以为自定义 Operator 创建目录或过滤广泛可用 Operator 的目录。您可以组合这两种方法创建特定用例所需的目录。要使用您自己的 Operator 和 OLM 运行 MicroShift,请使用基于文件的目录结构创建一个目录。
- 详情请参阅 管理自定义目录和示例 目录。
-
另请参阅
opm
CLI 参考。
-
当 在集群中添加目录源 时,在
catalogSource.yaml
文件中将securityContextConfig
值设置为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 添加到网络集群中
要将不同的 Operator 部署到不同的命名空间中,请使用此流程。对于具有网络连接的 MicroShift 集群,Operator Lifecycle Manager (OLM)可以访问托管在远程 registry 上的源。以下流程列出了使用配置文件安装使用全局命名空间的 Operator 的基本步骤。
要使用安装在不同命名空间中的 Operator 或多个命名空间中,请确保目录源和引用 Operator 在 openshift-marketplace
命名空间中运行的 Subscription CR。
先决条件
-
已安装 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 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 模式。
使用以下示例 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 <my-catalog-source.yaml> 1
- 1
- 将
<my-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
- 全局命名空间。如果目录也在
openshift-marketplace
命名空间中运行,将sourceNamespace
值设置为openshift-marketplace
可让 Operator 在多个命名空间中运行。
运行以下命令来应用 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
- 您可以为您要使用的特定 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 必须具有相同的监视范围。在这种情况下,监视范围为 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 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
使用以下 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 _<my-catalog-source.yaml>_ 1
- 1
- 将 <my-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 _<my-subscription-cr.yaml>_
输出示例
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