Cet article a pour but de présenter la solution Kubernetes de Microsoft (AKS), ce service est facilement exploitable et permet ainsi de se concentrer sur le développement de ses applications et non sur la mise en place de Kubernetes.
À savoir que Microsoft a rejoint la CNCF (Cloud Native Computing Foundation) en 2018 et a également fait l'acquisition de Deis, une entreprise à la base de plusieurs outils Kubernetes open source.
L’offre service managé signifie qu’Azure gère pour nous les nœuds Master. Nous devons uniquement nous soucier des nœuds Worker concernant notre application.
Les ressources Azure AKS sont disponible ici : https://docs.microsoft.com/en-us/cli/azure/aks?view=azure-cli-latest#az-aks-create
La solution Kubernetes permet d’automatiser le déploiement et la gestion d’applications en microservice (Docker) tout en proposant de la scalabilité.
Mise en place d’un cluster AKS
Pour créer notre cluster, nous allons utiliser le portail Azure (https://portal.azure.com) en cliquant sur Kubernetes Service comme ci-dessous.
Il faut ensuite renseigner les différents champs demandés :
- groupe de ressource,
- nom du cluster
- région
- préfixe DNS
Après validation de la configuration, le déploiement du cluster est en cours
Il est bien entendu possible de déployer votre cluster Kubernetes par Terraform
https://www.terraform.io/docs/providers/azurerm/r/kubernetes_cluster.html
Pour vous connectez sur votre Cluster, Installez la CLI sur votre poste en ouvrant PowerShell puis en exécutant la commande suivante :
az aks install-cli
Connectez-vous ensuite sur votre cluster
az aks get-credentials --resource-group {Resource group name} --name {Cluster name}
Ci-dessous quelques exemples de lignes de commande pour manager votre cluster AKS :
La commande suivante permet de déployer un pod reverse proxy nginx sur un node
kubectl run nginx --image=nginx --replicas=3
La commande suivante permet de lister vos nodes :
$ kubectl get nodes
La commande suivante permet d’avoir un détail de vos nodes
kubectl describe nodes
La commande suivante permet de scaler vos nodes
az aks scale --resource-group myResourceGroup --name myAKSCluster --node-count 1 --nodepool-name <your node pool name>
La commande suivante permet de scaler les pods
kubectl autoscale deployment <your deployment> --cpu-percent=50 --min=3 --max=10
Les commandes kubectl permettent de manager les ressources Kubernetes comme pour n’importe quel autre environnement Kubernetes, tandis que les commandes AZ permettent de gérer vos ressources Azure comme vos ressources groupe.
L'avantage d'utiliser Kubernetes sur Azure est de pouvoir bénéficier de la sécurité du Cloud. Votre cluster Kubernetes peut être supervisé par Azure Security Center.
Les logs et l'état de santé de votre cluster ainsi que les préconisations de Microsoft sont visibles dans une seule console.
Ci-dessous le schéma de principe de déploiement d’une application en microservice via GitHub, Azure Devops et AKS dans le cloud Azure.
- Le développeur, utilise son IDE tel que Visual Studio pour valider un changement sur GitHub
- GitHub lance le Build sur Azure Devops
- Azure Devops package les microservice en tant que conteneur et les push sur Azure Container Registry
- Les conteneurs sont déployés sur le cluster AKS
- Les utilisateurs accèdent aux différents services
- Azure Active Directory est utilisé pour sécuriser les accès aux ressources
- Les micros-services utilisent les bases de données pour stocker et récupérer les informations
- Les administrateurs accèdent via un portail d’administration séparé
Pour tester vous aussi la solution AKS, je vous invite à créer un compte free tiers Azure via le lien suivant : https://azure.microsoft.com/compte/gratuit
Puis découvrez le portail Azure afin de vous familiariser avec la multitude de service que vous propose Microsoft !