管線專用工作者的常見問題 (FAQ)

取得關於使用 Pipeline Private Worker 的常見問題的答案。

如何安裝多叢集工作者節點儲存區?

您可以在單一專用工作者節點儲存區內一起運作的多個叢集上安裝代理程式。 透過使用此配置,專用工作者節點儲存區可以平行管理更多管線執行,並且您可以從維護循環中移除叢集,而無需取消啟動工作者節點儲存區。

雖然在相同叢集上有多個代理程式支援多個工作者節點儲存區,但它不會增進效能或傳輸量。

若要配置多叢集工作者節點儲存區,請遵循 直接在叢集上安裝針對參與工作者節點儲存區的每一個叢集登錄 Delivery Pipeline 專用工作者節點 的指示。 請確保更新工作者節點名稱,以識別工作者節點所在的叢集。

現在,多個工作者代理程式會列在專用工作者整合使用者介面中,並根據管線執行要求時的叢集負載,在那些代理程式上排定工作。

如何使用 CLI 來檢視多個叢集上專用工作者節點的狀態?

您可以在 Script 內使用下列指令,以遍訪已安裝專用工作者節點的所有叢集。

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

請考量升級任何傳回非 OK 結果的專用工作者節點。

我可以將哪些屬性用於專用工作者代理程式?

下列屬性適用於專用工作者代理程式:

  • NAME: 登錄代理程式時指定的名稱。 此名稱會出現在「專用工作者節點」整合頁面上。
  • SERVICEID: 此代理程式從中處理工作要求的工作佇列 ID。
  • AGENT: 值 OK 表示代理程式可以處理工作要求。
  • REGISTERED: 值 Succeeded 表示代理程式已順利向區域專用工作者節點服務登錄。
  • VERSION: 值 OK 指出代理程式的版本是否為現行版本。
  • AUTH: OK 值指出代理程式 apikey 是否有效。
  • 受限: false 值指出有足夠的叢集資源可供代理程式執行作業。 True 值指定叢集是 resource-constrained
  • PAUSED: 值 false 表示代理程式可作業且可執行作業。 值 true 指定代理程式已暫停且無法執行任何作業。 代理程式可能暫停的原因之一是用於叢集維護。

如何設定 ClusterImagePolicy 以存取 Tekton 映像檔?

因為 Delivery Pipeline 專用工作者節點相依於 Tekton 和 tekton-pipelines 基礎架構,所以他們必須從 icr.io (icr.io/continuous-delivery/pipeline/) 取回 tekton-releases 映像檔。您可能需要定義特定的 Kubernetes ClusterImagePolicy,以從這些容器登錄取回映像檔。 若要將 ClusterImagePolicy 類型新增至 Kubernetes 叢集,您必須安裝數個 Helm 圖表

如何針對 Delivery Pipeline 專用工作者節點自行管理儲存器映像檔?

安全限制可能會阻止您從 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 上,您可以使用以下腳本來配置和更新 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"

此 Script 包含下列需求:

  • 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 專用工作者