Vous pouvez authentifier Actions Runner Controller (ARC) auprès de l’API GitHub à l’aide d’une GitHub App ou d’un personal access token (classic).
Remarque
L’authentification à l’aide d’un GitHub App n’est pas prise en charge pour les runners configurés au niveau de l’entreprise. Pour plus d’informations, consultez « AUTOTITLE ».
Authentification d’ARC avec une GitHub App
-
Créez une GitHub App appartenant à une organisation. Pour plus d’informations, consultez « AUTOTITLE ». Configurez l’GitHub App comme suit.
-
Pour « URL de la page d’accueil », entrez .
-
Sous « Autorisations », cliquez sur Autorisations du dépôt. Utilisez ensuite les menus déroulants pour sélectionner les autorisations d’accès suivantes.
-
Administration : Lecture et écriture
Remarque
n'est nécessaire que lorsque l'on configure Actions Runner Controller pour qu'il s'enregistre au niveau du référentiel. Il n’est pas nécessaire de s’inscrire au niveau de l’organisation.
-
Métadonnées : Lecture seule
-
-
Sous « Autorisations », cliquez sur Autorisations de l’organisation. Utilisez ensuite les menus déroulants pour sélectionner les autorisations d’accès suivantes.
- Exécuteurs auto-hébergés : Lecture et écriture
-
-
Après avoir créé GitHub App, dans la page de GitHub App, notez la valeur « ID d’application ». Vous utiliserez cette valeur plus tard.
-
Sous « Clés privées », cliquez sur Générer une clé privée et enregistrez le fichier
.pem. Vous utiliserez cette clé plus tard. -
Dans le menu en haut à gauche de la page, cliquez sur Installer l’application, puis à côté de votre organisation, cliquez sur Installer pour installer l’application dans votre organisation.
-
Après avoir confirmé les autorisations d’installation sur votre organisation, notez l’ID d’installation de l’application. Vous le réutiliserez ultérieurement. Vous trouverez l’ID d’installation de l’application dans la page d’installation de l’application, qui a le format d’URL suivant :
https://HOSTNAME/organizations/ORGANIZATION/settings/installations/INSTALLATION_ID -
Enregistrez l’ID de l’application, l’ID d’installation et le fichier de clé privée
.pemtéléchargé via les étapes précédentes dans Kubernetes en tant que secret.Pour créer un secret Kubernetes avec les valeurs de vos GitHub App, exécutez la commande suivante.
Remarque
Créez le secret dans le même espace de noms que celui où le graphique
gha-runner-scale-setest installé. Dans cet exemple, l’espace de noms estarc-runners, de sorte correspondre à la documentation de démarrage rapide. Pour plus d’informations, consultez « Démarrage rapide avec Actions Runner Controller ».Bash kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_app_id=123456 \ --from-literal=github_app_installation_id=654321 \ --from-literal=github_app_private_key='-----BEGIN RSA PRIVATE KEY-----********'
kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_app_id=123456 \ --from-literal=github_app_installation_id=654321 \ --from-literal=github_app_private_key='-----BEGIN RSA PRIVATE KEY-----********'Ensuite, à l’aide de la propriété
githubConfigSecretdans votre copie du fichiervalues.yaml, transmettez le nom du secret en tant que référence.githubConfigSecret: pre-defined-secret
Pour obtenir d’autres options de configuration de Helm, consultez values.yaml dans le référentiel ARC.
Authentification d’ARC avec un personal access token (classic)
ARC peut utiliser des personal access tokens (classic) pour inscrire des exécuteurs auto-hébergés.
Remarque
Pour enregistrer des runners au niveau de l’entreprise, l’authentification ARC via un personal access token (classic) constitue la seule méthode prise en charge.
-
Créez un personal access token (classic) avec les étendues requises. Les étendues requises varient selon que vous inscrivez des exécuteurs au niveau du dépôt, de l’organisation ou de l’entreprise. Pour plus d’informations sur la création d’un personal access token (classic), consultez « AUTOTITLE ».
Voici la liste des étendues de personal access token requises pour les exécuteurs ARC.
- Exécuteurs de dépôt :
- Exécuteurs d’organisation :
- Exécuteurs d’entreprise :
-
Pour créer un secret Kubernetes avec les valeurs de votre personal access token (classic), utilisez la commande suivante.
Bash kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_token='YOUR-PAT'
kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_token='YOUR-PAT' -
Dans votre copie du fichier , passez le nom du secret en tant que référence.
githubConfigSecret: pre-defined-secretPour obtenir d’autres options de configuration de Helm, consultez
values.yamldans le référentiel ARC.
Authentification ARC avec fine-grained personal access token
ARC peut s’appuyer sur des fine-grained personal access tokens afin d’enregistrer des runners auto-hébergés.
Remarque
Pour enregistrer des runners au niveau de l’entreprise, l’authentification ARC via un personal access token (classic) constitue la seule méthode prise en charge.
-
Créez un fine-grained personal access token avec les étendues requises. L’étendue requise dépend du niveau auquel les runners sont enregistrés, qu’il s’agisse du référentiel ou de l’organisation. Pour plus d’informations sur la création d’un fine-grained personal access token, consultez AUTOTITLE.
Voici la liste des étendues de personal access token requises pour les exécuteurs ARC.
-
Exécuteurs de dépôt :
- Administration : Lecture et écriture
-
Runners d’organisation :
- Administration : lecture
- Exécuteurs auto-hébergés : Lecture et écriture
-
-
Pour créer un secret Kubernetes avec les valeurs de votre fine-grained personal access token, utilisez la commande suivante.
Bash kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_token='YOUR-PAT'
kubectl create secret generic pre-defined-secret \ --namespace=arc-runners \ --from-literal=github_token='YOUR-PAT' -
Dans votre copie du fichier , passez le nom du secret en tant que référence.
githubConfigSecret: pre-defined-secretPour obtenir d’autres options de configuration de Helm, consultez
values.yamldans le référentiel ARC.
Authentification ARC à l’aide de secrets de coffre-fort
Remarque
L’intégration du coffre-fort est actuellement proposée en préversion publique avec la prise en charge de Key Vault.
À compter de gha-runner-scale-set version 0.12.0, ARC prend en charge la récupération des informations d’identification GitHub à partir d’un coffre externe. La configuration de l’intégration du coffre-fort s’effectue par ensemble de scale de runners. Vous pouvez ainsi exécuter certains ensembles de scale avec des secrets Kubernetes, tandis que d’autres utilisent des secrets issus du coffre-fort, selon vos exigences de sécurité et d’exploitation.
Activation de l’intégration Vault
Pour activer l’intégration du coffre-fort pour un ensemble de scale de runners :
- Définissez le champ dans votre fichier sur le nom de la clé secrète stockée dans votre coffre-fort. Cette valeur doit être une chaîne.
- Supprimez les marques de commentaire et configurez la section dans votre fichier avec les informations relatives au fournisseur et aux détails d’accès appropriés.
- Fournissez le certificat requis () au contrôleur et à l’écouteur. Pour ce faire, vous pouvez : *Regénérer l’image du contrôleur en y incluant le certificat, ou *Monter le certificat en tant que volume dans le contrôleur et l’écouteur à l’aide des champs et .
Format du secret
Le secret stocké dans Azure Key Vault doit être au format JSON. La structure dépend du type d’authentification que vous utilisez :
Exemple : jeton GitHub
{
"github_token": "TOKEN"
}
Exemple : application GitHub
{
"github_app_id": "APP_ID_OR_CLIENT_ID",
"github_app_installation_id": "INSTALLATION_ID",
"github_app_private_key": "PRIVATE_KEY"
}
Configuration pour l’intégration avec Vault
Le certificat est stocké dans un fichier .pfx et monté dans le conteneur à l’emplacement /akv/cert.pfx. Voici un exemple de configuration de la section keyVault pour utiliser ce certificat pour l’authentification :
keyVault:
type: "azure_key_vault"
proxy:
https:
url: "PROXY_URL"
credentialSecretRef: "PROXY_CREDENTIALS_SECRET_NAME"
http: {}
noProxy: []
azureKeyVault:
clientId: <AZURE_CLIENT_ID>
tenantId: <AZURE_TENANT_ID>
url: <AZURE_VAULT_URL>
certificatePath: "/akv/cert.pfx"
Fourniture du certificat au contrôleur et à l’écouteur
ARC requiert un certificat (espace réservé) pour s’authentifier auprès du coffre-fort. Ce certificat doit être mis à la disposition des composants contrôleur et écouteur lors de l’installation du contrôleur. Cela peut être réalisé en montant le certificat comme volume à l’aide des champs (espace réservé) et (espace réservé) dans votre fichier (espace réservé) :
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
volumeMounts:
- mountPath: /akv
name: cert-volume
readOnly: true
listenerTemplate:
volumeMounts:
- name: cert-volume
mountPath: /akv/certs
readOnly: true
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
Le code ci-dessous illustre un exemple de fichier (espace réservé) pour un ensemble de scale.
listenerTemplate:
spec:
containers:
- name: listener
volumeMounts:
- name: cert-volume
mountPath: /akv
readOnly: true
volumes:
- name: cert-volume
secret:
secretName: my-cert-secret
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.