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” !
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