Azure Kubernetes Service : accélérez la conception, le déploiement et le pilotage d'applications conteneurisées

# Kubernetes# AKS# Azure
écrit par Amrou Ouni publié le mercredi 21 novembre 2018
Kubernetes est un orchestrateur de container; il permet de déployer, gérer et monitorer un environnement cloud complexe. Cette session traite le sujet d'Azure Kubernetes Service (AKS) qui est un outil Kubernetes open source. Il permet de déployer Kubernetes comme un outil Azure et de tirer pleinement parti des services et des outils de l’écosystème Kubernetes dans un environnement Azure.

Les points forts d'AKS

AKS est une ressource dédiée simple à déployer à bas prix : plus besoin de déployer des VM master, ce qui permet de se concentrer l'effort et le coût uniquement sur les nœuds qui font le travail effectif. 

AKS est extrêmement scalable (extensible) et permet donc une migration élastique à partir du cluster AKS lors des pics de trafic. Il y a plusieurs types de "scaling" automatique possible, en augmentant le nombre de pods* dans un même nœud (node) ou carrément le nombre de nœuds (+ long à provisionner). En gros, lorsque le nombre max de pods est atteint dans un node, on peut scaler les nodes.

(*) Les pods sont les plus petites unités de calcul déployables qui peuvent être créées et gérées dans Kubernetes. Autres points forts d'AKS :
  • Maintenance des clusters plus simple avec des mises à niveau et des mises à l’échelle automatiques.
  • Le contrôlez l’accès au cluster Kubernetes avec les groupes d’utilisateurs et les comptes Azure Active Directory.
Les intervenants ont utilisé l'application SmartHotel360 comme support pour la démo. Le code source se trouve sur Github et voici l'architecture globale de cluster :

Les outils

Voici quelques outils qui nous ont été présentés durant cette démo:
  • Terraform est un outil de déploiement cloud similaire aux ARM d’Azure mais ils sont supportés par plusieurs clouds providers (multi-cloud). Plus d'informations ici : https://samcogan.com/terraform-and-azure-whats-the-benefit/
  • Acs-engine permet de déployer le master et les nodes sans installer Kubernetes
  • Prometheus et Graphana (interfaces web) permettent d’avoir un super dashboard sur l’état des clusters Kubernetes à afficher en plein milieu de l’open space
  • Azure Dev Space et Ingress facilitent le déboggage de micro-services en redirigeant le trafic entrant vers une instance temporaire de "debug", tandis que le trafic sortant repart sur les service de l’environnement original (voir ci dessous)
  • Azure CLI L’interface CLI est un outil conçu pour utiliser rapidement et efficacement les services Azure, en mettant l’accent sur l’automatisation. Il est permet de créer un cluster Kubernetes avec la commande create :
$ az aks create
ou d'afficher le tableau de bord de Kubernetes dans un navigateur avec la commande browse (attention cette commande nécessite quelque étapes de configuration avant la première utilisation)
az aks browse --name --resource-group [--disable-browser] [--listen-port]
  • HELM package application Dans Kubernetes la configuration d'applications se fait via des fichiers yaml. Ainsi, pour une seule application en ligne, cela reste assez simple mais dès qu’on a plusieurs environnements, applications et services, on se retrouve très vite submergé de fichiers plus ou moins semblables. HELM simplifie énormément la tâche de déploiement d'applications dans Kubernetes en utilisant un système de templating et de dépendances afin d’éviter la duplication et avoir ainsi une arborescence cohérente pour nos fichiers de configurations.
  • RBAC  Le Contrôle d’accès basé sur les rôles (RBAC) est un concept de sécurité du réseau selon lequel les droits sont accordés aux utilisateurs en fonction de leur rôle. RBAC Kubernetes gère l’intégration d'Azure Active Directory et tire profit des fonctionnalité de ce dernier.
  • AD pod identity Est un projet open source sur Git et qui permet d'assigner une identité à un POD. 
  • Application insight Gère la télémétrie au sein du cluster.
  • Azure Log analytics Gère les fichiers de journalisation des conteneurs exécutant les micro services.