Remarque : la mise en cache du référentiel est actuellement en version bêta et soumise à modification.
À propos de la configuration de la mise en cache du référentiel
Vous pouvez configurer la mise en cache du dépôt en créant un type spécial de réplica appelé cache de dépôt. Ensuite, vous pouvez définir des stratégies d’emplacement de données qui régissent les réseaux de référentiel qui sont répliqués dans le cache du référentiel.
La mise en cache du référentiel n’est pas prise en charge avec le clustering.
DNS pour les caches de référentiel
L’instance principale et le cache de référentiel doivent avoir des noms DNS différents. Par exemple, si votre instance principale est à l’adresse github.example.com
, vous pouvez décider de nommer un cache europe-ci.github.example.com
ou github.asia.example.com
.
Pour que vos machines CI récupèrent à partir du cache du référentiel au lieu de l’instance principale, vous pouvez utiliser le paramètre de configuration url.<base>.insteadOf
de Git. Pour plus d’informations, consultez git-config
dans la documentation Git.
Par exemple, le .gitconfig
global pour la machine CI inclurait ces lignes.
[url "https://europe-ci.github.example.com/"]
insteadOf = https://github.example.com/
Ensuite, quand on lui dit d’extraire https://github.example.com/myorg/myrepo
, Git récupère depuis https://europe-ci.github.example.com/myorg/myrepo
à la place.
Configuration d’un cache de référentiel
-
Configurez une nouvelle instance GitHub Enterprise Server sur la plateforme de votre choix. Cette instance sera votre cache de référentiel. Pour plus d’informations, consultez « Configuration d’une instance GitHub Enterprise Server ».
-
Définissez un mot de passe administrateur qui correspond au mot de passe de l’appliance principale et continuez.
-
Cliquez sur Configurer comme réplica.
-
Sous « Ajouter une nouvelle clé SSH », tapez votre clé SSH.
-
Cliquez sur Ajouter une clé.
-
Connectez-vous à l’adresse IP du cache du référentiel à l’aide de SSH.
$ ssh -p 122 admin@REPLICA-IP
-
Pour générer une paire de clés pour la réplication, utilisez la commande
ghe-repl-setup
avec l’adresse IP de l’appliance primaire et copiez la clé publique qu’elle renvoie.
1. Pour ajouter la clé publique à la liste des clés autorisées sur l’appliance principale, recherchez `https://PRIMARY-HOSTNAME/setup/settings` et ajoutez à la liste la clé que vous avez copiée à partir du réplica.$ ghe-repl-setup PRIMARY_IP
-
Pour vérifier la connexion à l’appliance principale et activer le mode réplica pour le cache du référentiel, réexécutez
ghe-repl-setup
.- Si le cache du référentiel est votre seul nœud supplémentaire, aucun argument n'est nécessaire.
$ ghe-repl-setup PRIMARY-IP
- Si vous configurez un cache de référentiel en plus d'un ou plusieurs réplicas existants, utilisez l'argument
-a
ou--add
.$ ghe-repl-setup -a PRIMARY-IP
- Si le cache du référentiel est votre seul nœud supplémentaire, aucun argument n'est nécessaire.
-
Si vous ne l'avez pas encore fait, définissez le nom du centre de données sur l'appliance principale et sur tous les réplicas, en remplaçant DC-NAME par un nom de centre de données.
$ ghe-repl-node --datacenter DC-NAME
-
Définissez un
cache-location
pour le cache du référentiel, en remplaçant CACHE-LOCATION par un identificateur alphanumérique, comme la région où le cache est déployé. Définissez également un nom de centre de données pour ce cache ; de nouveaux caches tenteront d’effectuer un seed à partir d’un autre cache dans le même centre de données.$ ghe-repl-node --cache CACHE-LOCATION --datacenter REPLICA-DC-NAME
-
Pour démarrer la réplication des magasins de données, utilisez la commande
ghe-repl-start
.$ ghe-repl-start
Avertissement :
ghe-repl-start
provoque une brève interruption sur le serveur principal, pendant laquelle les utilisateurs peuvent voir des erreurs de serveur interne. Pour fournir un message plus convivial, exécutezghe-maintenance -s
sur le nœud principal avant d’exécuterghe-repl-start
sur le nœud de réplica pour mettre l’appliance en mode maintenance. Une fois la réplication démarrée, désactivez le mode maintenance avecghe-maintenance -u
. La réplication Git ne progresse pas tant que le nœud principal est en mode maintenance.$ ghe-repl-status
-
Pour activer la réplication des réseaux de référentiel dans le cache du référentiel, définissez une stratégie d’emplacement des données. Pour plus d’informations, consultez « Stratégies d’emplacement des données ».
Stratégies d’emplacement des données
Vous pouvez contrôler la localité des données en configurant des stratégies d’emplacement des données pour vos référentiels avec la commande spokesctl cache-policy
. Les stratégies d’emplacement des données déterminent quels réseaux de référentiel sont répliqués sur quels caches de référentiel. Par défaut, aucun réseau de référentiels ne sera répliqué sur tous les caches de référentiel jusqu’à ce qu’une stratégie d’emplacement des données soit configurée.
Les stratégies d’emplacement des données affectent uniquement le contenu Git. Le contenu de la base de données, comme les problèmes et les commentaires de demande de tirage, sera répliqué sur tous les nœuds, quelle que soit la stratégie.
Remarque : Les stratégies d’emplacement des données ne sont pas identiques au contrôle d’accès. Vous devez utiliser des rôles de référentiel pour contrôler quels utilisateurs peuvent accéder à un référentiel. Pour plus d’informations sur les rôles de dépôt, consultez « Rôles de dépôt pour une organisation ».
Vous pouvez configurer une stratégie pour répliquer tous les réseaux avec l’indicateur --default
. Par exemple, cette commande crée une stratégie pour répliquer une copie unique de chaque réseau de référentiels dans l’ensemble de caches de référentiel dont le cache_location
est « kansas ».
$ ghe-spokesctl cache-policy set --default 1 kansas
Pour configurer la réplication pour un réseau de référentiels, spécifiez le référentiel qui est la racine du réseau. Un réseau de référentiels inclut un référentiel et toutes les duplications du référentiel. Vous ne pouvez pas répliquer une partie d’un réseau sans répliquer l’ensemble du réseau.
$ ghe-spokesctl cache-policy set <owner/repository> 1 kansas
Vous pouvez remplacer une stratégie qui réplique tous les réseaux et exclut des réseaux spécifiques en spécifiant un nombre de réplicas égal à zéro pour le réseau. Par exemple, cette commande spécifie que tout cache de référentiel à l’emplacement « kansas » ne peut contenir aucune copie de ce réseau.
$ ghe-spokesctl cache-policy set <owner/repository> 0 kansas
Les nombres de réplicas supérieurs à 1 dans un emplacement de cache donné ne sont pas pris en charge.