La haute disponibilité d’un Azure Container Registry

Hello,

Nous avons vu dans cet article comment rendre son cluster AKS hautement disponible. Cependant un composant externe à celui-ci peut devenir un SPOF si sa haute disponibilité n’est pas gérée. Je veux parler de votre Azure Container Registry.

thinkstockphotos 464267243 100611729 large - La haute disponibilité d'un Azure Container Registry

Après avoir présenté ici la possibilité de géo-réplication, il est maintenant possible de bénéficier des zones de disponibilité (AZ) pour votre Azure Container Registry afin d’assurer la résilience et la haute disponibilité de ce composant.

La combinaison de zones de disponibilité pour la redondance au sein d’une région et de la géo-réplication dans plusieurs régions améliore la fiabilité et les performances de notre registry !

L’utilisation des AZ est à demander lors de la création du container registry :

acrwithaz - La haute disponibilité d'un Azure Container Registry

Attention, pour l’instant, seules quelques régions offrent cette possibilité et il vous faudra créer un Azure Container Registry avec un SKU « Premium ».

A noter qu’une fois activée cette option ne peux être modifiée.

Il est également possible de configurer l’utilisation des AZ sur un replica de votre ACR. La marche à suivre est identique à celle détaillée ici , il faut juste sélectionner l’option Availability Zones en plus.

enable availability zones replication portal - La haute disponibilité d'un Azure Container Registry

Mise en oeuvre

Voici les commandes à utiliser pour activer cette fonctionnalité :

Création du ressource group :

az group create --name rg-acr --location francecentral

Provisionning de l’ACR en région France Centre avec AZ :

az acr create --resource-group rg-acr --name acrwithaz --location francecentral --zone-redundancy enabled --sku Premium

Création d’un réplica sur la région EastUS avec AZ :

az acr replication create --location eastus --resource-group rg-acr --registry acrwithaz --zone-redundancy enabled

A bientôt.

Thomas

Visual Studio & Container Registry

Aujourd’hui nous allons déployer une application dockerisée dans une container registry puis une WebApp directement depuis Visual Studio. Pour tester son application c’est rapide et efficace 🙂

Nous obtiendrons le même résultat que dans l’article précédent, mais bien plus rapidement !

Création du projet

Démarrons depuis un nouveau projet Visual Studio :

1 - Visual Studio & Container Registry
2 - Visual Studio & Container Registry

Je demande le support Docker Linux pour une Application Web ASP.Net Core. L’environnement local Docker doit être configuré en mode “Docker for Linux”.

3 - Visual Studio & Container Registry

Publication

Après avoir testé en local mon site web, je peux effectuer un clic droit sur mon projet puis Publier. Je choisis une publication sur une App Service Linux comme ci-dessous :

4 - Visual Studio & Container Registry

Je configure mon App Service en précisant ma Container Registry :

5 - Visual Studio & Container Registry

Une fois le déploiement terminé, une page s’ouvre sur mon application déployée :

6 1024x501 - Visual Studio & Container Registry

Sur le portail Azure, je retrouve ma registry et ma web app provisionnées et opérationnelles.

9 1024x546 - Visual Studio & Container Registry
7 1024x192 - Visual Studio & Container Registry
8 1 1024x205 - Visual Studio & Container Registry

Maintenant, petit focus sur la notion de réplication 🙂 Quelques explications sur la fonctionnalité :

Les entreprises qui souhaitent une présence locale ou une sauvegarde à chaud choisissent d’exécuter des services à partir de plusieurs régions Azure. La meilleure pratique recommandée consiste à placer un registre de conteneurs dans chaque région où les images sont exécutées afin de permettre des opérations à proximité du réseau pour des transferts de calque d’image rapides et fiables. La géoréplication permet à un registre de conteneurs Azure de fonctionner comme un registre unique desservant plusieurs régions à l’aide de registres régionaux à multiples maîtres.
Un registre géorépliqué offre les avantages suivants :
– Noms de registre/d’image/de balise uniques utilisables dans plusieurs régions
– Accès au registre à proximité du réseau à partir des déploiements régionaux
– Aucuns frais de sortie supplémentaires, les images étant extraites à partir d’un registre local répliqué dans la même région que l’hôte de votre conteneur
– Gestion unique d’un registre dans plusieurs régions.

Je dois d’abord upgrader ma registry en mode Premium pour avoir accès à cette fonctionnalité ! Pour plus de détails sur le pricing d’une container registry, voir ici !

10 - Visual Studio & Container Registry

Je peux alors ajouter une zone de réplication en sélectionnant l’emplacement voulu sur la carte :

11 1024x474 - Visual Studio & Container Registry

Je valide :

12 - Visual Studio & Container Registry

Déploiement en cours …

13 - Visual Studio & Container Registry

Réplication active en France 🙂 Ma registry est maintenant déployée dans deux régions différentes !

14 1024x460 - Visual Studio & Container Registry

Bonne conteneurisation, à bientôt !

Thomas

Azure Container Registry

Aujourd’hui nous allons :

Il s’agit de mon premier article sur la toute nouvelle version de Visual Studio : VS 2019 actuellement en version 16.1.1. Le code source de cette application, créé par le générateur de projet Visual Studio est ici : github.com !

Prérequis

Les prérequis pour ce tuto :

4 - Azure Container Registry
  • Avoir Docker For Windows sur son environnement Windows 10
  • Activer Shared Drives dans les options de Docker.
3 - Azure Container Registry

Etre en mode “Linux Containers” plutot que Windows Container.

5 - Azure Container Registry

Voici le DockerFile de mon application, créé par défaut :

2 - Azure Container Registry

En exécution locale, Visual Studio va me créer mon image Docker, instancier un conteneur basée sur cette image et le déployer. Je peux alors le tester en local, et le débugger :

1 1 1024x493 - Azure Container Registry

Création de la registry

Maintenant je veux créer une registry Docker pour héberger mes belles images !
Direction : Azure ! Cette registry nous permettra de gérer nos images Docker pour ensuite pouvoir les déployer facilement dans une Web App, une instance de conteneur, un cluster Kubernetes, Service Fabric …

Dans la console Azure Cloud Shell : >_ (A noter qu’il est tout à fait possible de réaliser ces opérations également en local après s’être identifié sur son tenant Azure via la commande az login)

Je créé un groupe de ressource rg_registry : az group create --name rg_registry --location eastus

6 1024x404 - Azure Container Registry

Je créé une registry dans mon groupe de ressource : az acr create --resource-group rg_registry --name containeregistrythomas --sku Basic --admin-enabled true

7 1024x312 - Azure Container Registry

Pour plus d’information sur le pricing de la registry (–sku) voir : pricing ACR

Je peux vérifier sur le portail le bon déroulement de l’opération :

Rendez vous sur la page “Clés d’accès”. Les informations d’authentification vont nous servir très vite !

8 1 1024x338 - Azure Container Registry
9 1 1024x318 - Azure Container Registry

Déploiement

De retour sur notre environnement Windows nous allons pousser notre image Docker dans notre Registry !

11 1 1024x106 - Azure Container Registry

Je me connecte à ma registry : docker login --username containeregistrythomas --password <passwd> containeregistrythomas.azurecr.io

Je demande la liste des images disponible sur mon environnement : docker images

Avant de pouvoir push mon image , il faut que je la tag pour ma registry : docker tag websitedockerlinux containeregistrythomas.azurecr.io/linuxwebsite:latest
Puis docker push containeregistrythomas.azurecr.io/linuxwebsite:latest

12 - Azure Container Registry
13 - Azure Container Registry

Il est temps de retourner sur le portail Azure…

Je créé une instance de conteneur à partir de mon image : az container create --resource-group rg_registry --name instancelinuxwebsite --image containeregistrythomas.azurecr.io/linuxwebsite:latest --dns-name-label containerLinux --ports 80

14 1024x115 - Azure Container Registry

En sortie si tout s’est bien passé j’obtiens :

15 1024x721 - Azure Container Registry

Il faut maintenant que je puisse y accéder. Je peux récupérer les infos à partir de cette commande :
az container show --resource-group rg_registry --name instancelinuxwebsite --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table

16 1024x69 - Azure Container Registry

Si je tente d’accéder à l’url récupérée grâce à la commande précédente : bingo, tout roule 🙂

17 1024x553 - Azure Container Registry

Dans le prochain article, nous verrons comment déployer dans une Azure Registry directement depuis Visual Studio 🙂

Bye !

Thomas