5.6.2.5.3. 捆绑 Operator 并使用 Operator Lifecycle Manager 进行部署
5.6.2.5.3.1. 捆绑 Operator 复制链接链接已复制到粘贴板!
Operator 捆绑包格式是 Operator SDK 和 Operator Lifecycle Manager(OLM)的默认打包方法。您可以使用 Operator SDK 来构建和推送 Operator 项目作为捆绑包镜像,使 Operator 可供 OLM 使用。
先决条件
- 在开发工作站上安装 operator SDK CLI
-
已安装 OpenShift CLI (
oc) v4.14+ - 使用 Operator SDK 初始化 operator 项目
流程
在 Operator 项目目录中运行以下
make命令来构建和推送 Operator 镜像。在以下步骤中修改IMG参数来引用您可访问的库。您可以获取在存储库站点(如 Quay.io)存储容器的帐户。构建镜像:
$ make docker-build IMG=<registry>/<user>/<operator_image_name>:<tag>注意由 SDK 为 Operator 生成的 Dockerfile 需要为
go build明确引用GOARCH=amd64。这可以在非 AMD64 构架中使用GOARCH=$TARGETARCH。Docker 自动将环境变量设置为-platform指定的值。对于 Buildah,需要使用-build-arg来实现这一目的。如需更多信息,请参阅多个架构。将镜像推送到存储库:
$ make docker-push IMG=<registry>/<user>/<operator_image_name>:<tag>
运行
make bundle命令创建 Operator 捆绑包清单,该命令调用多个命令,其中包括 Operator SDKgenerate bundle和bundle validate子命令:$ make bundle IMG=<registry>/<user>/<operator_image_name>:<tag>Operator 的捆绑包清单描述了如何显示、创建和管理应用程序。
make bundle命令在 Operator 项目中创建以下文件和目录:-
包含
ClusterServiceVersion对象的捆绑包清单目录,名为bundle/manifests -
名为
bundle/metadata的捆绑包元数据目录 -
config/crd目录中的所有自定义资源定义(CRD) -
一个 Dockerfile
bundle.Dockerfile
然后,使用
operator-sdk bundle validate自动验证这些文件,以确保磁盘上的捆绑包的格式是正确的。-
包含
运行以下命令来构建和推送捆绑包镜像。OLM 使用索引镜像来消耗 Operator 捆绑包,该镜像引用一个或多个捆绑包镜像。
构建捆绑包镜像。使用您要推送镜像的 registry、用户命名空间和镜像标签的详情,设置
BUNDLE_IMG:$ make bundle-build BUNDLE_IMG=<registry>/<user>/<bundle_image_name>:<tag>推送捆绑包镜像:
$ docker push <registry>/<user>/<bundle_image_name>:<tag>
5.6.2.5.3.2. 使用 Operator Lifecycle Manager 部署 Operator 复制链接链接已复制到粘贴板!
Operator Lifecycle Manager(OLM)可帮助您在 Kubernetes 集群中安装、更新和管理 Operator 及其相关服务的生命周期。OLM 在 OpenShift Container Platform 上默认安装,并作为 Kubernetes 扩展运行,以便您可以在没有任何额外工具的情况下将 Web 控制台和 OpenShift CLI(oc)用于所有 Operator 生命周期管理功能。
Operator Bundle Format 是 Operator SDK 和 OLM 的默认打包方法。您可以使用 Operator SDK 在 OLM 上快速运行捆绑包镜像,以确保它正确运行。
先决条件
- 在开发工作站上安装 operator SDK CLI
- 构建并推送到 registry 的 Operator 捆绑包镜像
-
OLM安装在一个基于 Kubernetes 的集群上(如果使用
apiextensions.k8s.io/v1CRD,则为 v1.16.0 或更新版本,如 OpenShift Container Platform 4.14) -
使用具有
cluster-admin权限的账户使用oc登录到集群
流程
输入以下命令在集群中运行 Operator:
$ operator-sdk run bundle \1 -n <namespace> \2 <registry>/<user>/<bundle_image_name>:<tag>3 重要自 OpenShift Container Platform 4.11 起,
run bundle命令默认支持 Operator 目录基于文件的目录格式。Operator 目录已弃用的 SQLite 数据库格式仍被支持,但将在以后的发行版本中删除。建议 Operator 作者将其工作流迁移到基于文件的目录格式。这个命令执行以下操作:
- 创建引用捆绑包镜像的索引镜像。索引镜像不透明且具有临时性,但准确反映了如何将捆绑包添加到生产中的目录中。
- 创建指向新索引镜像的目录源,以便 OperatorHub 能够发现 Operator。
-
通过创建一个
OperatorGroup、Subscription、InstallPlan和所有其他所需资源(包括 RBAC),将 Operator 部署到集群中。