Partager via


Démarrage rapide : déployer l’extension Arc de registre connecté (préversion)

Dans ce démarrage rapide, vous découvrez comment déployer l’extension Arc de registre connecté en utilisant l’expérience utilisateur d’interface CLI avec les paramètres par défaut sécurisés pour veiller à une sécurité robuste et une intégrité opérationnelle.

Le registre connecté est un outil essentiel pour les clients en périphérie car il permet un accès et une gestion des charges de travail conteneurisées, que ce soit sur des sites locaux ou distants. L’intégration du service à Azure Arc veille à une expérience de gestion de cycle de vie fluide et unifiée pour les charges de travail conteneurisées basées sur Kubernetes. Le déploiement de l’extension Arc de registre connecté sur des clusters Kubernetes avec Arc simplifie l’accès et la gestion de ces charges de travail.

Prérequis

  • Configurez l’interface Azure CLI à connecter à Azure et Kubernetes.

  • Créez ou utilisez une instance Azure Container Registry (ACR) existante avec le démarrage rapide.

  • Configurez la communication et l’accès du pare-feu entre l’instance ACR et le registre connecté en activant les points de terminaison de données dédiés.

  • Créez ou utilisez un cluster Azure Kubernetes Service (AKS) existant avec le tutoriel.

  • Configurez la connexion entre le cluster Kubernetes et Azure Arc en suivant le démarrage rapide.

  • Utilisez la commande k8s-extension pour gérer les extensions Kubernetes.

    az extension add --name k8s-extension
    
  • Inscrivez les fournisseurs de ressources Azure suivants dans votre abonnement et utilisez Kubernetes avec Azure Arc :

    az provider register --namespace Microsoft.Kubernetes
    az provider register --namespace Microsoft.KubernetesConfiguration
    az provider register --namespace Microsoft.ExtendedLocation
    

    Un fournisseur de ressources Azure est un ensemble d’opérations REST qui activent les fonctionnalités d’un service Azure spécifique.

  • Référentiel dans le registre ACR à synchroniser avec le registre connecté.

    az acr import --name myacrregistry --source mcr.microsoft.com/mcr/hello-world:latest --image hello-world:latest
    

    Le référentiel hello-world est créé dans le registre ACR myacrregistry à synchroniser avec le registre connecté.

Déployer l’extension Arc de registre connecté avec les paramètres par défaut sécurisés

Une fois que les prérequis, conditions et composants nécessaires sont en place, suivez l’approche simplifiée pour déployer en toute sécurité une extension de registre connecté sur un cluster Kubernetes avec Arc en utilisant les paramètres suivants. Ces paramètres définissent la configuration suivante avec HTTPS, Lecture seule, Distribution d’approbation et un service Cert Manager. Suivez les étapes pour bénéficier d’un déploiement correct :

  1. Créez le registre connecté.
  2. Déployez l’extension Arc de registre connecté.
  3. Vérifiez le déploiement de l’extension de registre connecté.
  4. Déployez un pod qui utilise une image du registre connecté.

Créer le registre connecté et synchroniser avec ACR

La création du registre connecté à synchroniser avec ACR est l’étape de base pour déployer l’extension Arc de registre connecté.

  1. Créez le registre connecté qui se synchronise avec le registre ACR :

    Pour créer un registre connecté myconnectedregistry qui se synchronise avec le registre ACR myacrregistry dans le groupe de ressources myresourcegroup et le référentiel hello-world, vous pouvez exécuter la commande az acr connected-registry create :

    az acr connected-registry create --registry myacrregistry \ 
    --name myconnectedregistry \
    --resource-group myresourcegroup \ 
    --repository "hello-world"
    
  • La commande az acr connected-registry create crée le registre connecté avec le référentiel spécifié.
  • La commande az acr connected-registry create remplace les actions si le routage d’étendue de synchronisation nommé myscopemap existe et remplace les propriétés si le jeton de synchronisation nommé mysynctoken existe.
  • La commande az acr connected-registry create valide un point de terminaison de données dédié pendant la création du registre connecté et fournit une commande pour activer le point de terminaison de données dédié sur le registre ACR.

Déployer l’extension Arc du registre connecté sur le cluster Kubernetes avec Arc

Le déploiement de l’extension Arc de registre connecté vous permet de synchroniser des images conteneur et d’autres artefacts Open Container Initiative (OCI) avec votre registre ACR. Le déploiement permet d’accélérer l’accès aux artefacts de registre et de créer des scénarios avancés. Le déploiement de l’extension veille à sécuriser la distribution d’approbation entre le registre connecté et tous les nœuds clients au sein du cluster et installe le service du gestionnaire de certificats pour le chiffrement TLS (Transport Layer Security).

  1. Générer la chaîne de connexion et le fichier JSON de paramètres protégés

    Pour obtenir un déploiement sécurisé de l’extension de registre connecté, générez la chaîne de connexion, notamment un nouveau mot de passe, un protocole de transport, et créez le fichier protected-settings-extension.json requis pour le déploiement de l’extension avec la commande az acr connected-registry get-settings :

    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    cat << EOF > protected-settings-extension.json
    {
      "connectionString": "$(az acr connected-registry get-settings \
      --name myconnectedregistry \
      --registry myacrregistry \
      --parent-protocol https \
      --generate-password 1 \
      --query ACR_REGISTRY_CONNECTION_STRING --output tsv --yes)"
    }
    EOF
    echo "{\"connectionString\":\"$(az acr connected-registry get-settings \
    --name myconnectedregistry \
    --registry myacrregistry \
    --parent-protocol https \
    --generate-password 1 \
    --query ACR_REGISTRY_CONNECTION_STRING \
    --output tsv \
    --yes | tr -d '\r')\" }" > settings.json

Remarque

Les commandes cat et echo créent le fichier protected-settings-extension.json avec les détails de la chaîne de connexion, ce qui injecte le contenu de la chaîne de connexion dans le fichier protected-settings-extension.json, une étape nécessaire pour le déploiement de l’extension. La commande az acr connected-registry get-settings génère la chaîne de connexion, notamment la création d’un mot de passe et la spécification du protocole de transport.

  1. Déployer l’extension de registre connecté

    Déployez l’extension de registre connecté avec les détails spécifiés de configuration en utilisant la commande az k8s-extension create :

  az k8s-extension create --cluster-name myarck8scluster \ 
  --cluster-type connectedClusters \
  --extension-type Microsoft.ContainerRegistry.ConnectedRegistry \
  --name myconnectedregistry \
  --resource-group myresourcegroup \ 
  --config service.clusterIP=192.100.100.1 \ 
  --config-protected-file protected-settings-extension.json  
  • La commande az k8s-extension create déploie l’extension de registre connecté sur le cluster Kubernetes avec le fichier de paramètres protégés et les paramètres de configuration fournis.
  • Elle veille à sécuriser la distribution d’approbation entre le registre connecté et tous les nœuds clients au sein du cluster et installe le service du gestionnaire de certificats pour le chiffrement TLS (Transport Layer Security).
  • Le clusterIP doit être dans la plage d’adresses IP de sous-réseau du cluster AKS. Le paramètre service.clusterIP spécifie l’adresse IP du service de registre connecté au sein du cluster. Il est essentiel de définir l’adresse service.clusterIP dans la plage d’adresses IP de service valides pour le cluster Kubernetes. Vérifiez que l’adresse IP spécifiée pour service.clusterIP est comprise dans la plage d’adresses IP de service désignée pendant la configuration initiale du cluster, se trouvant habituellement dans les paramètres de mise en réseau du cluster. Si l’adresse service.clusterIP ne se trouve pas dans cette plage, elle doit être mise à jour vers une adresse IP se trouvant dans la plage valide et n’étant pas actuellement utilisée par un autre service.

Vérifier le déploiement de l’extension du registre connecté

Pour vérifier le déploiement de l’extension du registre connecté sur un cluster Kubernetes avec Arc, suivez ces étapes :

  1. Vérifier l’état du déploiement

    Exécutez la commande az k8s-extension show pour vérifier l’état du déploiement de l’extension du registre connecté :

  az k8s-extension show --name myconnectedregistry \ 
  --cluster-name myarck8scluster \
  --resource-group myresourcegroup \
  --cluster-type connectedClusters

Exemple de sortie

    {
    "aksAssignedIdentity": null,
    "autoUpgradeMinorVersion": true,
    "configurationProtectedSettings": {
      "connectionString": ""
    },
    "configurationSettings": {
      "pvc.storageClassName": "standard",
      "pvc.storageRequest": "250Gi",
      "service.clusterIP": "[your service cluster ip]"
    },
    "currentVersion": "0.11.0",
    "customLocationSettings": null,
    "errorInfo": null,
    "extensionType": "microsoft.containerregistry.connectedregistry",
    "id": "/subscriptions/[your subscription id]/resourceGroups/[your resource group name]/providers/Microsoft.Kubernetes/connectedClusters/[your arc cluster name]/providers/Microsoft.KubernetesConfiguration/extensions/[your extension name]",
    "identity": {
      "principalId": "[identity principal id]",
      "tenantId": null,
      "type": "SystemAssigned"
    },
    "isSystemExtension": false,
    "name": "[your extension name]",
    "packageUri": null,
    "plan": null,
    "provisioningState": "Succeeded",
    "releaseTrain": "preview",
    "resourceGroup": "[your resource group]",
    "scope": {
      "cluster": {
        "releaseNamespace": "connected-registry"
      },
      "namespace": null
    },
    "statuses": [],
    "systemData": {
      "createdAt": "2024-07-12T18:17:51.364427+00:00",
      "createdBy": null,
      "createdByType": null,
      "lastModifiedAt": "2024-07-12T18:22:42.156799+00:00",
      "lastModifiedBy": null,
      "lastModifiedByType": null
    },
    "type": "Microsoft.KubernetesConfiguration/extensions",
    "version": null
  }
  1. Vérifier l’état et l’état du registre connecté

    Pour chaque registre connecté, vous pouvez afficher l’état et l’état du registre connecté en utilisant la commande az acr connected-registry list :

        az acr connected-registry list --registry myacrregistry \
        --output table
    

Exemple de sortie

    | NAME | MODE | CONNECTION STATE | PARENT | LOGIN SERVER | LAST SYNC(UTC) |
    |------|------|------------------|--------|--------------|----------------|
    | myconnectedregistry | ReadWrite | online | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
    | myreadonlyacr | ReadOnly | offline | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 |
  1. Vérifier les détails du registre connecté spécifiques

    Pour découvrir des informations sur un registre connecté spécifique, utilisez la commande az acr connected-registry show :

  az acr connected-registry show --registry myacrregistry \
  --name myreadonlyacr \ 
  --output table

Exemple de sortie

   | NAME                | MODE      | CONNECTION STATE | PARENT        | LOGIN SERVER             | LAST SYNC(UTC)      | SYNC SCHEDULE | SYNC WINDOW       |
   | ------------------- | --------- | ---------------- | ------------- | ------------------------ | ------------------- | ------------- | ----------------- |
   | myconnectedregistry | ReadWrite | online           | myacrregistry | myacrregistry.azurecr.io | 2024-05-09 12:00:00 | 0 0 * * *     | 00:00:00-23:59:59 |
  • La commande az k8s-extension show vérifie l’état du déploiement de l’extension.
  • La commande fournit également des détails sur l’état de connexion du registre connecté, la dernière synchronisation, la fenêtre de synchronisation, la planification de synchronisation et bien plus encore.

Déployer un pod qui utilise une image de registre connecté

Si vous souhaitez déployer un pod qui utilise une image de registre connecté dans le cluster, vous devez effectuer l’opération à partir du nœud de cluster lui-même. Effectuez les étapes suivantes :

  1. Créez un secret dans le cluster pour l’authentification avec le registre connecté :

Exécutez la commande kubectl create secret docker-registry pour créer un secret dans le cluster pour l’authentification avec le registre connecté :

kubectl create secret docker-registry regcred --docker-server=192.100.100.1 --docker-username=mytoken --docker-password=mypassword
  1. Déployez le pod qui utilise l’image souhaitée du registre connecté en utilisant la valeur de l’adresse service.clusterIP 192.100.100.1 du registre connecté et le nom d’image hello-world avec une balise latest :

    kubectl apply -f - <<EOF
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-world-deployment
      labels:
        app: hello-world
    spec:
      selector:
        matchLabels:
          app: hello-world
      replicas: 1
      template:
        metadata:
          labels:
            app: hello-world
        spec:
          imagePullSecrets:
            - name: regcred
          containers:
            - name: hello-world
              image: 192.100.100.1/hello-world:latest
    EOF
    

Nettoyer les ressources

La suppression de l’extension de registre connecté déployée vous permet de supprimer les pods du registre connecté correspondant et les paramètres de configuration.

  1. Supprimer l’extension de registre connecté

    Exécutez la commande az k8s-extension delete pour supprimer l’extension de registre connecté :

    az k8s-extension delete --name myconnectedregistry 
    --cluster-name myarcakscluster \ 
    --resource-group myresourcegroup \ 
    --cluster-type connectedClusters
    

La suppression du registre connecté déployé vous permet de supprimer l’instance cloud de registre connecté et les détails de sa configuration.

  1. Supprimer le registre connecté

    Exécutez la commande az acr connected-registry delete pour supprimer le registre connecté :

    az acr connected-registry delete --registry myacrregistry \
    --name myconnectedregistry \
    --resource-group myresourcegroup 
    

Étapes suivantes