2
votes

Le déploiement automatique sur Azure Kubernetes dans l'image Docker est mis à jour: possible?

J'ai créé une application en utilisant le service kubernates d'Azure. Dans mon yaml, j'ai spécifié «dernière» comme version d'image pour chaque image que j'utilise.

Y a-t-il une option à faire pour que, lorsque je mets à jour le registre d'images pour que les "dernières" modifications, kubernates le déploie automatiquement? Et tout est géré de manière à ne mettre à jour qu'un seul réplica, puis à évoluer pour que le service ne soit pas interrompu pendant le déploiement?


0 commentaires

3 Réponses :


0
votes

Kubernetes n'a pas connaissance des modifications apportées à votre registre, il ne surveille pas les nouvelles images de conteneurs. Vous devrez créer un processus qui se déclenche lorsqu'une nouvelle version est publiée et met à jour votre déploiement Kubernetes. Vous pouvez utiliser des outils CI / CD pour cela, ou des choses comme Azure Functions, Azure Automation, etc.

Pour un déploiement sans temps d'arrêt, vous voudrez consulter les mises à jour progressives.


0 commentaires

0
votes

vous devriez vraiment utiliser la gestion des versions pour cela ou quelque chose comme gitops qui déclencherait des mises à jour lorsqu'une nouvelle version du conteneur est disponible. utiliser Azure Functions \ Automation pour cela n'est tout simplement pas correct. Ce n'est pas fait pour ça, ce serait compliqué \ peu fiable.


0 commentaires

2
votes

Y a-t-il une option à faire pour que, lorsque je mets à jour le registre d'images pour que les "dernières" modifications, kubernates le déploie automatiquement?

Ce n'est pas le travail de Kubernetes de gérer cela. Il y a deux durs à travailler là-dessus:

  • Ajouter webhook sur le registre de docker, pour docker-hub, il est Docker Hub Webhooks . Lorsqu'une nouvelle image a été envoyée dans le registre, vous pouvez envoyer une requête POST quelque part en guise de notification.

  • Déployez un CI / CD pour recevoir cette notification et mettre à jour votre application. Ou créez simplement un serveur HTTP simple pour gérer la demande de notification et faites quelque chose comme kubectl ... .

Et tout est géré de manière à ne mettre à jour qu'une seule réplique, puis à évoluer pour que le service ne soit pas interrompu pendant le déploiement?

Kubernetes gère cela en mise à jour propagée . Pour Deployment ou StatefulSet , les pods de mise à jour automatique de kubernetes actuels par mise à jour progressive, il vous suffit de kubectl apply -f new-spec.yaml .


2 commentaires

Cela semble être un bon point de départ! Serait-il possible de toujours utiliser la balise "la plus récente"? Ou dois-je toujours incrémenter la version?


Bien sûr, définissez simplement imagePullPolicy = Always , et docker vérifiera dans le registre si la dernière image est la même que locale.