Aller au contenu

Chapitre 1 : Azure Container Registry et Azure Container Instance dans votre Vnet

L'architecture

Parlons un peu de l'architecture que nous avions envisagé de réaliser. L'objectif est d'instancier des conteneurs via des Azure Container Instance à partir d'image déployé dans un Azure Container Registry. Tout cela doit être sécurisé au niveau reseau dans un Virtual Network.

D'un coté le service Azure Container Registry permet d'utiliser les Private Endpoint pour restreindre l'accès de son service de registre de conteneur à un réseau privé. De l'autre, les Azure Container Instance peuvent être déployés dans un réseau privé virtuel. Donc, sur le papier le schéma d'architecture ci-dessous fonctionne... Ce n'est pas le cas.

archi 1

L'exception

Après quelques tests infructueux, nous avons fait une petite recherche et découvert rapidement que l'utilisation d'un Private Endpoint pour un Azure Container Registry comportait quelques exceptions et notamment celle-ci :

Extrait docs.microsoft.com

Les instances de services Azure, notamment Azure DevOps Services, Web Apps et Azure Container Instances, ne peuvent pas non plus accéder à un registre de conteneurs dont l’accès réseau est restreint.

Contournement

Les 2 services Microsoft ne pouvant être utilisés conjointement dans un réseau privé, 3 solutions s'offrent à nous :

  1. Ne plus restreindre l'accès réseau de notre Azure Container Registry.

archi 2

  1. Remplacer notre Azure Container Registry par une solution Container Registry Self Hosted

archi 3

  1. Remplacer nos Azure Container Instance par un cluster Azure Kubernetes Services par exemple.

archi 3

Et il ne faut pas compter sur l'utilisation d'un Service Endpoint (en preview) puisque celui-ci ne permet pas non plus de récupérer l'image depuis un Azure Container Instance.

Extrait de docs.microsoft.com

Les instances de services Azure, notamment Azure DevOps Services, Web Apps et Azure Container Instances, ne peuvent pas non plus accéder à un registre de conteneurs dont l’accès réseau est restreint.

Conclusion

Il n'y a pour le moment pas de contournement idéal. Cependant, bien que la documentation Microsoft indique le contraire, il semblerait qu'il soit possible de tirer (pull) une image Linux via une Azure Web App depuis un Azure Container Registry en ajoutant dans les appsettings :

WEBSITE_PULL_IMAGE_OVER_VNET=true

C'est un début.

Dans la série

Références

Remerciements

Rédigé par Philippe MORISSEAU, Publié le 06 Septembre 2021