Utiliser un Azure Container Registry avec AKS

Lorsque vous utilisez Azure Kubernetes Services, il y a de forte chance pour que vous ayez besoin d’un Azure Container Registry.

Vous avez alors besoin d’autoriser votre cluster AKS à pull une image hébergée dans un ACR pour éviter la fameuse “ImagePullBackOff” !

securite - Utiliser un Azure Container Registry avec AKS

Pour cela deux façons de faire  !

A la main

J’affecte ce droit moi même en suivant cette procédure.

# Création du groupe de ressource

az group create name rg-workshop location francecentral

# Création de la registry

az acr create --name my-acr --resource-group rg-workshop --sku basic

Je créé tout d’abord un service principal, si je n’en ai pas déjà créé un :

az ad sp create-for-rbac --skip-assignment --name sp-acr

Et pour leur utilisation ultérieure je les affecte manuellement à deux variables spid et sppwd :

$spid = "1234-5678-..."

$sppwd = "fdgfdfgdgs"

J’ai maintenant besoin d’identifier ma registry :

$registryId=$(az acr show --resource-group rg-workshop --name my-acr --query "id" --output tsv)

Je vais maintenant donner à mon service principal le droit d’utiliser mon registry (uniquement pour récupérer une image : acrpull) grâce à cette commande :

az role assignment create --assignee $spid --scope $registryId --role acrpull

J’obtiens alors un JSON descriptif de l’autorisation accordée.

Je créé maintenant mon Azure Kubernetes Service, en précisant l’id et le password de mon service principal :

az aks create --resource-group rg-workshop --name my-aks --location francecentral --node-count 2 --service-principal $spid --client-secret $sppwd --enable-addons monitoring --generate-ssh-keys --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --zones 1 2 3

Version managée

Je peux atteindre le même résultat avec la propriété attach-acr utilisée à la création du cluster :

# Création du groupe de ressource

az group create name rg-workshop location francecentral

# Création de la registry

az acr create --name my-acr --resource-group rg-workshop --sku basic

# Id de la registry

$registryId=$(az acr show --name my-acr --resource-group rg-workshop --query "id" --output tsv)

# Création du cluster AKS :

az aks create --name my-aks --resource-group rg-workshop --attach-acr $registryId --generate-ssh-keys --vm-set-type VirtualMachineScaleSets --load-balancer-sku standard --node-count 3 --zones 1 2 3

Sans cette opération, au déploiement d’un pod sur votre cluster vous obtiendrez une belle erreur “ImagePullBackOff” qui signifie en général que votre registry n’est pas correctement renseigné dans votre yaml de déploiement ou que votre cluster AKS n’arrive pas à l’utiliser 🙂

A bientôt !

Thomas

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.