Agents privés Delivery Pipeline - Foire aux questions
Obtenez des réponses aux questions fréquentes relatives à l'utilisation des agents privés Delivery Pipeline.
Comment installer un pool de noeuds worker multi-cluster?
Vous pouvez installer des agents sur plusieurs clusters qui fonctionnent ensemble dans un même pool de noeuds worker privé. En utilisant cette configuration, le pool de noeuds worker privé peut gérer davantage d'exécutions de pipeline en parallèle et vous pouvez supprimer des clusters de la rotation de maintenance sans désactiver le pool de noeuds worker.
Bien que le fait d'avoir plusieurs agents sur le même cluster prenne en charge plusieurs pools de noeuds worker, il n'améliore pas les performances ni le débit.
Pour configurer un pool de noeuds worker multicluster, suivez les instructions d' installation directe sur un cluster et d'enregistrement d'un noeud worker privé Delivery Pipeline pour chaque cluster qui participe au pool de noeuds worker. Veillez à mettre à jour le nom de l'agent pour identifier le cluster sur lequel l'agent réside.
Les agents multiples sont désormais répertoriés dans l'interface utilisateur d'intégration des agents privés et les travaux sont planifiés sur ces agents en fonction de la charge du cluster lors de la demande d'exécution du pipeline.
Comment puis-je voir le statut des agents privés sur plusieurs clusters à l'aide de l'interface de ligne de commande ?
Vous pouvez utiliser la commande suivante dans un script qui parcourt tous les clusters sur lesquels les agents privés sont installés.
kubectl get workeragent -ojson | jq '.items[] | .status.versionStatus.state'
Envisagez de mettre à niveau les agents privés qui renvoient des résultats qui ne sont pas OK.
Quels attributs puis-je utiliser pour les agents d'agent privés?
Les attributs suivants sont disponibles pour les agents privés :
- NOM : nom qui a été spécifié lors de l'enregistrement de l'agent. Ce nom apparaît sur la page d'intégration des agents privés.
- ID DE SERVICE : ID de la file d'attente de travaux à partir de laquelle cet agent traite les demandes de travail.
- AGENT : la valeur
OKindique que l'agent peut traiter les demandes de travail. - ENREGISTRÉ : la valeur
Succeededindique que l'agent a été enregistré avec succès auprès du service de travail privé régional. - VERSION : la valeur
OKindique si la version de l'agent est à jour. - AUTHENTIFICATION : la valeur
OKindique si l'agentapikeyest valide. - CONTRAINTE : Une valeur de
falseindique que suffisamment de ressources de cluster sont disponibles pour que l'agent exécute des tâches. Une valeur deTrueindique que le groupe estresource-constrained. - EN PAUSE : une valeur
falseindique que l'agent est opérationnel et peut exécuter des tâches. La valeurtrueindique que l'agent est en pause et ne peut exécuter aucune tâche. L'une des raisons pour lesquelles un agent peut être mis en pause est la maintenance du cluster.
Comment définir mon ClusterImagePolicy pour pouvoir accéder aux images Tekton?
Etant donné que les agents privés Delivery Pipeline dépendent de l'infrastructure Tekton et tekton-pipelines, ils doivent extraire des images tekton-releases de icr.io (icr.io/continuous-delivery/pipeline/).
Vous devrez peut-être définir un Kubernetes ClusterImagePolicy spécifique pour extraire des images de ces registres de conteneur. Pour ajouter le type ClusterImagePolicy à votre cluster Kubernetes, vous devez installer
plusieurs cartes Helm.
Comment puis-je utiliser des images de conteneur auto-hôte pour l'agent privé Delivery Pipeline ?
Des contraintes de sécurité peuvent vous empêcher d'extraire des images du registre de conteneurs icr.io/continuous-delivery/pipeline. Auquel cas, procédez comme suit :
-
Mettez à disposition des images de conteneur sur un registre de conteneur pris en charge.
-
Installez le fichier
deployment.yamlpour référencer les images de conteneur de ce registre de conteneur. -
Pour chaque image de conteneur référencée dans le fichier yaml de déploiement ordinaire, procédez comme suit :
- Docker tirer l'image vers un fichier Docker local.
- Docker marquer l'image avec la nouvelle référence dans le registre des conteneurs pris en charge.
- Docker pousser cette nouvelle image.
Vous pouvez obtenir le fichier yaml de déploiement à l'adresse
https://private-worker-service.$region.devops.cloud.ibm.com/install. -
Remplacez la référence de chaque image dans le fichier d'installation par l'étiquette de la nouvelle image.
-
Exécutez la commande suivante pour installer l'agent privé en utilisant le registre de conteneur approprié :
kubectl apply –filename updated_deployment.yaml. -
Poursuivez l'installation.
Comment mettre à disposition et mettre à jour le fichier d'installation de l'agent privé pour IBM Cloud® Private?
Si votre gestionnaire de pipeline est installé sur IBM Cloud Private, vous pouvez utiliser le script suivant pour approvisionner et mettre à jour le fichier d'installation du gestionnaire privé.
\#\!/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"
Ce script est soumis aux exigences suivantes :
- Les espaces de noms
ibmcomettekton-releasesexistent actuellement sur la cible IBM Cloud® Private. - Le client Docker est connecté au registre de conteneurs privés de IBM Cloud® Private. Pour plus d'informations sur l'authentification pour la CLI Docker, voir Configuration de l'authentification pour la CLI Docker.
Après avoir fourni les images de conteneur sur le registre privé de IBM Cloud® Private, mettez à jour la portée de l'image sur global pour vous assurer que les images sont accessibles à partir de n'importe quel espace de noms. Pour plus d'informations sur la mise à jour de la portée d'une image, voir Modification de la portée d'une image.
Vous pouvez donner aux utilisateurs du pipeline l'accès aux images de base (icr.io/continuous-delivery/pipeline/pipeline-base-image) qui sont utilisées pour exécuter les travaux du pipeline et qui sont fournies par le serveur global
IBM Cloud Container Registry. Pour utiliser ces images, vous devez configurer vos travaux de pipeline via la Custom Dockerimage. Vous devez également faire référence à l'image attendue dans le registre privé de IBM Cloud® Private,
par exemple : mycluster.icp:8500/icr.io/continuous-delivery/pipeline/pipeline-base-image:latest.
Puis-je gérer des agents privés à l'aide de Terraform ou d'API?
Vous pouvez utiliser Terraform ou des API pour ajouter, mettre à jour ou supprimer des intégrations d'outils d'agent privé Delivery Pipeline dans une chaîne d'outils. Pour plus d'informations sur l'utilisation de l'intégration d'outils d'agent privé Delivery Pipeline, voir Utilisation des intégrations d'outils et Configuration de Delivery Pipeline Private Worker.
Vous ne pouvez pas utiliser Terraform ou des API pour gérer des agents privés Delivery Pipeline. A la place, utilisez la console ou l'interface de ligne de commande pour installer, enregistrer, configurer et mettre à jour des agents privés. Pour plus d'informations sur ces tâches, voir Installation d'agents privés Delivery Pipeline.