Journalisation
Les ressources Actions Runner Controller (ARC), qui incluent le contrôleur, l’écouteur et les exécuteurs, écrivent des journaux dans la sortie standard (stdout
). Nous vous recommandons d’implémenter une solution de journalisation pour collecter et stocker ces journaux. La disponibilité des journaux peut vous aider ou aider le support GitHub à résoudre les problèmes et à effectuer le débogage. Pour plus d’informations, consultez Architecture de journalisation dans la documentation de Kubernetes.
Étiquettes de ressources
Les étiquettes sont ajoutées aux ressources créées par Actions Runner Controller, qui incluent les pods du contrôleur, de l’écouteur et de l’exécuteur. Vous pouvez utiliser ces étiquettes pour filtrer les ressources et faciliter la résolution des problèmes.
Pod du contrôleur
Les étiquettes suivantes sont appliquées au pod du contrôleur.
app.kubernetes.io/component=controller-manager
app.kubernetes.io/instance=<controller installation name>
app.kubernetes.io/name=gha-runner-scale-set-controller
app.kubernetes.io/part-of=gha-runner-scale-set-controller
app.kubernetes.io/version=<chart version>
Pod de l’écouteur
Les étiquettes suivantes sont appliquées au pod de l’écouteur.
actions.github.com/enterprise= # Will be populated if githubConfigUrl is an enterprise URL
actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
actions.github.com/repository= # Will be populated if githubConfigUrl is a repository URL
actions.github.com/scale-set-name= # Runners scale set name
actions.github.com/scale-set-namespace= # Runners namespace
app.kubernetes.io/component=runner-scale-set-listener
app.kubernetes.io/part-of=gha-runner-scale-set
app.kubernetes.io/version= # Chart version
Pod de l’exécuteur
Les étiquettes suivantes sont appliquées au pod de l’exécuteur.
actions-ephemeral-runner= # True | False
actions.github.com/organization= # Will be populated if githubConfigUrl is an organization URL
actions.github.com/scale-set-name= # Runners scale set name
actions.github.com/scale-set-namespace= # Runners namespace
app.kubernetes.io/component=runner
app.kubernetes.io/part-of=gha-runner-scale-set
app.kubernetes.io/version= # Chart version
Vérification des journaux du contrôleur et de l’écouteur du jeu d’exécuteurs
Pour vérifier les journaux du pod du contrôleur, vous pouvez utiliser la commande suivante.
kubectl logs -n <CONTROLLER_NAMESPACE> -l app.kubernetes.io/name=gha-runner-scale-set-controller
kubectl logs -n <CONTROLLER_NAMESPACE> -l app.kubernetes.io/name=gha-runner-scale-set-controller
Pour vérifier les journaux de l’écouteur du jeu d’exécuteurs, vous pouvez utiliser la commande suivante.
kubectl logs -n <CONTROLLER_NAMESPACE> -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set
kubectl logs -n <CONTROLLER_NAMESPACE> -l auto-scaling-runner-set-namespace=arc-systems -l auto-scaling-runner-set-name=arc-runner-set
Utilisation des graphiques de la branche master
Nous vous recommandons d’utiliser les graphiques de la dernière version au lieu de ceux de la branche master
. La branche master
est hautement instable et nous ne pouvons pas garantir le bon fonctionnement des graphiques de la branche master
.
Résolution des problèmes liés au pod de l’écouteur
Si le pod du contrôleur est en cours d’exécution, mais que le pod de l’écouteur ne l’est pas, examinez d’abord les journaux du contrôleur pour voir s’il y a des erreurs. S’il n’y a aucune erreur et que le pod de l’écouteur du jeu d’exécuteurs n’est toujours pas en cours d’exécution, vérifiez que le pod du contrôleur a accès au serveur d’API Kubernetes dans votre cluster.
Si vous avez configuré un proxy ou si vous utilisez un proxy side-car qui est automatiquement injecté, comme Istio, vérifiez qu’il est configuré pour autoriser le trafic à partir du conteneur du contrôleur (gestionnaire) vers le serveur d’API Kubernetes.
Si vous avez installé le jeu d’exécuteurs de mise à l’échelle automatique, mais que le pod de l’écouteur n’est pas créé, vérifiez que le githubConfigSecret
que vous avez fourni est correct et que la valeur githubConfigUrl
que vous avez fournie est exacte. Pour plus d’informations, consultez « Authentification auprès de l’API GitHub » et « Déploiement de groupes identiques d’exécuteurs avec Actions Runner Controller ».
Les pods de l’exécuteur sont recréés après une exécution de flux de travail annulée
Une fois l’exécution d’un flux de travail annulée, les événements suivants se produisent.
- Le signal d’annulation est envoyé directement aux exécuteurs.
- L’application de l’exécuteur s’arrête, ce qui arrête également les pods de l’exécuteur.
- Lors du prochain sondage, le signal d’annulation est reçu par l’écouteur.
Il peut y avoir un léger décalage entre le moment où les exécuteurs reçoivent le signal et le moment où l’écouteur reçoit le signal. Lorsque les pods de l’exécuteur commencent à s’arrêter, l’écouteur tente de connecter d’autres exécuteurs pour respecter le nombre souhaité d’exécuteurs en fonction de l’état dans lequel il se trouve. Toutefois, lorsque l’écouteur reçoit le signal d’annulation, il agit pour réduire le nombre d’exécuteurs. Finalement, l’écouteur effectue un scale-down jusqu’à atteindre le nombre souhaité d’exécuteurs. Dans l’intervalle, des exécuteurs supplémentaires peuvent apparaître.
Erreur : Name must have up to n characters
ARC utilise les noms générés de certaines ressources comme étiquettes pour d’autres ressources. En raison de cette exigence, ARC limite les noms de ressources à 63 caractères.
Étant donné que vous définissez une partie du nom de la ressource, ARC impose une limite au nombre de caractères que vous pouvez utiliser pour le nom et l’espace de noms de l’installation.
Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:5:5): Name must have up to 45 characters
Error: INSTALLATION FAILED: execution error at (gha-runner-scale-set/templates/autoscalingrunnerset.yaml:8:5): Namespace must have up to 63 characters
Erreur : Access to the path /home/runner/_work/_tool is denied
Cette erreur peut s’afficher si vous utilisez le mode Kubernetes avec des volumes persistants. Cette erreur se produit si le conteneur de l’exécuteur s’exécute avec un utilisateur non racine et provoque une incompatibilité des autorisations avec le volume monté.
Pour résoudre ce problème, effectuez l’une des opérations suivantes.
-
Utilisez un type de volume qui prend en charge
securityContext.fsGroup
. Les volumeshostPath
ne prennent pas en charge cette propriété, tandis que les volumeslocal
et d’autres types de volumes la prennent en charge. Mettez à jour lefsGroup
du pod de votre exécuteur pour qu’il corresponde au GID de l’exécuteur. Pour ce faire, mettez à jour les valeurs du graphique Helmgha-runner-scale-set
pour inclure les éléments suivants. RemplacezVERSION
par la version de l’image conteneuractions-runner
que vous souhaitez utiliser.YAML spec: securityContext: fsGroup: 123 containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
spec: securityContext: fsGroup: 123 containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
-
Si la mise à jour de
securityContext
du pod de votre exécuteur n’est pas une solution viable, vous pouvez contourner le problème en utilisantinitContainers
pour modifier la propriété du volume monté, comme suit.YAML template: spec: initContainers: - name: kube-init image: ghcr.io/actions/actions-runner:latest command: ["sudo", "chown", "-R", "1001:123", "/home/runner/_work"] volumeMounts: - name: work mountPath: /home/runner/_work containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
template: spec: initContainers: - name: kube-init image: ghcr.io/actions/actions-runner:latest command: ["sudo", "chown", "-R", "1001:123", "/home/runner/_work"] volumeMounts: - name: work mountPath: /home/runner/_work containers: - name: runner image: ghcr.io/actions/actions-runner:latest command: ["/home/runner/run.sh"]
Mentions légales
Certaines parties ont été adaptées à partir de https://github.com/actions/actions-runner-controller/ sous la licence Apache-2.0 :
Copyright 2019 Moto Ishizawa
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.