21.3. 安装 OpenShift Operator Pipeline
先决条件
OpenShift 集群上的管理员特权。
流程
您可以通过两种方法安装 OpenShift Operator Pipeline:
21.3.1. 自动化过程 复制链接链接已复制到粘贴板!
红帽建议使用自动过程来安装 OpenShift Operator Pipeline。自动化过程可确保在执行 CI Pipeline 前正确配置了集群。此流程将 Operator 安装到集群中,可帮助您自动更新所有 CI Pipeline 任务,而无需手动干预。这个过程还支持多租户场景,您可以在其中在同一集群中迭代测试多个 operator。
按照以下步骤通过 Operator 安装 OpenShift Operator Pipeline:
在安装 Operator Pipeline 前,保留 Operator 捆绑包的源文件。
21.3.1.1. 先决条件 复制链接链接已复制到粘贴板!
在安装 OpenShift Operator Pipeline 之前,在终端窗口中运行以下命令配置所有先决条件:
Operator 会监视所有命名空间。因此,如果其他命名空间中已存在 secret/configs/etc
,您可以使用现有命名空间来安装 Operator Pipeline。
新建命名空间:
oc new-project oco
oc new-project oco
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置
kubeconfig
环境变量:export KUBECONFIG=/path/to/your/cluster/kubeconfig
export KUBECONFIG=/path/to/your/cluster/kubeconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意此
kubeconfig
变量用于在测试并运行认证检查下部署 Operator。oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令提交认证结果:
将 github API 令牌添加到创建拉取请求的存储库:
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 添加红帽容器 API 访问密钥:
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此 API 访问密钥与您的 Red Hat Partner Connect 门户上的唯一合作伙伴帐户特别相关。
在裸机上运行 OpenShift 集群的先决条件:
如果您在裸机上运行 OpenShift 集群,Operator 管道需要运行 5Gi 的持久性卷。以下 yaml 模板可帮助您使用本地存储创建 5Gi 的持久性卷。
例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CI 管道自动构建 Operator 捆绑包镜像和捆绑包镜像索引,以进行测试和验证。默认情况下,管道在集群的 OpenShift 容器注册表中创建镜像。
要在裸机上使用此 registry,请在运行管道前设置内部镜像 registry。有关设置内部镜像 registry 的详细信息,请参阅镜像 registry 存储配置。
如果要使用外部私有 registry,请通过添加 secret 来提供集群的访问凭证。具体步骤请参阅 使用私有容器 registry。
21.3.1.2. 通过 Operator 安装管道 复制链接链接已复制到粘贴板!
按照以下步骤将 Operator 添加到集群中:
安装 Operator 认证 Operator。
- 登录您的 OpenShift 集群控制台。
-
在主菜单中导航到 Operators
OperatorHub。 - 在 All Items - Filter by keyword filter/search 框中键入 Operator Certification Operator。
- 当显示时,选择 Operator Certification Operator 标题。此时会显示 Operator Certification Operator 页面。
- 点 Install。此时会显示 Install Operator 网页。
- 向下滚动并单击 Install。
- 点 View Operator 来验证安装。
为新安装的 Operator Pipeline 应用自定义资源。
- 登录您的 OpenShift 集群控制台。
- 在 Projects 下拉菜单中选择您要应用自定义资源的项目。
展开 Operator Pipeline,然后点 Create instance。
Create Operator Pipeline 屏幕会使用默认值自动填充。
注意如果您根据 先决条件 创建了所有资源名称,则不需要更改任何默认值。
- 点 Create。
自定义资源已创建,Operator 开始协调。
验证步骤
检查自定义资源的条件。
- 登录您的 OpenShift 集群控制台。
- 进入到您新创建的 Operator Pipeline 自定义资源的项目,并点击 Custom Resource。
- 向下滚动到 Conditions 部分,再检查所有 Status 值是否都设为 True。
如果资源无法协调,请检查 Message 部分以识别后续步骤来修复错误。
检查 Operator 日志。
在终端窗口中运行以下命令:
oc get pods -n openshift-marketplace
oc get pods -n openshift-marketplace
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录
certification-operator-controller-manager
pod 的完整 podman 名称并运行以下命令:oc get logs -f -n openshift-marketplace <pod name> manager
oc get logs -f -n openshift-marketplace <pod name> manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 检查 Operator 的协调是否发生。
21.3.1.3. 执行管道 复制链接链接已复制到粘贴板!
要执行管道,请确保在目录中的 templates 文件夹中有 workspace-template.yml
文件,从中要运行 tkn
命令。
要创建 workspace-template.yml
文件,在终端窗口中运行以下命令:
您可以通过 不同的方法 运行管道。
21.3.2. 手动过程 复制链接链接已复制到粘贴板!
按照以下步骤手动安装 OpenShift Operator Pipeline:
21.3.2.1. 安装 OpenShift Pipeline Operator 复制链接链接已复制到粘贴板!
- 登录您的 OpenShift 集群控制台。
- 在主菜单中导航到 Operators > OperatorHub。
- 在 All Items - Filter by keyword filter/search 框中键入 OpenShift Pipelines。
- 显示 Red Hat OpenShift Pipelines 标题时选择它。显示 Red Hat OpenShift Pipelines 页面。
- 点 Install。此时会显示 Install Operator 网页。
- 向下滚动并单击 Install。
21.3.2.2. 配置 OpenShift (oc) CLI 工具 复制链接链接已复制到粘贴板!
用于配置对集群的访问的文件称为 kubeconfig 文件。这是引用配置文件的通用方法。使用 kubeconfig 文件组织集群、用户、命名空间和身份验证机制的信息。
kubectl
命令行工具使用 kubeconfig 文件来查找它选择集群所需的信息,并与集群的 API 服务器通信。
- 在终端窗口中设置 KUBECONFIG 环境变量:
export KUBECONFIG=/path/to/your/cluster/kubeconfig
export KUBECONFIG=/path/to/your/cluster/kubeconfig
kubeconfig
文件将 Operator 部署到测试并运行认证检查。
21.3.2.3. 创建 OpenShift 项目 复制链接链接已复制到粘贴板!
创建一个新命名空间,以在管道中启动工作。
要创建命名空间,在终端窗口中运行以下命令:
oc adm new-project <my-project-name> # create the project oc project <my-project-name> # switch into the project
oc adm new-project <my-project-name> # create the project
oc project <my-project-name> # switch into the project
不要在 default 项目或命名空间中运行管道。红帽建议为管道创建一个新项目。
21.3.2.4. 添加 kubeconfig secret 复制链接链接已复制到粘贴板!
创建包含 kubeconfig 的 kubernetes secret,以便向运行认证管道的集群进行身份验证。认证管道需要在 OpenShift 集群上执行 Operator 测试部署。
要添加 kubeconfig secret,在终端窗口中运行以下命令:
oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
oc create secret generic kubeconfig --from-file=kubeconfig=$KUBECONFIG
21.3.2.5. 从 Red Hat Catalog 导入 Operator 复制链接链接已复制到粘贴板!
在终端窗口中运行以下命令:
如果您在 IBM Power 集群中将 OpenShift 用于 ppc64le 架构,请运行以下命令以避免权限问题:
oc adm policy add-scc-to-user anyuid -z pipeline
此命令将 anyuid 安全性上下文约束(SCC)赋予默认的管道服务帐户。
21.3.2.6. 安装认证管道依赖项 复制链接链接已复制到粘贴板!
在终端窗口中,使用以下命令在集群中安装认证管道依赖项:
$git clone https://github.com/redhat-openshift-ecosystem/operator-pipelines $cd operator-pipelines $oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/pipelines $oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/tasks
$git clone https://github.com/redhat-openshift-ecosystem/operator-pipelines
$cd operator-pipelines
$oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/pipelines
$oc apply -R -f ansible/roles/operator-pipeline/templates/openshift/tasks
21.3.2.7. 配置提交认证结果的存储库 复制链接链接已复制到粘贴板!
在终端窗口中,运行以下命令来配置存储库以提交认证结果:
21.3.2.7.1. 添加 GitHub API 令牌 复制链接链接已复制到粘贴板!
执行所有配置后,管道可以自动打开拉取请求,以将 Operator 提交到红帽。
要启用此功能,请添加 GitHub API Token,在运行管道时使用 --param submit=true
:
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>
oc create secret generic github-api-token --from-literal GITHUB_TOKEN=<github token>
21.3.2.7.2. 添加 Red Hat Container API 访问密钥 复制链接链接已复制到粘贴板!
添加您从红帽接收的特定容器 API 访问密钥:
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >
oc create secret generic pyxis-api-secret --from-literal pyxis_api_key=< API KEY >
21.3.2.7.3. 启用摘要固定 复制链接链接已复制到粘贴板!
此步骤对于向红帽提交认证结果是必需的。
OpenShift Operator 管道可以自动将捆绑包中的所有镜像标签替换为镜像 Digest SHA。这允许管道确保是否使用所有镜像的固定版本。管道将捆绑包的固定版本作为新分支提交到 GitHub 存储库。
要启用此功能,请添加一个能够作为 secret 访问 GitHub 的私钥。
使用 Base64 对可访问包含捆绑包的 GitHub 存储库的私钥进行编码。
base64 /path/to/private/key
base64 /path/to/private/key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建包含 base64 编码的私钥的 secret。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在集群中添加 secret。
oc create -f ssh-secret.yml
oc create -f ssh-secret.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3.2.7.4. 使用私有容器 registry 复制链接链接已复制到粘贴板!
管道会自动构建 Operator 捆绑包镜像和捆绑包镜像索引,以进行测试和验证。默认情况下,管道在集群的 OpenShift Container Registry 中创建镜像。如果要使用外部私有 registry,则必须通过在集群中添加 secret 来提供凭证。
oc create secret docker-registry registry-dockerconfig-secret \ --docker-server=quay.io \ --docker-username=<registry username> \ --docker-password=<registry password> \ --docker-email=<registry email>
oc create secret docker-registry registry-dockerconfig-secret \
--docker-server=quay.io \
--docker-username=<registry username> \
--docker-password=<registry password> \
--docker-email=<registry email>