Pipeline プライベート・ワーカーの FAQ
Pipeline プライベート・ワーカーの使用に関する、よくあるご質問に対する回答を示します。
マルチクラスター・ワーカー・プールをインストールするにはどうすればよいですか?
単一のプライベート・ワーカー・プール内で一緒に動作する複数のクラスターにエージェントをインストールできます。 この構成を使用することで、プライベート・ワーカー・プールは、より多くのパイプライン実行を並行して管理できます。また、ワーカー・プールを非アクティブにすることなく、保守ローテーションからクラスターを削除できます。
同じクラスター上に複数のエージェントがあっても、複数のワーカー・プールがサポートされますが、パフォーマンスやスループットは向上しません。
マルチクラスター・ワーカー・プールを構成するには、 クラスターへの直接インストール および ワーカー・プールに参加するクラスターごとに Delivery Pipeline プライベート・ワーカー を登録するための手順に従います。 ワーカーが存在するクラスターを識別するために、必ずワーカー名を更新してください。
これで、複数のワーカー・エージェントがプライベート・ワーカー統合 UI にリストされ、パイプライン実行要求時のクラスター・ロードに基づいてそれらのエージェントでジョブがスケジュールされます。
CLI を使用して複数のクラスター上のプライベート・ワーカーのステータスを表示するにはどうすればよいですか?
プライベート・ワーカーがインストールされているすべてのクラスターを全探索するスクリプト内で、次のコマンドを使用できます。
kubectl get workeragent -ojson | jq '.items[] | .status.versionStatus.state'
OK ではない結果を返すプライベート・ワーカーのアップグレードを検討してください。
プライベート・ワーカー・エージェントにはどの属性を使用できますか?
プライベート・ワーカー・エージェントでは、以下の属性を使用できます:
- NAME: エージェントの登録時に指定された名前。 この名前は、プライベート・ワーカーの統合ページに表示されます。
- SERVICEID: このエージェントが作業要求を処理する元の作業キュー ID 。
- AGENT:
OKの値は、エージェントが作業要求を処理できることを示します。 - REGISTERED:
Succeededの値は、エージェントがリージョンのプライベート・ワーカー・サービスに正常に登録されたことを示します。 - VERSION:
OKの値は、エージェントのバージョンが現行バージョンかどうかを示します。 - AUTH:
OKの値は、エージェントapikeyが有効かどうかを示します。 - CONSTRAINED:
falseの値は、タスクを実行するのに十分なクラスター・リソースをエージェントが使用可能であることを示します。 値がTrueの場合、クラスターはresource-constrainedであることを示す。 - PAUSED:
falseの値は、エージェントが操作可能であり、タスクを実行できることを示します。trueの値は、エージェントが一時停止していて、いずれのタスクも実行できないことを指定します。 エージェントが一時停止する一つの理由としては、クラスターの保守が考えられます。
Tekton イメージにアクセスできるように ClusterImagePolicy を設定するにはどうすればよいですか?
Delivery Pipeline プライベート・ワーカーは Tekton および tekton-pipelines インフラストラクチャーに依存しているため、 icr.io (icr.io/continuous-delivery/pipeline/) から tekton-releases イメージをプルする必要があります。 これらのコンテナー・レジストリーからイメージをプルするために、特定の Kubernetes
ClusterImagePolicy を定義しなければならない場合があります。 Kubernetes クラスターに ClusterImagePolicy タイプを追加するには、 Helm チャートを いくつかインストールする必要があります。
Delivery Pipeline プライベート・ワーカーのコンテナー・イメージを自己ホストするにはどうすればよいですか?
セキュリティ上の制約により、 icr.io/continuous-delivery/pipeline コンテナ・レジストリからイメージを引き出すことができない場合があります。 その場合は、以下の手順を実行します。
-
サポート対象のコンテナー・レジストリーにコンテナー・イメージをプロビジョンします。
-
そのコンテナー・レジストリー内のコンテナー・イメージを参照する
deployment.yamlファイルをインストールします。 -
通常のデプロイメント yaml ファイルで参照されているコンテナー・イメージごとに、以下の手順を実行します。
- Docker イメージをローカルのDockerfileにプルする。
- Docker タグは、サポートされているコンテナ・レジストリの新しい参照でイメージに付けられます。
- Docker この新しいイメージをプッシュする。
デプロイメント yaml ファイルは
https://private-worker-service.$region.devops.cloud.ibm.com/installから取得できます。 -
インストール・ファイル内の各イメージに対する参照を、新しいイメージのタグに置き換えます。
-
コマンド
kubectl apply –filename updated_deployment.yamlを実行して、特定のコンテナー・レジストリーを使用してプライベート・ワーカーをインストールします。 -
インストール を続行します。
IBM Cloud® Private のプライベート・ワーカー・インストール・ファイルをプロビジョンおよび更新するにはどうすればよいですか?
パイプラインワーカーが IBM Cloud Private にインストールされている場合、以下のスクリプトを使用して、プライベートワーカーのインストールファイルをプロビジョニングし、更新することができます。
\#\!/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"
このスクリプトには、以下の要件があります。
ibmcomおよびtekton-releasesネームスペースは現在、ターゲットの IBM Cloud® Private 上に存在する。- Docker クライアントは、 IBM Cloud® プライベートのコンテナレジストリに接続される。 Docker CLI での認証の詳細については、 「Docker CLI での認証の設定 」を参照してください。
IBM Cloud® Private のプライベート・レジストリでコンテナ・イメージをプロビジョニングしたら、イメージのスコープを global に更新して、どの名前空間からもイメージにアクセスできるようにする。 イメージのスコープの更新について詳しくは、 イメージ・スコープの変更を参照してください。
パイプラインユーザーに、パイプラインジョブの実行に使用されるベースイメージ (icr.io/continuous-delivery/pipeline/pipeline-base-image) へのアクセスを提供することができます。ベースイメージは、グローバル IBM Cloud Container Registry から提供されます。 これらのイメージを使用するには、Custom Dockerimage を使用してパイプライン・ジョブを構成する必要があります。
また、 IBM Cloud® プライベートのプライベートレジストリで、期待される画像を参照する必要があります(例: 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 プライベート・ワーカーのインストール を参照してください。