管道专用工作程序的常见问题解答

获取有关使用 Pipeline Private Workers 的常见问题的答案。

如何安装多集群工作程序池?

您可以在单个专用工作程序池中一起工作的多个集群上安装代理程序。 通过使用此配置,专用工作程序池可以并行管理更多管道运行,并且您可以从维护轮换中除去集群,而无需取消激活工作程序池。

虽然在同一集群上具有多个代理程序支持多个工作程序池,但这不会提高性能或吞吐量。

要配置多集群工作程序池,请遵循 直接在集群上安装 以及 为参与工作程序池的每个集群注册 Delivery Pipeline 专用工作程序 的指示信息。 请确保更新工作程序名称以标识工作程序所在的集群。

现在,在专用工作程序集成 UI 中列出了多个工作程序代理程序,并且将根据管道运行请求时的集群负载在这些代理程序上调度作业。

如何使用 CLI 查看多个集群上的专用工作程序的状态?

您可以在遍历安装了专用工作程序的所有集群的脚本中使用以下命令。

kubectl get workeragent -ojson | jq '.items[] | .status.versionStatus.state'

请考虑升级返回非 OK 结果的任何专用工作程序。

我可以将哪些属性用于专用工作程序代理程序?

以下属性可用于专用工作程序代理程序:

  • NAME: 注册代理程序时指定的名称。 此名称显示在“专用工作程序集成”页面上。
  • SERVICEID: 此代理程序从中处理工作请求的工作队列标识。
  • AGENT: 值 OK 指示代理程序可以处理工作请求。
  • REGISTERED: 值 Succeeded 指示代理程序已成功向区域专用工作程序服务注册。
  • VERSION: 值 OK 指示代理程序的版本是否为最新版本。
  • AUTH: 值 OK 指示代理程序 apikey 是否有效。
  • 约束: 值 false 指示有足够的集群资源可供代理程序运行任务。 值 True 指定集群为 resource-constrained
  • PAUSED: 值 false 指示代理程序可操作并且可以运行任务。 值 true 指定代理程序已暂停并且无法运行任何任务。 代理程序可能暂停的一个原因是用于集群维护。

如何设置 ClusterImagePolicy 以便我可以访问 Tekton 映像?

由于 Delivery Pipeline 专用工作程序依赖于 Tekton 和 tekton-pipeline 基础结构,因此他们必须从 icr.io (icr.io/continuous-delivery/pipeline/) 中拉取 tekton-releases 映像。您可能需要定义特定的 Kubernetes ClusterImagePolicy 以从这些容器注册表中拉取映像。 要将 ClusterImagePolicy 类型添加到 Kubernetes 集群,必须安装多个 Helm Chart

如何为 Delivery Pipeline Private Worker 自主机容器映像?

安全性约束可能会阻止您从 icr.io/continuous-delivery/pipeline 容器注册表中拉取映像。 在此类场景中,请完成以下步骤:

  1. 在支持的容器注册表中供应容器映像。

  2. 安装 deployment.yaml 文件,以引用此容器注册表中的容器映像。

  3. 对于在常规部署 yaml 文件中引用的每个容器映像,完成以下步骤:

    • Docker 将镜像拉入本地 Dockerfile。
    • Docker 用受支持容器注册表上的新引用标记图像。
    • Docker 推送这个新图片。

    您可以从 https://private-worker-service.$region.devops.cloud.ibm.com/install 获取部署 yaml 文件。

  4. 将安装文件中对每个映像的引用替换为新映像的标记。

  5. 运行以下命令,使用特定容器注册表安装私有 Worker:kubectl apply –filename updated_deployment.yaml

  6. 继续 安装

如何供应和更新 IBM Cloud® Private 的专用工作程序安装文件?

如果管道 Worker 安装在 IBM Cloud Private 上,则可以使用以下脚本配置和更新私有 Worker 安装文件。

\#\!/bin/bash
region=${region:-"us-south"}
target_cr="mycluster.icp:8500"
install_filename="updated-private-worker-install.yaml"
curl -o $install_filename
https://private-worker-service.$region.devops.cloud.ibm.com/install
cat $install_filename | grep -e
'ghcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd' -e 'image:' \\
| sed 's/- ghcr.io/ghcr.io/g' \\
| sed 's/- image: ghcr.io/ghcr.io/g' \\
| sed 's/image: ghcr.io/ghcr.io/g' \\
| sed 's/image://g' \\
| awk '{$1=$1;print}' \\
| while read -r image ; do

echo "Processing $image"
docker pull $image
new_image_tag=$image
# if $image only have a single slash it is coming from dockerhub
number_of_slashes=$(echo $image | tr -cd '/' | wc -c)
if [ "$number_of_slashes" == "1" ]; then
new_image_tag="$target_cr/$image"
fi

# replace the sha id reference in the tag if any
new_image_tag="${new_image_tag@sha256}"
# replace ghcr.io to the target cr domain
new_image_tag="${new_image_tag/ghcr.io/$target_cr}"
docker tag $image $new_image_tag
docker push $new_image_tag
# replace the image reference in the installation.yaml file
sed -i "s~$image~$new_image_tag~g" $install_filename
done

echo "*****"
echo "Provisioning of docker images to $target_cr done."
echo "Update of the install file $install_filename done"
echo "Change the scope of the images to global before"
echo "running 'kubectl apply --filename $install_filename'
echo "to install the delivery pipeline private worker"

此脚本包含以下需求:

  • ibmcomtekton-releases 命名空间目前存在于目标 IBM Cloud® Private 上。
  • Docker 客户端连接到 IBM Cloud® Private 的私有容器注册表。 有关 Docker CLI 身份验证的更多信息,请参阅 为 Docker CLI 配置身份验证

在 IBM Cloud® Private 的私有注册表上配置容器映像后,将映像的作用域更新为全局,以确保可以从任何命名空间访问映像。 有关更新映像作用域的更多信息,请参阅 更改映像作用域

您可以让管道用户访问用于运行管道作业的基本映像 (icr.io/continuous-delivery/pipeline/pipeline-base-image),这些映像由全局 IBM Cloud Container Registry 提供。 要使用这些映像,必须使用Custom Dockerimage来配置管道作业。 您还必须在 IBM Cloud® Private 的私人注册表中引用预期图像,例如:mycluster.icp:8500/icr.io/continuous-delivery/pipeline/pipeline-base-image:latest

我能否使用 Terraform 或 API 来管理专用工作程序?

您可以使用 Terraform 或 API 在工具链中添加,更新或除去 Delivery Pipeline 专用工作程序工具集成。 有关使用 Delivery Pipeline 专用工作程序工具集成的更多信息,请参阅 使用工具集成配置 Delivery Pipeline 专用工作程序

不能使用 Terraform 或 API 来管理 Delivery Pipeline 专用工作程序。 而是使用控制台或 CLI 来安装,注册,配置和更新专用工作程序。 有关这些任务的更多信息,请参阅 安装 Delivery Pipeline 专用工作程序