Utiliser un miroir de registre pour installer Anthos clusters on bare metal

Cette page explique comment installer des clusters Anthos sur Bare Metal à l'aide d'un miroir de registre plutôt que d'utiliser gcr.io. Pour utiliser un miroir de registre, vous devez définir l'environnement d'exécution du conteneur sur containerd.

Les miroirs de registre sont conçus pour mettre en miroir l'intégralité de gcr.io et pas seulement gcr.io/anthos-baremetal-release/, où dess des images des clusters Anthos sur bare metal sont généralement stockées.

Par exemple, si vous essayez d'extraire une image gcr.io/kubernetes-e2e-test-images/nautilus:1.0, cela ne fonctionne que si votre service de registre utilise cette image dans le même chemin d'accès, par exemple 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0. Toutes les images autres que gcr.io fonctionnent toujours normalement. Par exemple, vous pouvez toujours extraire k8s.gcr.io/pause:3.1.

L'utilisation d'un miroir de registre permet de réduire le trafic et offre une alternative à l'utilisation de gcr.io au cas où vous auriez besoin d'isoler vos clusters des interruptions gcr.io. Cela vous permet également de procéder à votre propre analyse des failles.

Avant de commencer

  • Vous devez avoir configuré un serveur de registre de conteneurs sur votre réseau.
  • Si votre serveur de registre exécute un certificat TLS privé, vous devez disposer du fichier de l'autorité de certification.
  • Si votre serveur de registre requiert une authentification, vous devez disposer des identifiants de connexion appropriés ou du fichier de configuration Docker.

Télécharger toutes les images requises pour les clusters Anthos sur solution Bare Metal

Téléchargez la dernière version de l'outil bmctl et du package d'images depuis la page Télécharger.

Importer des images de conteneurs sur votre serveur de registre

Importez les images du package images sur votre serveur de registre en exécutant la commande suivante :

[HTTPS_PROXY=http://PROXY_IP:PORT] ./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=REGISTRY_IP:PORT \
    [--cacert=CERT_PATH] \
    [--need-credential=false]

Remplacez les éléments suivants :

  • PROXY_IP:PORT par l'adresse IP et le port du proxy si vous avez besoin d'un proxy pour importer les images de votre station de travail vers le serveur de registre.
  • REGISTRY_IP:PORT par l'adresse IP et le port du serveur de registre privé.
  • CERT_PATH par le chemin d'accès du fichier de certificat CA si votre serveur de registre utilise un certificat TLS privé.

Saisissez votre nom d'utilisateur et votre mot de passe lorsque vous y êtes invité, ou sélectionnez un fichier de configuration Docker. Si votre serveur de registre ne requiert pas d'identifiants, spécifiez --need-credential=false.

Pour en savoir plus sur la commande bmctl push images, exécutez la commande suivante :

bmctl push images --help

Utiliser votre propre espace de noms

Si vous souhaitez utiliser votre propre espace de noms sur votre serveur de registre au lieu de l'espace de noms racine, containerd peut extraire de ce sous-espace de noms si vous fournissez le point de terminaison de l'API pour votre registre privé dans registryMirrors.endpoint. Le point de terminaison est généralement au format <REGISTRY_IP:PORT>/v2/<NAMESPACE>. Pour en savoir plus, consultez le guide de l'utilisateur de votre registre privé.

Par exemple, si vous n'avez accès qu'à 172.18.0.20:5000/test-namespace/, vous pouvez exécuter la commande suivante pour importer toutes les images sous l'espace de noms test-namespace :

./bmctl push images \
    --source=./bmpackages_1.8.0.tar.xz \
    --private-registry=172.18.0.20:5000/test-namespace
    --username=<USERNAME>
    --password=<PASSWORD>
    --cacert <path/to/cert.crt>

Ensuite, dans le fichier YAML du cluster, vous pouvez saisir les éléments suivants pour que containerd extrait le sous-espace de noms :

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

Créer des clusters à partir du miroir de registre

Vous trouverez ci-dessous un exemple de fichier de configuration de cluster utilisant votre propre serveur de miroir de registre au lieu de gcr.io.

Si votre registre ne nécessite pas de certificat TLS privé, vous pouvez laisser le champ caCertPath vide.

Si votre serveur de registre ne nécessite pas de fichier de configuration Docker d'authentification, vous pouvez laisser le champ pullCredentialConfigPath vide.

Pour en savoir plus sur la création des clusters, consultez la page Créer des clusters.

# Sample cluster config with registry mirror:
---
gcrKeyPath: /bmctl/bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
  - endpoint: https://172.18.0.20:5000
    caCertPath: /root/ca.crt
    pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
  name: cluster-admin1
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: admin1
  namespace: cluster-admin1
spec:
  nodeConfig:
    containerRuntime: containerd
...

Tous les nœuds de ce cluster utiliseront ce miroir de registre 172.18.0.20:5000 au lieu de gcr.io.

Basculer vers gcr.io

Si votre cluster ne parvient pas à extraire des données du miroir de registre, il bascule automatiquement vers gcr.io. C'est pourquoi nous vous recommandons de fournir une valeur pour gcrKeyPath dans le fichier de configuration du cluster. Si aucune valeur n'est fournie, votre cluster ne peut pas extraire de gcr.io en cas d'échec du miroir de registre.

Si vous n'avez pas besoin de la fonctionnalité de basculement d'extraction, vous n'avez pas besoin d'ajouter gcrKeyPath ni gcr.io à votre liste d'autorisation de proxy.

Mettre à jour les points de terminaison de miroir de registre, les certificats et les identifiants d'extraction

Pour mettre à jour les points de terminaison, les certificats ou les identifiants d'extraction du miroir de registre, procédez comme suit :

  1. Dans le fichier de configuration du cluster, mettez à jour le point de terminaison, le fichier de certificat CA, extrayez le chemin du fichier de configuration des identifiants.

  2. Appliquez les modifications en exécutant la commande suivante :

    bmctl update cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    Remplacez les éléments suivants :

    • CLUSTER_NAME par le nom du cluster que vous souhaitez mettre à jour.
    • ADMIN_KUBECONFIG par le chemin d'accès au fichier de configuration de son cluster d'administrateur.