Partager via


Déployer à partir d’un registre de conteneurs privé sur Kubernetes local à l’aide d’Azure Container Registry

S’applique à : AKS sur Windows Server

Cet article explique comment déployer des images conteneur à partir d’un registre de conteneurs privé à l’aide d’Azure Container Registry, que vous pouvez exécuter dans votre propre centre de données dans AKS sur les déploiements Windows Server. Vous déployez sur votre cluster Kubernetes local hébergé par AKS. Azure Container Registry vous permet de créer, de stocker et de gérer des images et artefacts de conteneurs dans un registre privé pour tous les types de déploiements de conteneurs.

L’article explique comment créer un registre de conteneurs privé dans Azure et envoyer (push) votre image conteneur au registre de conteneurs privé. Vous pouvez ensuite déployer à partir du registre privé sur votre cluster Kubernetes local hébergé dans AKS sur Windows Server.

Pour plus d’informations sur Container Registry dans Azure, consultez la documentation Azure Container Registry.

Prérequis

Vérifiez que vous disposez des prérequis suivants :

  • Une connaissance de base des concepts Kubernetes.
  • Un cluster AKS qui fonctionne.
  • Azure CLI installé
  • Votre environnement local kubectl est configuré pour pointer vers votre cluster AKS. Vous pouvez utiliser la commande PowerShell Get-AksHciCredential pour configurer votre cluster pour un accès avec kubectl.

Créer un registre de conteneurs privé dans Azure

Pour créer un registre de conteneurs, commencez par un groupe de ressources. Un groupe de ressources Azure est un conteneur logique dans lequel les ressources Azure sont déployées et gérées. Créez un groupe de ressources avec la commande PowerShell az-group-create . L’exemple suivant crée un groupe de ressources dans la région eastus :

az group create --name <RESOURCE_GROUP_NAME> --location eastus

Créez une instance Container Registry avec la commande az acr create et fournissez votre propre nom de registre. Le nom du registre doit être unique dans Azure et contenir entre 5 et 50 caractères alphanumériques. Dans le reste de cet article, <acrName> est utilisé comme espace réservé pour le nom du registre de conteneurs, mais vous pouvez fournir votre propre nom de registre unique. La référence SKU de base est un point d’entrée optimisé pour le développement qui fournit un équilibre entre le stockage et le débit :

az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic

Après avoir créé votre registre de conteneurs, utilisez la commande suivante pour créer un principal de service. Vous pouvez donc accéder à votre registre de conteneurs à partir de Kubernetes :

az ad sp create-for-rbac
  --scopes /subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RG_NAME>/providers/Microsoft.ContainerRegistry/registries/<REGISTRY_NAME>
  --role Contributor
  --name <SERVICE_PRINCIPAL_NAME>

Container Registry prend en charge trois rôles d’accès. Le rôle Contributeur est utilisé le plus souvent par les développeurs d’applications. Toutefois, dans les scénarios réels, vous devrez peut-être créer plusieurs principaux de service en fonction du type d’accès nécessaire :

  • Contributeur : ce rôle offre un accès push et pull sur le dépôt.
  • Lecteur : ce rôle autorise uniquement un accès de lecture au référentiel.
  • Propriétaire : ce rôle vous permet d’attribuer des rôles à d’autres utilisateurs, en plus de l’accès de type envoi (push) et tirage (pull) au référentiel.

La commande précédente doit produire une sortie similaire au texte suivant :

{
 "appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 "displayName": "akshci-service-principal",
 "name": "http://akshci-service-principal",
 "password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
 "tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

Une fois que le principal de service est créé avec succès, copiez les appId et password dans un emplacement sûr pour les utiliser ultérieurement dans votre déploiement.

Pour plus d’informations sur l’utilisation des principaux de services et de Azure Container Registry, consultez l’authentification d’Azure Container Registry avec les principaux de services.

Se connecter au registre de conteneurs privé

Pour utiliser l’instance Container Registry, vous devez d’abord vous connecter. Pour vous connecter, vous pouvez utiliser Azure CLI ou Docker CLI.

Option 1 : Se connecter à partir d’Azure CLI

Utilisez la commande az acr sign in et fournissez le nom unique affecté au registre de conteneurs à l’étape précédente :

az acr login --name <REGISTRY_NAME>

Option 2 : Se connecter à partir de l’interface CLI Docker

Pour utiliser l’interface de ligne de commande Docker pour accéder à votre registre de conteneurs, tapez la commande suivante dans un terminal Bash ou PowerShell :

docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>

Avec l’une ou l’autre option, la commande doit renvoyer un message « Connexion réussie » une fois terminé.

Envoyer une image au registre de conteneurs

Une fois que vous êtes connecté, vous pouvez commencer à envoyer (push) l’image au registre de conteneurs. Tout d’abord, exécutez la docker images commande pour afficher la liste des images sur votre ordinateur local :

REPOSITORY                               TAG                                      IMAGE ID       CREATED         SIZE
mcr.microsoft.com/azure-functions/dotnet 3.0                                      9f8ad1bdee67   5 months ago    540MB
poemfinder-app                           latest                                   2d9bef425603   6 months ago    208MB

Pour commencer, étiquetez l’image à l’aide de la docker tag commande, puis utilisez-la docker push pour l’envoyer (push) au registre de conteneurs :

docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Vérifiez que l’image a été correctement étiquetée en exécutant à nouveau la docker images commande. Après avoir confirmé, exécutez docker push pour transférer au registre de conteneur, comme montré ci-dessous.

docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0

Pour confirmer que l’image a été poussée au registre de conteneurs, exécutez la commande suivante :

az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table

Déployer une image à partir du registre de conteneurs sur AKS

Pour déployer votre image conteneur à partir du registre de conteneurs sur votre cluster Kubernetes, créez des secrets Kubernetes pour stocker vos informations d’identification de registre. Kubernetes utilise un secret d’extraction d’image pour stocker les informations nécessaires pour s’authentifier auprès de votre registre. Pour créer la clé d'accès pour un registre de conteneurs, vous fournissez l’ID du principal de service, le mot de passe et l’URL du registre :

kubectl create secret docker-registry <secret-name> \
    --namespace <namespace> \
    --docker-server=<REGISTRY_NAME>.azurecr.io \
    --docker-username=<appId> \
    --docker-password=<password>

où :

Valeur Description
secret-name Nom du secret d’extraction d’image (par exemple, acr-secret).
namespace Espace de noms Kubernetes où placer le secret. Nécessaire uniquement si vous souhaitez placer le secret dans un espace de noms autre que l’espace de noms par défaut.
<REGISTRY_NAME> Nom de votre registre de conteneurs ; par exemple, myregistry. --docker-server est le nom complet du serveur de connexion au registre.
appId ID du principal de service utilisé par Kubernetes pour accéder à votre registre.
password Mot de passe du service principal.

Une fois que vous avez créé le secret d’extraction d’image, vous pouvez l’utiliser pour créer des pods et des déploiements Kubernetes. Indiquez le nom du secret sous imagePullSecrets le fichier de déploiement, comme illustré dans l’exemple suivant :

apiVersion: v1
kind: Pod
metadata:
  name: poemfinder-app
  namespace: mydemoapps
spec:
  containers:
    - name: poemfinder-app
      image: <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
      imagePullPolicy: IfNotPresent
  imagePullSecrets:
    - name: acr-secret

Dans cet exemple, poemfinder-app:v1.0 il s’agit du nom de l’image à extraire du registre de conteneurs et acr-secret est le nom du secret collecteur que vous avez créé pour accéder au registre. Lorsque vous déployez le pod, Kubernetes extrait automatiquement l’image de votre registre si l’image n’est pas déjà présente sur le cluster.

Vous pouvez enregistrer la configuration de pod ci-dessus dans un fichier tel que pod-example.yaml , puis le déployer sur Kubernetes, comme suit :

kubectl create -f pod-example.yaml

Pour vérifier que le pod a été créé avec succès à l’aide de l’image conteneur à partir du registre de conteneurs, exécutez kubectl describe pod <POD_NAME>, qui doit afficher l’image conteneur utilisée pour créer le pod.

Étapes suivantes

Dans cet article, vous avez appris à déployer une image conteneur à partir d’Azure Container Registry sur AKS Arc. Ensuite, vous pouvez :