4.7.2.4. 测试软件包清单格式目录镜像
要验证 Operator 目录镜像内容,您可以将其作为容器运行并查询其 gRPC API。要进一步测试镜像,您可以通过引用目录源中的镜像来在 Operator Lifecycle Manager(OLM)中解析订阅。本例中的流程使用之前构建并推送到受支持的 registry 的自定义 redhat-operators 目录镜像。
先决条件
- 推送到受支持的 registry 的自定义 Package Manifest Format 目录镜像
-
podman版本 1.9.3+ -
oc版本 4.3.5+ 访问支持 Docker v2-2 的镜像(mirror)registry
重要OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。
-
grpcurl
流程
拉取 Operator 目录镜像:
$ podman pull <registry_host_name>:<port>/olm/redhat-operators:v1运行镜像:
$ podman run -p 50051:50051 \ -it <registry_host_name>:<port>/olm/redhat-operators:v1使用
grpcurl查询正在运行的镜像中的可用软件包:$ grpcurl -plaintext localhost:50051 api.Registry/ListPackages输出示例
{ "name": "3scale-operator" } { "name": "amq-broker" } { "name": "amq-online" }在频道中获取最新的 Operator 捆绑包:
$ grpcurl -plaintext -d '{"pkgName":"kiali-ossm","channelName":"stable"}' localhost:50051 api.Registry/GetBundleForChannel输出示例
{ "csvName": "kiali-operator.v1.0.7", "packageName": "kiali-ossm", "channelName": "stable", ...获取镜像摘要:
$ podman inspect \ --format='{{index .RepoDigests 0}}' \ <registry_host_name>:<port>/olm/redhat-operators:v1输出示例
example_registry:5000/olm/redhat-operators@sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3假设命名空间
my-ns中存在一个支持您的 Operator 及其依赖项的 Operator 组,使用镜像摘要创建一个CatalogSource对象。例如:apiVersion: operators.coreos.com/v1alpha1 kind: CatalogSource metadata: name: custom-redhat-operators namespace: my-ns spec: sourceType: grpc image: example_registry:5000/olm/redhat-operators@sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 displayName: Red Hat Operators创建一个可从您的目录镜像解析最新可用
servicemeshoperator及其依赖项的订阅:apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: servicemeshoperator namespace: my-ns spec: source: custom-redhat-operators sourceNamespace: my-ns name: servicemeshoperator channel: "1.0"