目前,Operator Lifecycle Manager (OLM) v1 无法验证私有注册表,例如 Red Hat 提供的 Operator 目录。这是一个已知问题。因此,依赖于安装 Red Hat Operators 目录的 OLM v1 流程无法正常工作。(OCPBUGS-36364)
Operator Lifecycle Manager (OLM) v1 仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您抢先体验即将推出的产品功能,从而能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围。 |
集群管理员可以将 *目录*(或经过精心挑选的 Operators 和 Kubernetes 扩展集合)添加到其集群中。Operator 作者将其产品发布到这些目录。将目录添加到集群后,您可以访问发布到该目录的 Operators 和扩展的版本、补丁和无线更新。
您可以使用自定义资源 (CR) 通过 CLI 以声明方式管理目录和扩展。
*基于文件的目录* 是 Operator Lifecycle Manager (OLM) 中目录格式的最新迭代。它是基于纯文本(JSON 或 YAML)的声明性配置演变,取代了早期的 SQLite 数据库格式,并且完全向后兼容。
Kubernetes 定期弃用某些 API,这些 API 在后续版本中将被删除。因此,从使用删除该 API 的 Kubernetes 版本的 OpenShift Container Platform 版本开始,Operators 将无法使用已删除的 API。 如果您的集群使用自定义目录,请参阅 控制 Operator 与 OpenShift Container Platform 版本的兼容性,了解有关 Operator 作者如何更新其项目以避免工作负载问题并防止不兼容升级的更多详细信息。 |
您可以通过查询目录以获取 Kubernetes 扩展(例如 Operators 和控制器),使用 catalogd 组件来发现可安装的内容。Catalogd 是一个 Kubernetes 扩展,它为集群内客户端解压缩目录内容,并且是 Operator Lifecycle Manager (OLM) v1 微服务套件的一部分。目前,catalogd 解压缩作为容器镜像打包和分发的目录内容。
如果您尝试安装没有唯一名称的 Operator 或扩展,则安装可能会失败或导致不可预测的结果。出现这种情况的原因如下:
|
Operator Lifecycle Manager (OLM) v1 默认不包含 Red Hat 提供的 Operator 目录。如果您想将 Red Hat 提供的目录添加到您的集群,请为该目录创建一个自定义资源 (CR) 并将其应用于集群。以下自定义资源 (CR) 示例展示了如何为 OLM v1 创建目录资源。
|
apiVersion: catalogd.operatorframework.io/v1alpha1
kind: ClusterCatalog
metadata:
name: redhat-operators
spec:
source:
type: image
image:
ref: registry.redhat.io/redhat/redhat-operator-index:v4.17
pullSecret: <pull_secret_name>
pollInterval: <poll_interval_duration> (1)
1 | 指定轮询远程注册表以查找较新镜像摘要的间隔。默认值为 24h 。有效单位包括秒 (s )、分钟 (m ) 和小时 (h )。要禁用轮询,请设置零值,例如 0s 。 |
apiVersion: catalogd.operatorframework.io/v1alpha1
kind: ClusterCatalog
metadata:
name: certified-operators
spec:
source:
type: image
image:
ref: registry.redhat.io/redhat/certified-operator-index:v4.17
pullSecret: <pull_secret_name>
pollInterval: 24h
apiVersion: catalogd.operatorframework.io/v1alpha1
kind: ClusterCatalog
metadata:
name: community-operators
spec:
source:
type: image
image:
ref: registry.redhat.io/redhat/community-operator-index:v4.17
pullSecret: <pull_secret_name>
pollInterval: 24h
以下命令将目录添加到您的集群
$ oc apply -f <catalog_name>.yaml (1)
1 | 指定目录 CR,例如 redhat-operators.yaml 。 |
如果您想使用托管在私有注册表上的目录,例如来自 registry.redhat.io
的 Red Hat 提供的 Operator 目录,则必须拥有一个作用域为 openshift-catalogd
命名空间的拉取密钥。
Catalogd 无法从 OpenShift Container Platform 集群读取全局拉取密钥。Catalogd 只能读取其部署命名空间中密钥的引用。
目前,Operator Lifecycle Manager (OLM) v1 无法验证私有注册表,例如 Red Hat 提供的 Operator 目录。这是一个已知问题。因此,依赖于安装 Red Hat Operators 目录的 OLM v1 流程无法正常工作。(OCPBUGS-36364) |
安全注册表的登录凭据
在您的工作站上安装 Docker 或 Podman
如果您已经有包含安全注册表登录凭据的 .dockercfg
文件,请运行以下命令创建拉取密钥
$ oc create secret generic <pull_secret_name> \
--from-file=.dockercfg=<file_path>/.dockercfg \
--type=kubernetes.io/dockercfg \
--namespace=openshift-catalogd
$ oc create secret generic redhat-cred \
--from-file=.dockercfg=/home/<username>/.dockercfg \
--type=kubernetes.io/dockercfg \
--namespace=openshift-catalogd
如果您已经有包含安全注册表登录凭据的 $HOME/.docker/config.json
文件,请运行以下命令创建拉取密钥
$ oc create secret generic <pull_secret_name> \
--from-file=.dockerconfigjson=<file_path>/.docker/config.json \
--type=kubernetes.io/dockerconfigjson \
--namespace=openshift-catalogd
$ oc create secret generic redhat-cred \
--from-file=.dockerconfigjson=/home/<username>/.docker/config.json \
--type=kubernetes.io/dockerconfigjson \
--namespace=openshift-catalogd
如果您没有包含安全注册表登录凭据的 Docker 配置文件,请运行以下命令创建拉取密钥
$ oc create secret docker-registry <pull_secret_name> \
--docker-server=<registry_server> \
--docker-username=<username> \
--docker-password=<password> \
--docker-email=<email> \
--namespace=openshift-catalogd
$ oc create secret docker-registry redhat-cred \
--docker-server=registry.redhat.io \
--docker-username=username \
--docker-password=password \
--docker-email=[email protected] \
--namespace=openshift-catalogd
要将目录添加到集群,请创建一个目录自定义资源 (CR) 并将其应用于集群。
目前,Operator Lifecycle Manager (OLM) v1 无法验证私有注册表,例如 Red Hat 提供的 Operator 目录。这是一个已知问题。因此,依赖于安装 Red Hat Operators 目录的 OLM v1 流程无法正常工作。(OCPBUGS-36364) |
如果您想使用托管在私有注册表上的目录,例如来自 registry.redhat.io
的 Red Hat 提供的 Operator 目录,则必须拥有一个作用域为 openshift-catalogd
命名空间的拉取密钥。
Catalogd 无法从 OpenShift Container Platform 集群读取全局拉取密钥。Catalogd 只能读取其部署命名空间中密钥的引用。
创建一个类似于以下示例的目录自定义资源 (CR)
redhat-operators.yaml
示例apiVersion: catalogd.operatorframework.io/v1alpha1
kind: ClusterCatalog
metadata:
name: redhat-operators
spec:
source:
type: image
image:
ref: registry.redhat.io/redhat/redhat-operator-index:v4.17 (1)
pullSecret: <pull_secret_name> (2)
pollInterval: <poll_interval_duration> (3)
1 | 在 spec.source.image 字段中指定目录的镜像。 |
2 | 如果您的目录托管在安全注册表(例如 registry.redhat.io )上,则必须创建一个作用域为 openshift-catalog 命名空间的拉取密钥。 |
3 | 指定轮询远程注册表以查找较新镜像摘要的间隔。默认值为 24h 。有效单位包括秒 (s )、分钟 (m ) 和小时 (h )。要禁用轮询,请设置零值,例如 0s 。 |
运行以下命令将目录添加到您的集群
$ oc apply -f redhat-operators.yaml
catalog.catalogd.operatorframework.io/redhat-operators created
运行以下命令以验证目录的状态
运行以下命令检查您的目录是否可用
$ oc get clustercatalog
NAME AGE
redhat-operators 20s
运行以下命令检查目录的状态
$ oc describe clustercatalog
Name: redhat-operators
Namespace:
Labels: <none>
Annotations: <none>
API Version: catalogd.operatorframework.io/v1alpha1
Kind: ClusterCatalog
Metadata:
Creation Timestamp: 2024-06-10T17:34:53Z
Finalizers:
catalogd.operatorframework.io/delete-server-cache
Generation: 1
Resource Version: 46075
UID: 83c0db3c-a553-41da-b279-9b3cddaa117d
Spec:
Source:
Image:
Pull Secret: redhat-cred
Ref: registry.redhat.io/redhat/redhat-operator-index:v4.17
Type: image
Status: (1)
Conditions:
Last Transition Time: 2024-06-10T17:35:15Z
Message:
Reason: UnpackSuccessful (2)
Status: True
Type: Unpacked
Content URL: https://catalogd-catalogserver.openshift-catalogd.svc/catalogs/redhat-operators/all.json
Observed Generation: 1
Phase: Unpacked (3)
Resolved Source:
Image:
Last Poll Attempt: 2024-06-10T17:35:10Z
Ref: registry.redhat.io/redhat/redhat-operator-index:v4.17
Resolved Ref: registry.redhat.io/redhat/redhat-operator-index@sha256:f2ccc079b5e490a50db532d1dc38fd659322594dcf3e653d650ead0e862029d9 (4)
Type: image
Events: <none>
1 | 描述目录的状态。 |
2 | 显示目录处于当前状态的原因。 |
3 | 显示安装过程的阶段。 |
4 | 显示目录的镜像引用。 |