7.3. 从 OLM 1.0 中的目录安装 Operator (技术预览)
集群管理员可向其集群添加 目录、或策展 Operator 和 Kubernetes 扩展集合。Operator 作者将其产品发布到这些目录中。当您向集群添加目录时,您可以访问发布到目录中的 Operator 和扩展的版本、补丁和无线更新。
在 Operator Lifecycle Manager (OLM) 1.0 的当前技术预览版本中,您可以使用自定义资源(CR)从 CLI 以声明性方式管理目录和 Operator。
OLM 1.0 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
7.3.1. 先决条件 复制链接链接已复制到粘贴板!
使用具有
cluster-admin
权限的账户访问 OpenShift Container Platform 集群注意对于 OpenShift Container Platform 4.14,适用于 OLM 1.0 的流程仅基于 CLI。另外,管理员也可以使用普通方法(如 Import YAML 和 Search 页面)在 web 控制台中创建和查看相关对象。但是,现有的 OperatorHub 和 Installed Operators 页面还不会显示 OLM 1.0 组件。
在集群中启用
TechPreviewNoUpgrade
功能集警告启用
TechPreviewNoUpgrade
功能集将无法撤消,并防止次版本更新。不建议在生产环境集群中使用这些功能集。-
在您的工作站上安装的 OpenShift CLI (
oc
)
7.3.2. 关于 OLM 1.0 中的目录 复制链接链接已复制到粘贴板!
您可以使用 catalogd 组件查询 Kubernetes 扩展的目录,如 Operator 和控制器,从而发现可安装的内容。Catalogd 是一个 Kubernetes 扩展,为集群客户端解包目录内容,并是微服务的 Operator Lifecycle Manager (OLM) 1.0 套件的一部分。目前,catalogd 解包要打包并分发为容器镜像的目录内容。
7.3.2.1. OLM 1.0 中红帽提供的 Operator 目录 复制链接链接已复制到粘贴板!
Operator Lifecycle Manager (OLM) 1.0 默认不包括红帽提供的 Operator 目录。如果要在集群中添加红帽提供的目录,请为目录创建一个自定义资源 (CR),并将其应用到集群。以下自定义资源 (CR) 示例演示了如何为 OLM 1.0 创建目录资源。
Red Hat Operator 目录示例
认证的 Operator 目录示例
Community Operators 目录示例
以下命令在集群中添加目录:
命令语法
oc apply -f <catalog_name>.yaml
$ oc apply -f <catalog_name>.yaml
- 1
- 指定目录 CR,如
redhat-operators.yaml
。
以下流程使用 Red Hat Operator 目录和 Quay Operator 作为示例。
7.3.3. 关于 OLM 1.0 中的目标版本 复制链接链接已复制到粘贴板!
在 Operator Lifecycle Manager(OLM)1.0 中,集群管理员在 Operator 的自定义资源(CR)中以声明性方式设置 Operator 的目标版本。
如果在 Operator 的 CR 中指定频道,OLM 1.0 会从指定频道安装最新版本。当向指定的频道发布更新时,OLM 1.0 会自动更新至该频道的最新发行版本。
带有指定频道的 CR 示例
- 1
- 安装发布至指定频道的最新发行版本。对频道的更新会自动安装。
如果在 CR 中指定 Operator 的目标版本,OLM 1.0 将安装指定的版本。当在 Operator 的 CR 中指定目标版本时,OLM 1.0 在向目录发布更新时不会更改目标版本。
如果要更新集群中安装的 Operator 版本,您必须手动更新 Operator 的 CR。指定 Operator 的目标版本将 Operator 的版本固定到指定的发行版本。
指定了目标版本的 CR 示例
- 1
- 指定目标版本。如果要更新集群中安装的 Operator 版本,您必须手动将这个字段更新为所需的目标版本。
如果要更改 Operator 的安装版本,请将 Operator 的 CR 编辑为所需的目标版本。
在以前的 OLM 版本中,Operator 作者可以定义升级边缘,以防止您升级到不支持的版本。在开发的当前状态中,OLM 1.0 不强制升级边缘定义。您可以指定 Operator 的任何版本,OLM 1.0 会尝试应用更新。
您可以运行以下命令来检查 Operator 的目录内容,包括可用版本和频道:
命令语法
oc get package <catalog_name>-<package_name> -o yaml
$ oc get package <catalog_name>-<package_name> -o yaml
创建或更新 CR 后,运行以下命令来创建或修改 Operator:
命令语法
oc apply -f <extension_name>.yaml
$ oc apply -f <extension_name>.yaml
故障排除
如果指定了不存在的目标版本或频道,您可以运行以下命令来检查 Operator 的状态:
oc get operator.operators.operatorframework.io <operator_name> -o yaml
$ oc get operator.operators.operatorframework.io <operator_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.4. 在集群中添加目录 复制链接链接已复制到粘贴板!
要在集群中添加目录,请创建一个目录自定义资源(CR)并将其应用到集群。
流程
创建目录自定义资源(CR),如下例所示:
redhat-operators.yaml
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 在
spec.source.image
字段中指定目录的镜像。
运行以下命令在集群中添加目录:
oc apply -f redhat-operators.yaml
$ oc apply -f redhat-operators.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
catalog.catalogd.operatorframework.io/redhat-operators created
catalog.catalogd.operatorframework.io/redhat-operators created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令以验证目录的状态:
运行以下命令检查目录是否可用:
oc get catalog
$ oc get catalog
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME AGE redhat-operators 20s
NAME AGE redhat-operators 20s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查目录的状态:
oc get catalogs.catalogd.operatorframework.io -o yaml
$ oc get catalogs.catalogd.operatorframework.io -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.5. 从目录查找 Operator 复制链接链接已复制到粘贴板!
在集群中添加目录后,您可以查询目录以查找要安装的 Operator 和扩展。
前提条件
- 您已在集群中添加目录。
流程
运行以下命令,获取目录中的 Operator 扩展列表:
oc get packages
$ oc get packages
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 7.1. 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 Operator 或扩展的自定义资源 (CR) 的内容:
oc get package <catalog_name>-<package_name> -o yaml
$ oc get package <catalog_name>-<package_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
oc get package redhat-operators-quay-operator -o yaml
$ oc get package redhat-operators-quay-operator -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例 7.2. 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.6. 安装 Operator 复制链接链接已复制到粘贴板!
您可以通过创建 Operator 自定义资源(CR)并将其应用到集群来从目录安装 Operator。
前提条件
- 您已在集群中添加目录。
- 您已检查了 Operator 的详情,以查找您要安装的版本。
流程
创建一个 Operator CR,类似以下示例:
test-operator.yaml
CR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 Operator CR 应用到集群:
oc apply -f test-operator.yaml
$ oc apply -f test-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
operator.operators.operatorframework.io/quay-example created
operator.operators.operatorframework.io/quay-example created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令,以 YAML 格式查看 Operator 的 CR:
oc get operator.operators.operatorframework.io/quay-example -o yaml
$ oc get operator.operators.operatorframework.io/quay-example -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,获取 Operator 的控制器管理器 pod 的信息:
oc get pod -n quay-operator-system
$ oc get pod -n quay-operator-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE quay-operator.v3.8.12-6677b5c98f-2kdtb 1/1 Running 0 2m28s
NAME READY STATUS RESTARTS AGE quay-operator.v3.8.12-6677b5c98f-2kdtb 1/1 Running 0 2m28s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.7. 更新 Operator 复制链接链接已复制到粘贴板!
您可以通过编辑 Operator 的自定义资源(CR)并应用更改来更新 Operator。
先决条件
- 已安装目录。
- 已安装 Operator。
流程
运行以下命令,检查 Operator 的软件包内容以查找哪些频道和版本可用于更新:
oc get package <catalog_name>-<package_name> -o yaml
$ oc get package <catalog_name>-<package_name> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例命令
oc get package redhat-operators-quay-operator -o yaml
$ oc get package redhat-operators-quay-operator -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑 Operator 的 CR,将版本更新至
3.9.1
,如下例所示:test-operator.yaml
CR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将版本更新至
3.9.1
运行以下命令,将更新应用到集群:
oc apply -f test-operator.yaml
$ oc apply -f test-operator.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
operator.operators.operatorframework.io/quay-example configured
operator.operators.operatorframework.io/quay-example configured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您可以运行以下命令来通过 CLI 对 Operator 版本进行补丁并应用对 Operator 版本的更改:
oc patch operator.operators.operatorframework.io/quay-example -p \ '{"spec":{"version":"3.9.1"}}' \ --type=merge
$ oc patch operator.operators.operatorframework.io/quay-example -p \ '{"spec":{"version":"3.9.1"}}' \ --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
operator.operators.operatorframework.io/quay-example patched
operator.operators.operatorframework.io/quay-example patched
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证频道和版本更新是否已应用:
oc get operator.operators.operatorframework.io/quay-example -o yaml
$ oc get operator.operators.operatorframework.io/quay-example -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 验证版本是否已更新至
3.9.1
。
7.3.8. 删除 Operator 复制链接链接已复制到粘贴板!
您可以通过删除 Operator 的自定义资源(CR)来删除 Operator 及其自定义资源定义(CRD)。
先决条件
- 已安装目录。
- 已安装 Operator。
流程
运行以下命令来删除 Operator 及其 CRD:
oc delete operator.operators.operatorframework.io quay-example
$ oc delete operator.operators.operatorframework.io quay-example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
operator.operators.operatorframework.io "quay-example" deleted
operator.operators.operatorframework.io "quay-example" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证您的 Operator 及其资源已被删除:
运行以下命令验证 Operator 已被删除:
oc get operator.operators.operatorframework.io
$ oc get operator.operators.operatorframework.io
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
No resources found
No resources found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令验证 Operator 的系统命名空间是否已删除:
oc get ns quay-operator-system
$ oc get ns quay-operator-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Error from server (NotFound): namespaces "quay-operator-system" not found
Error from server (NotFound): namespaces "quay-operator-system" not found
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.9. 删除目录 复制链接链接已复制到粘贴板!
您可以通过删除其自定义资源 (CR) 来删除目录。
先决条件
- 已安装目录。
流程
运行以下命令来删除目录:
oc delete catalog <catalog_name>
$ oc delete catalog <catalog_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
catalog.catalogd.operatorframework.io "my-catalog" deleted
catalog.catalogd.operatorframework.io "my-catalog" deleted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
运行以下命令验证目录是否已删除:
oc get catalog
$ oc get catalog
Copy to Clipboard Copied! Toggle word wrap Toggle overflow