DĂ©ploiement dâun groupe identique dâexĂ©cuteurs
Pour dĂ©ployer un groupe identique dâexĂ©cuteurs, vous devez avoir ARC prĂȘt Ă sâexĂ©cuter. Pour plus dâinformations, consultez « DĂ©marrage rapide avec Actions Runner Controller ».
Vous pouvez dĂ©ployer des groupes identiques dâexĂ©cuteurs avec les charts Helm dâARC ou en dĂ©ployant les manifestes nĂ©cessaires. Lâutilisation des charts Helm dâARC est la mĂ©thode recommandĂ©e, en particulier si vous nâavez pas dâexpĂ©rience prĂ©alable avec ARC.
Remarque
- Comme meilleure pratique de sĂ©curitĂ©, crĂ©ez les pods de votre exĂ©cuteur dans un espace de noms diffĂ©rent de lâespace de noms contenant les pods de votre opĂ©rateur.
- Comme meilleure pratique de sĂ©curitĂ©, crĂ©ez des secrets Kubernetes et transmettez les rĂ©fĂ©rences des secrets. La transmission de vos secrets en texte brut via lâinterface CLI peut prĂ©senter un risque de sĂ©curitĂ©.
- Nous vous recommandons dâexĂ©cuter les charges de travail de production de maniĂšre isolĂ©e. Les workflows GitHub Actions sont conçus pour exĂ©cuter du code arbitraire, et lâutilisation dâun cluster Kubernetes partagĂ© pour les charges de travail de production peut prĂ©senter un risque de sĂ©curitĂ©.
- Vérifiez que vous avez implémenté un moyen de collecter et de conserver les journaux du contrÎleur, des écouteurs et des exécuteurs éphémÚres.
-
Pour configurer votre groupe identique dâexĂ©cuteurs, exĂ©cutez la commande suivante dans votre terminal en utilisant les valeurs de votre configuration ARC.
Lorsque vous exĂ©cutez la commande, gardez les points suivants Ă lâesprit.
-
Mettez Ă jour la valeur
INSTALLATION_NAME
en faisant bien attention. Vous utiliserez le nom de lâinstallation comme valeur deruns-on
dans vos workflows. -
Mettez Ă jour la valeur
NAMESPACE
avec lâemplacement oĂč vous souhaitez que les pods dâexĂ©cuteur soient créés. -
Définissez la valeur
GITHUB_CONFIG_URL
avec lâURL de votre dĂ©pĂŽt, organisation ou entreprise. Il sâagit de lâentitĂ© Ă laquelle les exĂ©cuteurs appartiendront. -
Cet exemple de commande installe la derniĂšre version du chart Helm. Pour installer une version spĂ©cifique, vous pouvez passer lâargument
--version
avec la version du chart que vous voulez installer. Vous trouverez la liste des versions dans le dépÎtactions-runner-controller
.Bash INSTALLATION_NAME="arc-runner-set" NAMESPACE="arc-runners" GITHUB_CONFIG_URL="https://github.com/<your_enterprise/org/repo>" GITHUB_PAT="<PAT>" helm install "${INSTALLATION_NAME}" \ --namespace "${NAMESPACE}" \ --create-namespace \ --set githubConfigUrl="${GITHUB_CONFIG_URL}" \ --set githubConfigSecret.github_token="${GITHUB_PAT}" \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
INSTALLATION_NAME="arc-runner-set" NAMESPACE="arc-runners" GITHUB_CONFIG_URL="https://github.com/<your_enterprise/org/repo>" GITHUB_PAT="<PAT>" helm install "${INSTALLATION_NAME}" \ --namespace "${NAMESPACE}" \ --create-namespace \ --set githubConfigUrl="${GITHUB_CONFIG_URL}" \ --set githubConfigSecret.github_token="${GITHUB_PAT}" \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
Pour obtenir dâautres options de configuration de Helm, consultez
values.yaml
dans le référentiel ARC.
-
-
Pour vérifier votre installation, exécutez la commande suivante dans votre terminal.
Bash helm list -A
helm list -A
Le résultat ressemble à ce qui suit.
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION arc arc-systems 1 2023-04-12 11:45:59.152090536 +0000 UTC deployed gha-runner-scale-set-controller-0.4.0 0.4.0 arc-runner-set arc-systems 1 2023-04-12 11:46:13.451041354 +0000 UTC deployed gha-runner-scale-set-0.4.0 0.4.0
-
Pour vérifier le pod de gestionnaire, exécutez la commande suivante dans votre terminal.
Bash kubectl get pods -n arc-systems
kubectl get pods -n arc-systems
Si lâinstallation a rĂ©ussi, les pods affichent lâĂ©tat
Running
.NAME READY STATUS RESTARTS AGE arc-gha-runner-scale-set-controller-594cdc976f-m7cjs 1/1 Running 0 64s arc-runner-set-754b578d-listener 1/1 Running 0 12s
Si votre installation nâa pas rĂ©ussi, consultez « RĂ©solution des erreurs dâActions Runner Controller » pour obtenir des informations de dĂ©pannage.
Utilisation des options de configuration avancées
ARC offre plusieurs options de configuration avancées.
Configuration du nom du groupe identique dâexĂ©cuteurs
Remarque
Les noms de groupes identiques dâexĂ©cuteurs sont uniques au sein du groupe dâexĂ©cuteurs auquel ils appartiennent. Si vous voulez dĂ©ployer plusieurs groupes identiques dâexĂ©cuteurs portant le mĂȘme nom, ils doivent appartenir Ă diffĂ©rents groupes dâexĂ©cuteurs.
Pour configurer le nom du groupe identique dâexĂ©cuteurs, vous pouvez dĂ©finir un INSTALLATION_NAME
ou définir la valeur de runnerScaleSetName
dans votre copie du fichier values.yaml
.
## The name of the runner scale set to create, which defaults to the Helm release name
runnerScaleSetName: "my-runners"
Veillez Ă passer le fichier values.yaml
dans votre commande helm install
. Pour plus dâinformations, consultez la documentation Installation de Helm.
Choix des destinations des exécuteurs
Les groupes identiques dâexĂ©cuteurs peuvent ĂȘtre dĂ©ployĂ©s au niveau du dĂ©pĂŽt, de lâorganisation ou de lâentreprise.
Remarque
Vous pouvez dĂ©ployer des groupes identiques dâexĂ©cuteurs au niveau de lâentreprise seulement si vous utilisez une authentification par personal access token (classic).
Pour dĂ©ployer des groupes identiques dâexĂ©cuteurs Ă un niveau spĂ©cifique, dĂ©finissez la valeur de githubConfigUrl
dans votre copie du fichier values.yaml
sur lâURL de votre dĂ©pĂŽt, organisation ou entreprise.
Lâexemple suivant montre comment configurer ARC pour ajouter des exĂ©cuteurs Ă octo-org/octo-repo
.
githubConfigUrl: "https://github.com/octo-ent/octo-org/octo-repo"
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Utilisation dâune GitHub App pour lâauthentification
Si vous nâutilisez pas dâexĂ©cuteurs au niveau de lâentreprise, vous pouvez utiliser des GitHub Apps pour vous authentifier auprĂšs de lâAPI GitHub. Pour plus dâinformations, consultez « Authentification d'ARC auprĂšs de l'API GitHub ».
Remarque
Ătant donnĂ© le risque de sĂ©curitĂ© associĂ© Ă lâexposition de votre clĂ© privĂ©e en texte brut dans un fichier sur disque, nous vous recommandons de crĂ©er un secret Kubernetes et de passer la rĂ©fĂ©rence Ă la place.
Vous pouvez créer un secret Kubernetes ou spécifier des valeurs dans votre fichier values.yaml
.
Option 1 : Créer un secret Kubernetes (recommandé)
Une fois que vous avez créé votre GitHub App, créez un secret Kubernetes et passez la référence à ce secret dans votre copie du fichier values.yaml
.
Remarque
CrĂ©ez le secret dans le mĂȘme espace de noms que celui oĂč le graphique gha-runner-scale-set
est installĂ©. Dans cet exemple, lâespace de noms est arc-runners
, de sorte correspondre Ă la documentation de dĂ©marrage rapide. Pour plus dâinformations, consultez « DĂ©marrage rapide avec Actions Runner Controller ».
kubectl create secret generic pre-defined-secret \
--namespace=arc-runners \
--from-literal=github_app_id=123456 \
--from-literal=github_app_installation_id=654321 \
--from-file=github_app_private_key=private-key.pem
Dans votre copie du fichier values.yaml
, passez le nom du secret en tant que référence.
githubConfigSecret: pre-defined-secret
Option 2 : Spécifier des valeurs dans votre fichier values.yaml
Vous pouvez également spécifier les valeurs de app_id
, installation_id
et private_key
dans votre copie du fichier values.yaml
.
## githubConfigSecret is the Kubernetes secret to use when authenticating with GitHub API.
## You can choose to use a GitHub App or a personal access token (classic)
githubConfigSecret:
## GitHub Apps Configuration
## IDs must be strings, use quotes
github_app_id: "123456"
github_app_installation_id: "654321"
github_app_private_key: |
-----BEGIN RSA PRIVATE KEY-----
...
HkVN9...
...
-----END RSA PRIVATE KEY-----
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Gestion de lâaccĂšs avec des groupes dâexĂ©cuteurs
Vous pouvez utiliser des groupes dâexĂ©cuteurs pour contrĂŽler quelles organisations ou quels dĂ©pĂŽts ont accĂšs Ă vos groupes identiques dâexĂ©cuteurs. Pour plus dâinformations sur les groupes dâexĂ©cuteurs, consultez « Gestion de lâaccĂšs aux exĂ©cuteurs auto-hĂ©bergĂ©s Ă lâaide de groupes ».
Pour ajouter un groupe identique dâexĂ©cuteurs Ă un groupe dâexĂ©cuteurs, vous devez dĂ©jĂ avoir un groupe dâexĂ©cuteurs. DĂ©finissez ensuite la propriĂ©tĂ© runnerGroup
dans votre copie du fichier values.yaml
. Lâexemple suivant ajoute un groupe identique dâexĂ©cuteurs au groupe dâexĂ©cuteurs Octo-Group.
runnerGroup: "Octo-Group"
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Configuration dâun proxy sortant
Pour forcer le trafic HTTP du contrÎleur et des exécuteurs à passer par votre proxy sortant, définissez les propriétés suivantes dans votre chart Helm.
proxy:
http:
url: http://proxy.com:1234
credentialSecretRef: proxy-auth # a Kubernetes secret with `username` and `password` keys
https:
url: http://proxy.com:1234
credentialSecretRef: proxy-auth # a Kubernetes secret with `username` and `password` keys
noProxy:
- example.com
- example.org
ARC prend en charge lâutilisation de proxys anonymes ou authentifiĂ©s. Si vous utilisez des proxys authentifiĂ©s, vous devez dĂ©finir la valeur credentialSecretRef
pour rĂ©fĂ©rencer un secret Kubernetes. Vous pouvez crĂ©er un secret avec vos informations dâidentification de proxy avec la commande suivante.
Remarque
CrĂ©ez le secret dans le mĂȘme espace de noms que celui oĂč le graphique gha-runner-scale-set
est installĂ©. Dans cet exemple, lâespace de noms est arc-runners
, de sorte correspondre Ă la documentation de dĂ©marrage rapide. Pour plus dâinformations, consultez « DĂ©marrage rapide avec Actions Runner Controller ».
kubectl create secret generic proxy-auth \ --namespace=arc-runners \ --from-literal=username=proxyUsername \ --from-literal=password=proxyPassword \
kubectl create secret generic proxy-auth \
--namespace=arc-runners \
--from-literal=username=proxyUsername \
--from-literal=password=proxyPassword \
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
DĂ©finition du nombre maximal et minimal dâexĂ©cuteurs
Les propriétés maxRunners
et minRunners
vous fournissent un Ă©ventail dâoptions pour personnaliser votre configuration ARC.
Remarque
ARC ne prend pas en charge les configurations maximale et minimale planifiées. Vous pouvez utiliser une tùche cron ou toute autre solution de planification pour mettre à jour la configuration selon une planification.
Exemple : Nombre non dĂ©limitĂ© dâexĂ©cuteurs
Si vous commentez à la fois les propriétés maxRunners
et minRunners
, ARC effectue un scale-up jusquâau nombre de travaux attribuĂ©s au groupe identique dâexĂ©cuteurs et effectue un scale-down Ă 0 sâil nây a aucun travail actif.
## maxRunners is the max number of runners the auto scaling runner set will scale up to.
# maxRunners: 0
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
# minRunners: 0
Exemple : Nombre minimal dâexĂ©cuteurs
Vous pouvez définir la propriété minRunners
sur nâimporte quel nombre et ARC sâassurera quâil y a toujours le nombre spĂ©cifiĂ© dâexĂ©cuteurs actifs et disponibles pour sâoccuper des travaux assignĂ©s au groupe identique dâexĂ©cuteurs.
## maxRunners is the max number of runners the auto scaling runner set will scale up to.
# maxRunners: 0
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
minRunners: 20
Exemple : DĂ©finir le nombre maximal et minimal dâexĂ©cuteurs
Dans cette configuration, Actions Runner Controller effectue un scale-up jusquâĂ un maximum de 30
exécuteurs et un scale-down à 20
exécuteurs quand les travaux sont terminés.
Remarque
La valeur de minRunners
ne peut jamais dépasser celle de maxRunners
, sauf si maxRunners
est commenté.
## maxRunners is the max number of runners the auto scaling runner set will scale up to.
maxRunners: 30
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
minRunners: 20
Exemple : Vidage de la file dâattente des travaux
Dans certains scĂ©narios, vous voudrez probablement vider la file dâattente des travaux pour rĂ©soudre un problĂšme ou effectuer une maintenance sur votre cluster. Si vous dĂ©finissez les deux propriĂ©tĂ©s sur 0
, Actions Runner Controller ne crĂ©e pas de pod dâexĂ©cuteur lorsque de nouveaux travaux sont disponibles et attribuĂ©s.
## maxRunners is the max number of runners the auto scaling runner set will scale up to.
maxRunners: 0
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
minRunners: 0
Certificats TLS personnalisés
Remarque
Si vous utilisez une image d'exécution personnalisée qui n'est pas basée sur la distribution Debian
, les instructions suivantes ne fonctionneront pas.
Certains environnements demandent des certificats TLS signĂ©s par une autoritĂ© de certification personnalisĂ©e. Ătant donnĂ© que les certificats dâautoritĂ© de certification personnalisĂ©s ne sont pas regroupĂ©s avec les conteneurs de contrĂŽleur ou dâexĂ©cuteur, vous devez les injecter dans leur magasin de confiance respectif.
githubServerTLS:
certificateFrom:
configMapKeyRef:
name: config-map-name
key: ca.crt
runnerMountPath: /usr/local/share/ca-certificates/
Lorsque vous effectuez cette opĂ©ration, veillez Ă utiliser le format PEM (Privacy Enhanced Mail) et vĂ©rifiez que lâextension de votre certificat est .crt
. Toutes les autres seront ignorées.
Le contrÎleur exécute les actions suivantes.
- Crée un volume
github-server-tls-cert
contenant le certificat spécifié danscertificateFrom
. - Monte ce volume sur le chemin
runnerMountPath/<certificate name>
. - DĂ©finit la variable dâenvironnement
NODE_EXTRA_CA_CERTS
sur ce mĂȘme chemin. - DĂ©finit la variable dâenvironnement
RUNNER_UPDATE_CA_CERTS
sur1
(Ă partir de la version2.303.0
, cela indique Ă lâexĂ©cuteur de recharger les certificats sur lâhĂŽte).
ARC observe les valeurs dĂ©finies dans le modĂšle de pod dâexĂ©cuteur et ne les remplace pas.
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Utilisation dâun registre de conteneurs privĂ©
Avertissement
Cette Actions Runner Controller option de personnalisation peut ĂȘtre en dehors de la portĂ©e de ce que Support GitHub peut aider et peut causer un comportement inattendu si elle est configurĂ©e de maniĂšre incorrecte.
Pour plus dâinformations sur ce que Support GitHub peut faire, consultez Prise en charge du contrĂŽleur dâexĂ©cuteurs dâActions.
Pour utiliser un registre de conteneurs privĂ©, vous pouvez copier lâimage du contrĂŽleur et lâimage de lâexĂ©cuteur dans votre registre de conteneurs privĂ©. Configurez ensuite les liens vers ces images et dĂ©finissez les valeurs imagePullPolicy
et imagePullSecrets
.
Configuration de lâimage du contrĂŽleur
Vous pouvez mettre Ă jour votre copie du fichier values.yaml
et définir les propriétés image
comme suit.
image:
repository: "custom-registry.io/gha-runner-scale-set-controller"
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "0.4.0"
imagePullSecrets:
- name: <registry-secret-name>
Le conteneur dâĂ©couteur hĂ©rite de imagePullPolicy
, qui a été défini pour le contrÎleur.
Configuration de lâimage de lâexĂ©cuteur
Vous pouvez mettre Ă jour votre copie du fichier values.yaml
et définir les propriétés template.spec
afin de configurer le pod exĂ©cuteur pour votre cas dâusage spĂ©cifique.
Remarque
Le conteneur dâexĂ©cuteur doit ĂȘtre nommĂ© runner
. Sinon, il ne sera pas configuré correctement pour se connecter à GitHub.
Voici un exemple de configuration :
template:
spec:
containers:
- name: runner
image: "custom-registry.io/actions-runner:latest"
imagePullPolicy: Always
command: ["/home/runner/run.sh"]
imagePullSecrets:
- name: <registry-secret-name>
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Mise Ă jour de la spĂ©cification du pod pour le pod dâexĂ©cuteur
Avertissement
Cette Actions Runner Controller option de personnalisation peut ĂȘtre en dehors de la portĂ©e de ce que Support GitHub peut aider et peut causer un comportement inattendu si elle est configurĂ©e de maniĂšre incorrecte.
Pour plus dâinformations sur ce que Support GitHub peut faire, consultez Prise en charge du contrĂŽleur dâexĂ©cuteurs dâActions.
Vous pouvez entiĂšrement personnaliser la PodSpec du pod dâexĂ©cuteur et le contrĂŽleur applique la configuration que vous spĂ©cifiez. Voici un exemple de spĂ©cification de pod.
template:
spec:
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
resources:
limits:
cpu: 500m
memory: 512Mi
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
add:
- NET_ADMIN
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Mise Ă jour de la spĂ©cification du pod pour le pod de lâĂ©couteur
Avertissement
Cette Actions Runner Controller option de personnalisation peut ĂȘtre en dehors de la portĂ©e de ce que Support GitHub peut aider et peut causer un comportement inattendu si elle est configurĂ©e de maniĂšre incorrecte.
Pour plus dâinformations sur ce que Support GitHub peut faire, consultez Prise en charge du contrĂŽleur dâexĂ©cuteurs dâActions.
Vous pouvez personnaliser le PodSpec du pod dâĂ©couteur et le contrĂŽleur appliquera la configuration que vous avez spĂ©cifiĂ©e. Voici un exemple de spĂ©cification de pod.
Remarque
Il est important de ne pas modifier la valeur de listenerTemplate.spec.containers.name
du conteneur dâĂ©couteur. Sinon, la configuration que vous spĂ©cifiez sera appliquĂ©e Ă un nouveau conteneur sidecar.
listenerTemplate:
spec:
containers:
# If you change the name of the container, the configuration will not be applied to the listener,
# and it will be treated as a sidecar container.
- name: listener
securityContext:
runAsUser: 1000
resources:
limits:
cpu: "1"
memory: 1Gi
requests:
cpu: "1"
memory: 1Gi
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Utilisation du mode Docker-in-Docker ou Kubernetes pour les conteneurs
Avertissement
Cette Actions Runner Controller option de personnalisation peut ĂȘtre en dehors de la portĂ©e de ce que Support GitHub peut aider et peut causer un comportement inattendu si elle est configurĂ©e de maniĂšre incorrecte.
Pour plus dâinformations sur ce que Support GitHub peut faire, consultez Prise en charge du contrĂŽleur dâexĂ©cuteurs dâActions.
Si vous utilisez des tùches et des services de conteneur ou des actions de conteneur, vous devez définir la valeur containerMode
sur dind
ou kubernetes
. Pour utiliser un mode de conteneur personnalisé, commentez ou supprimez containerMode
, puis ajoutez la configuration souhaitée dans la section template
. Consultez Personnalisation des modes de conteneur.
- Pour plus dâinformations sur les travaux et services de conteneur, consultez « ExĂ©cution de travaux dans un conteneur ».
- Pour plus dâinformations sur les actions de conteneur, consultez « Creating a Docker container action ».
Utilisation du mode Docker-in-Docker
Remarque
Le conteneur Docker-in-Docker nĂ©cessite un mode privilĂ©giĂ©. Pour plus dâinformations, consultez Configure a Security Context for a Pod or Container dans la documentation Kubernetes.
Par défaut, le conteneur dind
utilise lâimage docker:dind
, qui exécute le démon Docker en tant que racine. Vous pouvez remplacer cette image par docker:dind-rootless
Ă condition de tenir compte des limitations connues et dâexĂ©cuter les pods en mode --privileged
. Pour savoir comment personnaliser la configuration de Docker-in-Docker, consultez « Personnalisation des modes de conteneur ».
Le mode Docker-in-Docker est une configuration qui vous permet dâexĂ©cuter Docker au sein dâun conteneur Docker. Dans cette configuration, pour chaque pod dâexĂ©cuteur créé, ARC crĂ©e les conteneurs suivants.
- Un conteneur
init
- Un conteneur
runner
- Un conteneur
dind
Pour activer le mode Docker-in-Docker, définissez la valeur containerMode.type
sur dind
comme suit.
containerMode:
type: "dind"
template.spec
est mis à jour avec la configuration par défaut suivante.
Pour les versions de Kubernetes >= v1.29
, un conteneur sidecar sera utilisé pour exécuter le démon Docker.
template:
spec:
initContainers:
- name: init-dind-externals
image: ghcr.io/actions/actions-runner:latest
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
volumeMounts:
- name: dind-externals
mountPath: /home/runner/tmpDir
- name: dind
image: docker:dind
args:
- dockerd
- --host=unix:///var/run/docker.sock
- --group=$(DOCKER_GROUP_GID)
env:
- name: DOCKER_GROUP_GID
value: "123"
securityContext:
privileged: true
restartPolicy: Always
startupProbe:
exec:
command:
- docker
- info
initialDelaySeconds: 0
failureThreshold: 24
periodSeconds: 5
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /var/run
- name: dind-externals
mountPath: /home/runner/externals
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: DOCKER_HOST
value: unix:///var/run/docker.sock
- name: RUNNER_WAIT_FOR_DOCKER_IN_SECONDS
value: "120"
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /var/run
volumes:
- name: work
emptyDir: {}
- name: dind-sock
emptyDir: {}
- name: dind-externals
emptyDir: {}
Pour les versions de Kubernetes < v1.29
, la configuration suivante sera appliquée :
template:
spec:
initContainers:
- name: init-dind-externals
image: ghcr.io/actions/actions-runner:latest
command:
["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
volumeMounts:
- name: dind-externals
mountPath: /home/runner/tmpDir
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: DOCKER_HOST
value: unix:///var/run/docker.sock
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /var/run
- name: dind
image: docker:dind
args:
- dockerd
- --host=unix:///var/run/docker.sock
- --group=$(DOCKER_GROUP_GID)
env:
- name: DOCKER_GROUP_GID
value: "123"
securityContext:
privileged: true
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /var/run
- name: dind-externals
mountPath: /home/runner/externals
volumes:
- name: work
emptyDir: {}
- name: dind-sock
emptyDir: {}
- name: dind-externals
emptyDir: {}
Les valeurs dans template.spec
sont automatiquement injectĂ©es et ne peuvent pas ĂȘtre remplacĂ©es. Si vous souhaitez personnaliser cette configuration, vous devez annuler lâensemble containerMode.type
, puis copier cette configuration et lâappliquer directement dans votre copie du fichier values.yaml
.
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Utilisation du mode Kubernetes
En mode Kubernetes, ARC utilise des hooks de conteneur dâexĂ©cuteur pour crĂ©er un pod dans le mĂȘme espace de noms afin dâexĂ©cuter le service, le travail de conteneur ou lâaction.
Prérequis
Le mode Kubernetes sâappuie sur des volumes persistants pour partager les dĂ©tails des travaux entre le pod dâexĂ©cuteur et le pod de travail de conteneur. Pour plus dâinformations, consultez Persistent Volumes dans la documentation Kubernetes.
Pour utiliser le mode Kubernetes, vous devez effectuer les opérations suivantes.
- CrĂ©er des volumes persistants disponibles pour les pods dâexĂ©cuteur Ă revendiquer.
- Utiliser une solution pour provisionner automatiquement des volumes persistants Ă la demande.
Pour les tests, vous pouvez utiliser une solution comme OpenEBS.
Configuration du mode Kubernetes
Pour activer le mode Kubernetes, définissez containerMode.type
sur kubernetes
dans votre fichier values.yaml
.
containerMode:
type: "kubernetes"
kubernetesModeWorkVolumeClaim:
accessModes: ["ReadWriteOnce"]
storageClassName: "dynamic-blob-storage"
resources:
requests:
storage: 1Gi
Pour obtenir dâautres options de configuration de Helm, consultez values.yaml
dans le référentiel ARC.
Remarque
Lorsque le mode Kubernetes est activé, les workflows qui ne sont pas configurés avec un travail de conteneur échouent avec une erreur semblable à :
Jobs without a job container are forbidden on this runner, please add a 'container:' to your job or contact your self-hosted runner administrator.
Pour permettre aux travaux sans conteneur de travail de sâexĂ©cuter, dĂ©finissez ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
sur false
au niveau de votre conteneur dâexĂ©cuteur. Cela indique Ă lâexĂ©cuteur de dĂ©sactiver cette vĂ©rification.
template:
spec:
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: ACTIONS_RUNNER_REQUIRE_JOB_CONTAINER
value: "false"
Personnalisation des modes de conteneur
Lorsque vous définissez containerMode
dans le fichier values.yaml
pour le graphique Helm gha-runner-scale-set
, vous pouvez utiliser lâune des valeurs suivantes :
dind
oukubernetes
En fonction de la valeur que vous définissez pour containerMode
, une configuration sera automatiquement injectée dans la section template
du fichier values.yaml
pour le graphique Helm gha-runner-scale-set
.
- Reportez-vous Ă la configuration de
dind
. - Reportez-vous Ă la configuration de
kubernetes
.
Pour personnaliser la spécification, mettez en commentaire ou supprimez containerMode
, et ajoutez la configuration que vous voulez dans la section template
.
Exemple : exécution de dind-rootless
Avant de dĂ©cider dâexĂ©cuter dind-rootless
, assurez-vous de connaĂźtre les limitations connues.
Pour les versions de Kubernetes >= v1.29, un conteneur sidecar sera utilisé pour exécuter le démon Docker.
## githubConfigUrl is the GitHub url for where you want to configure runners
## ex: https://github.com/myorg/myrepo or https://github.com/myorg
githubConfigUrl: "https://github.com/actions/actions-runner-controller"
## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
## You can choose to use GitHub App or a PAT token
githubConfigSecret: my-super-safe-secret
## maxRunners is the max number of runners the autoscaling runner set will scale up to.
maxRunners: 5
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
minRunners: 0
runnerGroup: "my-custom-runner-group"
## name of the runner scale set to create. Defaults to the helm release name
runnerScaleSetName: "my-awesome-scale-set"
## template is the PodSpec for each runner Pod
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
template:
spec:
initContainers:
- name: init-dind-externals
image: ghcr.io/actions/actions-runner:latest
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
volumeMounts:
- name: dind-externals
mountPath: /home/runner/tmpDir
- name: init-dind-rootless
image: docker:dind-rootless
command:
- sh
- -c
- |
set -x
cp -a /etc/. /dind-etc/
echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
echo 'runner:x:1001:' >> /dind-etc/group
echo 'runner:100000:65536' >> /dind-etc/subgid
echo 'runner:100000:65536' >> /dind-etc/subuid
chmod 755 /dind-etc;
chmod u=rwx,g=rx+s,o=rx /dind-home
chown 1001:1001 /dind-home
securityContext:
runAsUser: 0
volumeMounts:
- mountPath: /dind-etc
name: dind-etc
- mountPath: /dind-home
name: dind-home
- name: dind
image: docker:dind-rootless
args:
- dockerd
- --host=unix:///run/user/1001/docker.sock
securityContext:
privileged: true
runAsUser: 1001
runAsGroup: 1001
restartPolicy: Always
startupProbe:
exec:
command:
- docker
- info
initialDelaySeconds: 0
failureThreshold: 24
periodSeconds: 5
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /run/user/1001
- name: dind-externals
mountPath: /home/runner/externals
- name: dind-etc
mountPath: /etc
- name: dind-home
mountPath: /home/runner
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: DOCKER_HOST
value: unix:///run/user/1001/docker.sock
securityContext:
privileged: true
runAsUser: 1001
runAsGroup: 1001
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /run/user/1001
volumes:
- name: work
emptyDir: {}
- name: dind-externals
emptyDir: {}
- name: dind-sock
emptyDir: {}
- name: dind-etc
emptyDir: {}
- name: dind-home
emptyDir: {}
Pour les versions de Kubernetes < v1.29
, la configuration suivante sera appliquée :
## githubConfigUrl is the GitHub url for where you want to configure runners
## ex: https://github.com/myorg/myrepo or https://github.com/myorg
githubConfigUrl: "https://github.com/actions/actions-runner-controller"
## githubConfigSecret is the k8s secrets to use when auth with GitHub API.
## You can choose to use GitHub App or a PAT token
githubConfigSecret: my-super-safe-secret
## maxRunners is the max number of runners the autoscaling runner set will scale up to.
maxRunners: 5
## minRunners is the min number of idle runners. The target number of runners created will be
## calculated as a sum of minRunners and the number of jobs assigned to the scale set.
minRunners: 0
runnerGroup: "my-custom-runner-group"
## name of the runner scale set to create. Defaults to the helm release name
runnerScaleSetName: "my-awesome-scale-set"
## template is the PodSpec for each runner Pod
## For reference: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#PodSpec
template:
spec:
initContainers:
- name: init-dind-externals
image: ghcr.io/actions/actions-runner:latest
command: ["cp", "-r", "/home/runner/externals/.", "/home/runner/tmpDir/"]
volumeMounts:
- name: dind-externals
mountPath: /home/runner/tmpDir
- name: init-dind-rootless
image: docker:dind-rootless
command:
- sh
- -c
- |
set -x
cp -a /etc/. /dind-etc/
echo 'runner:x:1001:1001:runner:/home/runner:/bin/ash' >> /dind-etc/passwd
echo 'runner:x:1001:' >> /dind-etc/group
echo 'runner:100000:65536' >> /dind-etc/subgid
echo 'runner:100000:65536' >> /dind-etc/subuid
chmod 755 /dind-etc;
chmod u=rwx,g=rx+s,o=rx /dind-home
chown 1001:1001 /dind-home
securityContext:
runAsUser: 0
volumeMounts:
- mountPath: /dind-etc
name: dind-etc
- mountPath: /dind-home
name: dind-home
containers:
- name: runner
image: ghcr.io/actions/actions-runner:latest
command: ["/home/runner/run.sh"]
env:
- name: DOCKER_HOST
value: unix:///run/user/1001/docker.sock
securityContext:
privileged: true
runAsUser: 1001
runAsGroup: 1001
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /run/user/1001
- name: dind
image: docker:dind-rootless
args:
- dockerd
- --host=unix:///run/user/1001/docker.sock
securityContext:
privileged: true
runAsUser: 1001
runAsGroup: 1001
volumeMounts:
- name: work
mountPath: /home/runner/_work
- name: dind-sock
mountPath: /run/user/1001
- name: dind-externals
mountPath: /home/runner/externals
- name: dind-etc
mountPath: /etc
- name: dind-home
mountPath: /home/runner
volumes:
- name: work
emptyDir: {}
- name: dind-externals
emptyDir: {}
- name: dind-sock
emptyDir: {}
- name: dind-etc
emptyDir: {}
- name: dind-home
emptyDir: {}
Comprendre runner-container-hooks
Lorsque lâexĂ©cuteur dĂ©tecte une exĂ©cution de flux de travail qui utilise un travail de conteneur, un conteneur de service ou une action Docker, il appelle runner-container-hooks pour crĂ©er un nouveau pod. LâexĂ©cuteur sâappuie sur runner-container-hooks pour appeler les API Kubernetes et crĂ©er un nouveau pod dans le mĂȘme espace de noms que le pod dâexĂ©cuteur. Ce nouveau pod sera utilisĂ© pour exĂ©cuter le travail de conteneur, le conteneur de service ou lâaction Docker. Pour plus d'informations, consultez le dĂ©pĂŽt runner-container-hooks
.
Configuration des extensions de hook
Ă partir de la version 0.4.0 dâARC, runner-container-hooks prend en charge les extensions de hook. Vous pouvez les utiliser pour configurer le pod créé par runner-container-hooks. Par exemple, vous pouvez utiliser une extension de hook pour dĂ©finir un contexte de sĂ©curitĂ© pour le pod. Les extensions de hook vous permettent de spĂ©cifier un fichier YAML qui est utilisĂ© pour mettre Ă jour le PodSpec du pod créé par runner-container-hooks.
Il existe deux options pour configurer les extensions de hook.
- Stocker dans votre image dâexĂ©cuteur personnalisĂ©e. Vous pouvez stocker le PodSpec dans un fichier YAML nâimporte oĂč dans votre image dâexĂ©cuteur personnalisĂ©e. Pour plus dâinformations, consultez « Actions Runner Controller ».
- Stocker dans un ConfigMap. Vous pouvez crĂ©er un ConfigMap avec le PodSpec et monter ce ConfigMap dans le conteneur dâexĂ©cuteur. Pour plus dâinformations, consultez ConfigMaps dans la documentation Kubernetes.
Remarque
Avec les deux options, vous devez dĂ©finir la variable dâenvironnement ACTIONS_RUNNER_CONTAINER_HOOK_TEMPLATE
dans la spĂ©cification du conteneur dâexĂ©cuteur pour quâelle pointe vers le chemin du fichier YAML montĂ© dans le conteneur dâexĂ©cuteur.
Exemple : Utilisation dâun ConfigMap pour dĂ©finir securityContext
CrĂ©ez un ConfigMap dans le mĂȘme espace de noms que les pods dâexĂ©cuteur. Par exemple :
apiVersion: v1
kind: ConfigMap
metadata:
name: hook-extension
namespace: arc-runners
data:
content: |
metadata:
annotations:
example: "extension"
spec:
containers:
- name: "$job" # Target the job container
securityContext:
runAsUser: 1000
- Les champs
.metadata.labels
etmetadata.annotations
seront ajoutés tels quels, sauf si leurs clés sont réservées. Vous ne pouvez pas remplacer les champs.metadata.name
etmetadata.namespace
. - La majorité des champs de PodSpec sont appliqués à partir du modÚle spécifié et remplacent les valeurs transmises par le fichier
values.yaml
de votre graphique Helm. - Si vous spĂ©cifiez des volumes supplĂ©mentaires, ils seront ajoutĂ©s aux volumes par dĂ©faut spĂ©cifiĂ©s par lâexĂ©cuteur.
- Les
spec.containers
sont fusionnés en fonction des noms qui leur sont attribués.- Si le nom du conteneur est
$job
:- Les champs
spec.containers.name
etspec.containers.image
sont ignorés. - Les champs
spec.containers.env
,spec.containers.volumeMounts
etspec.containers.ports
sont ajoutĂ©s Ă la spĂ©cification de conteneur par dĂ©faut créée par le hook. - Les autres champs sont appliquĂ©s tels quâils ont Ă©tĂ© fournis.
- Les champs
- Si le nom du conteneur nâest pas
$job
, les champs seront ajoutés tels quels à la définition du pod.
- Si le nom du conteneur est
Activation des métriques
Remarque
Les mesures pour ARC sont disponibles Ă partir de la version gha-runner-scale-set-0.5.0.
ARC peut Ă©mettre des mĂ©triques sur vos exĂ©cuteurs, vos travaux et le temps consacrĂ© Ă lâexĂ©cution de vos flux de travail. Les mĂ©triques peuvent ĂȘtre utilisĂ©es pour identifier la congestion, surveiller lâintĂ©gritĂ© de votre dĂ©ploiement ARC, visualiser les tendances dâutilisation, optimiser la consommation des ressources, parmi de nombreux autres cas dâutilisation. Les mĂ©triques sont Ă©mises par les pods contrĂŽleur-manager et Ă©couteurs au format Prometheus. Pour plus dâinformations, consultez les formats Exposition dans la documentation Prometheus.
Pour activer les métriques pour ARC, configurez la metrics
propriété dans le fichier values.yaml
du gha-runner-scale-set-controller
graphique.
Voici un exemple de configuration.
metrics:
controllerManagerAddr: ":8080"
listenerAddr: ":8080"
listenerEndpoint: "/metrics"
Remarque
Si lâobjet metrics:
nâest pas fourni ou est commentĂ©, les indicateurs suivants sont appliquĂ©s aux pods du gestionnaire de contrĂŽleur et de lâĂ©couteur avec des valeurs vides : --metrics-addr
, --listener-metrics-addr
, --listener-metrics-endpoint
. Cela désactive les métriques pour ARC.
Une fois ces propriĂ©tĂ©s configurĂ©es, vos pods de contrĂŽleur et dâĂ©couteur Ă©mettent des mĂ©triques via lâĂ©couteurEndpoint liĂ© aux ports que vous spĂ©cifiez dans votre fichier values.yaml
. Dans lâexemple ci-dessus, le point de terminaison est /metrics
et le port est :8080
. Vous pouvez utiliser ce point de terminaison pour récupérer des métriques à partir de vos pods contrÎleur-manager et écouteur.
Pour désactiver les métriques, mettez à jour votre fichier values.yaml
en supprimant ou en commentant lâobjet metrics:
et ses propriétés.
Métriques disponibles pour ARC
Le tableau suivant prĂ©sente les mĂ©triques Ă©mises par les pods du gestionnaire de contrĂŽleur et de lâĂ©couteur.
Remarque
Les mesures émises par le contrÎleur-manager concernent le runtime du contrÎleur et ne sont pas détenues par GitHub.
Owner | Métrique | Type | Description |
---|---|---|---|
controller-manager | gha_controller_pending_ephemeral_runners | jauge | Nombre dâexĂ©cuteurs Ă©phĂ©mĂšres dans un Ă©tat en attente |
controller-manager | gha_controller_running_ephemeral_runners | jauge | Nombre dâexĂ©cuteurs Ă©phĂ©mĂšres dans un Ă©tat en cours dâexĂ©cution |
controller-manager | gha_controller_failed_ephemeral_runners | jauge | Nombre dâexĂ©cuteurs Ă©phĂ©mĂšres dans un Ă©tat dâĂ©chec |
controller-manager | gha_controller_running_listeners | jauge | Nombre dâĂ©couteurs dans un Ă©tat en cours dâexĂ©cution |
listener | gha_assigned_jobs | jauge | Nombre de projets affectĂ©s au groupe identique de lâexĂ©cuteur |
listener | gha_running_jobs | jauge | Nombre de projets en cours dâexĂ©cution ou mis en file dâattente Ă exĂ©cuter |
listener | gha_registered_runners | jauge | Nombre dâexĂ©cuteurs inscrits par le groupe identique de lâexĂ©cuteur |
listener | gha_busy_runners | jauge | Nombre dâexĂ©cuteurs inscrits en cours dâexĂ©cution dâun projet |
listener | gha_min_runners | jauge | Nombre minimal dâexĂ©cuteurs configurĂ©s pour le groupe identique de lâexĂ©cuteur |
listener | gha_max_runners | jauge | Nombre maximal dâexĂ©cuteurs configurĂ©s pour le groupe identique de lâexĂ©cuteur |
listener | gha_desired_runners | jauge | Nombre dâexĂ©cuteurs souhaitĂ©s (objectif scale up/scale down) par le groupe identique de lâexĂ©cuteur |
listener | gha_idle_runners | jauge | Nombre dâexĂ©cuteurs inscrits qui nâexĂ©cutent pas un projet |
listener | gha_started_jobs_total | counter | Nombre total de projets dĂ©marrĂ©s depuis que lâĂ©couteur est devenu prĂȘt [1] |
listener | gha_completed_jobs_total | counter | Nombre total de projets terminĂ©s depuis que lâĂ©couteur est devenu prĂȘt [1] |
listener | gha_job_startup_duration_seconds | histogram | Nombre de secondes passĂ©es en attente de tĂąche de workflow pour dĂ©marrer sur lâexĂ©cuteur dĂ©tenu par le groupe identique de lâexĂ©cuteur |
listener | gha_job_execution_duration_seconds | histogram | Nombre de secondes passĂ©es Ă exĂ©cuter des tĂąches de workflow par le groupe identique de lâexĂ©cuteur |
[1]: Listener metrics that have the counter type are reset when the listener pod restarts.
Mise Ă niveau dâARC
Ătant donnĂ© que Helm ne prend pas en charge la mise Ă niveau ou la suppression des CRD, il nâest pas possible dâutiliser Helm pour mettre Ă niveau ARC. Pour plus dâinformations, consultez DĂ©finitions de ressources personnalisĂ©es dans la documentation Helm. Pour mettre Ă niveau ARC vers une version plus rĂ©cente, vous devez effectuer les Ă©tapes suivantes.
- Désinstallez toutes les installations de
gha-runner-scale-set
. - Attendez que les ressources soient nettoyées.
- Désinstallez ARC.
- Sâil existe une modification des CRD entre la version actuellement installĂ©e et la version mise Ă jour, supprimez tous les CRD associĂ©s au groupe dâAPI
actions.github.com
. - Réinstallez ARC.
Pour plus d'informations, voir Déploiement d'un jeu d'échelle pour les coureurs.
Si vous souhaitez mettre Ă niveau ARC mais que vous craignez des temps dâarrĂȘt, vous pouvez dĂ©ployer ARC dans une configuration de haute disponibilitĂ© afin de garantir que les exĂ©cuteurs sont toujours disponibles. Pour plus d'informations, voir Haute disponibilitĂ© et basculement automatique.
Remarque
La transition de la version dâARC prise en charge par la communautĂ© vers la version prise en charge par GitHub constitue un changement architectural important. La version prise en charge par GitHub nĂ©cessite une refonte de nombreux composants dâARC. Il ne sâagit pas dâune mise Ă niveau de logiciel mineure. Pour ces raisons, nous recommandons de tester dâabord les nouvelles versions dans un environnement intermĂ©diaire qui correspond Ă votre environnement de production. Cela garantira la stabilitĂ© et la fiabilitĂ© de la configuration avant de la dĂ©ployer en production.
DĂ©ploiement dâune image canary
Vous pouvez tester les fonctionnalitĂ©s avant quâelles ne soient publiĂ©es en utilisant des versions canary de lâimage du conteneur controller-manager. Les images canary sont publiĂ©es avec le format de balise canary-SHORT_SHA
. Pour plus dâinformations, consultez gha-runner-scale-set-controller
sur le Container registry.
Remarque
- Vous devez utiliser les graphiques Helm dans votre systĂšme de fichiers local.
- Vous ne pouvez pas utiliser les graphiques Helm publiés.
- Mettez Ă jour le
tag
dans le fichier gha-runner-scale-set-controllervalues.yaml
en :canary-SHORT_SHA
- Mettez Ă jour le champ
appVersion
dans le fichierChart.yaml
pourgha-runner-scale-set
en :canary-SHORT_SHA
- Réinstallez ARC en utilisant le graphique Helm et les fichiers
values.yaml
mis Ă jour.
Haute disponibilité et basculement automatique
ARC peut ĂȘtre dĂ©ployĂ© dans une configuration Ă haute disponibilitĂ© (active/active). Si vous avez deux clusters Kubernetes distincts dĂ©ployĂ©s dans des rĂ©gions distinctes, vous pouvez dĂ©ployer ARC dans les deux clusters et configurer des groupes identiques dâexĂ©cuteurs pour quâils utilisent le mĂȘme runnerScaleSetName
. Pour ce faire, chaque groupe identique de lâexĂ©cuteur doit ĂȘtre affectĂ© Ă un groupe dâexĂ©cuteurs distinct. Par exemple, vous pouvez avoir deux groupes identiques dâexĂ©cuteurs nommĂ©s chacunarc-runner-set
, Ă condition quâun groupe identique de lâexĂ©cuteur appartient Ă runner-group-A
et que lâautre groupe identique de lâexĂ©cuteur appartient Ă runner-group-B
. Pour plus d'informations sur l'affectation de jeux d'Ă©chelle d'exĂ©cution Ă des groupes d'exĂ©cution, voir Gestion de lâaccĂšs aux exĂ©cuteurs auto-hĂ©bergĂ©s Ă lâaide de groupes.
Si les deux groupes identiques de lâexĂ©cuteur sont en ligne, les projets qui leur sont attribuĂ©s sont distribuĂ©s arbitrairement (course dâaffectation). Vous ne pouvez pas configurer lâalgorithme dâattribution de projet. Si lâun des clusters tombe en panne, le groupe identique de lâexĂ©cuteur dans lâautre cluster continue dâacquĂ©rir des projets normalement sans aucune intervention ni modification de configuration.
Utilisation dâARC dans les organisations
Une seule installation dâActions Runner Controller vous permet de configurer un ou plusieurs groupes identiques dâexĂ©cuteurs. Ces groupes identiques dâexĂ©cuteurs peuvent ĂȘtre inscrits dans un dĂ©pĂŽt, une organisation ou une entreprise. Vous pouvez Ă©galement utiliser des groupes dâexĂ©cuteurs pour contrĂŽler les limites des autorisations de ces groupes identiques dâexĂ©cuteurs.
Il est recommandĂ© de crĂ©er un espace de noms unique pour chaque organisation. Vous pouvez Ă©galement crĂ©er un espace de noms pour chaque groupe dâexĂ©cuteurs ou chaque groupe identique dâexĂ©cuteurs. Vous pouvez installer autant de groupes identiques dâexĂ©cuteurs que nĂ©cessaire dans chaque espace de noms. Vous bĂ©nĂ©ficierez ainsi des niveaux dâisolation les plus Ă©levĂ©s et amĂ©liorerez votre sĂ©curitĂ©. Vous pouvez utiliser des GitHub Apps pour lâauthentification et dĂ©finir des autorisations granulaires pour chaque groupe identique dâexĂ©cuteurs.
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.