web-dev-qa-db-fra.com

Comment définir l'option DNS dans l'application Web Azure pour les conteneurs

C'est ce qui arrive pour exécuter le conteneur. Je me demande s’il est possible de lancer l’application Web pour les conteneurs avec un DNS personnalisé.

J'ai 5 microservices dans mon ILB-ASE Ils doivent pouvoir s'appeler en utilisant mon serveur DNS personnalisé dans le réseau virtuel. Quand je vérifie le resolv.conf, je vois 127.0.0.11. J'ai besoin que cela soit réglé sur mon propre serveur DNS personnalisé.

comment pouvons-nous injecter ma valeur DNS personnalisée ici?

Devrions-nous utiliser la variable appsettings si oui, quelles sont les valeurs de l'application Web pour les conteneurs?

Je peux donc utiliser l'option --dns

La partie mystère que Azure gère. Certaines valeurs proviennent des appsettings.

2018-08-23 14: 12: 56.100 INFO - exécution du menu fixe -d -p 13940: 5001 --nom xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 558 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.azurecr.io/xxx:558

===== DOCKER LOG ==========

2018_08_23_RD0003FF2D0408_default_docker.log:

Un séjour sans faille

2018-08-23T14: 12: 49.755843301Z [40 m [1 m [33 m] [39 m [22 m [49 m: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager [35]

2018-08-23T14: 12: 49.755897801Z Aucun crypteur XML configuré. Clé {xxx-xxx-xxx-xxx-xxx} peut être conservé au stockage sous forme non chiffrée.

2018-08-23T14: 12: 54.761216323Z [40 m [1 m [33 m] [39 m [22 m [49 m: Microsoft.AspNetCore.Server.Kestrel [0]

2018-08-23T14: 12: 54.761251623Z Adresse (s) dominante ' http: // +: 80 ' . Liaison aux points de terminaison définis dans UseKestrel ().

2018-08-23T14: 12: 54.908189021Z Environnement d'hébergement: Production

2018-08-23T14: 12: 54.908386123Z chemin d'accès du contenu:/app

2018-08-23T14: 12: 54.908961927Z En écoute sur: http://0.0.0.0:5001

2018-08-23T14: 12: 54.909256229Z L'application a commencé. Appuyez sur Ctrl + C pour fermer.

Un séjour sans faille

2018_08_23_RD0003FF2D0408_docker.log:

2018-08-23 14: 12: 44.125 INFO - Conteneur de recyclage à cause de AppFrameworkVersionChange et appFrameworkVersion = xxx.xxx.io/xxx:558

2018-08-23 14: 12: 45.900 INFO - Conteneur de départ pour le site

2018-08-23 14: 12: 45.900 INFO - exécution du menu fixe -d -p 30464: 5001 --nom xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 549 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.xxx.io/xxx:558

Un séjour sans faille

2018-08-23 14: 12: 55.972 INFO - Conteneur xxx pour le site xxx initialisé avec succès.

2018-08-23 14: 12: 55.976 INFO - Conteneur de recyclage à cause de AppSettingsChange et isMainSite = True

2018-08-23 14: 12: 56.099 INFO - Conteneur de départ pour le site

2018-08-23 14: 12: 56.100 INFO - exécution du menu fixe -d -p 13940: 5001 --nom xxx -e DOCKER_CUSTOM_IMAGE_NAME = xxx.azurecr.io/xxx: 558 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE = false -e WEBSITES_PORT = 5001 -e WEBSITE_SITE_NAME = xxx -e WEBSITE_AUTH_ENABLED = False -e WEBSITE_ROLE_INSTANCE_ID = 0 -e WEBSITE_INSTANCE_ID = xxx -e HTTP_LOGGING_ENABLED = 1 xxx.azurecr.io/xxx:558

2018-08-23 14: 13: 05.385 INFO - Conteneur xxx pour le site xxx initialisé avec succès.

Un séjour sans faille

12
Rıfat Erdem Sahin

nous avons répondu à votre question sur Github et Reddit. Re-poster notre réponse ici pour plus de visibilité.

"Actuellement, il existe une solution de contournement pour cela: vous devez modifier le resolv.conf par défaut en une adresse IP DNS personnalisée, puis ajouter votre resolv.conf personnalisé à la construction du menu fixe en ajoutant une commande COPY dans votre script de point d'entrée et en pointant un resolv.conf personnalisé à/etc.

Cependant, nous recherchons une meilleure solution pour cela, de sorte que la mise à jour manuelle de resolv.conf ne soit pas nécessaire, alors restez à l’écoute. "

3

Vous ne devriez pas utiliser DNS pour communiquer avec microservices, mais utilisez plutôt service registry .

Vérifiez ceci Microsoft paper en parlant de ceci:

Chaque microservice a un nom unique (URL) utilisé pour résoudre son problème emplacement. Votre microservice doit pouvoir être adressé où qu'il se trouve. fonctionnement. Si vous devez penser à quel ordinateur exécute un microservice, les choses peuvent mal tourner rapidement. De la même manière que DNS résout une URL vers un ordinateur particulier, votre microservice doit avoir un nom unique pour que son emplacement actuel soit découvrable. Les microservices ont besoin de noms adressables qui les rendent indépendant de l'infrastructure sur laquelle ils fonctionnent. Ce implique qu'il existe une interaction entre la qualité de votre service déployé et comment il est découvert, car il doit y avoir un service enregistrement. Dans le même ordre d'idées, lorsqu'un ordinateur tombe en panne, le registre service doit pouvoir indiquer où le service est en cours d'exécution.

Comme vous pouvez le constater, la meilleure solution dépendra de votre modèle de déploiement. Vérifiez cette note sur les conteneurs:

Dans certains environnements de déploiement de microservices (appelés clusters, qui doivent être traités dans une section ultérieure), la découverte de service est intégrée. Pour Par exemple, dans un environnement Azure Container Service, Kubernetes et Le DC/OS avec Marathon peut gérer l’enregistrement d’instance de service et désinscription. Ils exécutent également un proxy sur chaque hôte du cluster qui joue le rôle de routeur de découverte côté serveur. Un autre exemple est Azure Service Fabric, qui fournit également un registre de services via son service de nommage prêt à l'emploi.

J'espère que ça aide!

2
Fabio Manzano