Suite au Meetup du 16 septembre sur AKS, organisé par le Microsoft User Group Tours voici la vidéo de cette présentation.
Ci-dessous la liste des thèmes abordés durant ce talk ainsi que la documentation AKS et Kubernetes associée.
Azure Container Registry
Créer une Azure container registry http://thomasrannou.azurewebsites.net/2019/05/28/azure-container-registry/
Un tutoriel pour :
- Créer une web application Asp .Net Core
- La déployer dans une Azure Container Registry
- L’exécuter dans une Container Instance
Azure Kubernetes Services
Présentation
Introduction : http://thomasrannou.azurewebsites.net/2019/07/10/introduction-a-azure-kubernetes-service/
Article de présentation de Kubernetes puis l’offre managée k8s dans Azure : Azure Kubernetes Services (AKS).
Les pools de noeuds : http://thomasrannou.azurewebsites.net/2020/01/28/les-pools-de-noeuds-dans-aks/
Présentation de l’organisation autour de pool de noeuds dans AKS. Tout l’intérêt des nodepools est la possibilité d’avoir des nœuds spécifiques pour exécuter nos pods afin de répondre à des besoins bien précis.
Haute disponibilité : http://thomasrannou.azurewebsites.net/2020/03/02/la-resilience-applicative-avec-aks/
Présentation de la tolérance aux pannes avec AKS. Quelle est la capacité du service à revenir dans un mode nominal de façon automatisée ?
Kubectl : https://kubernetes.io/docs/reference/kubectl/
Déployer une application
Déploiement d’une application vers une registry puis AKS http://thomasrannou.azurewebsites.net/2019/08/03/deployer-dans-aks/
Un tutoriel pour déployer sa première application dans Azure Kubernetes Services depuis une Azure Container Registry.
Monitoring
Présentation d’Azure Monitor, Metrics et Logs Analytics http://thomasrannou.azurewebsites.net/2019/10/16/azure-monitor-pour-aks/
Présentation des outils pour monitorer notre cluster AKS et les applications qui y sont déployées.
Autoscaling
Sur les pods : http://thomasrannou.azurewebsites.net/2019/11/22/autoscaling-dans-aks/
Tutoriel pour mettre en oeuvre l’autoscaling sur les pods déployés. Il s’agit ici de présenter un scaling applicatif.
Sur les nodes : http://thomasrannou.azurewebsites.net/2020/01/06/autoscaler-aks/
Tutoriel pour configurer l’autoscaling sur les nodes de son cluster AKS. Ici on parle de scaling au niveau infrastructure.
Le projet présenté
Et ci-dessous la liste de toute les commandes utilisées pendant les démos de ce meetup.
Prérequis
Un projet ASP .Net Core 3.0 et son Dockerfile :
Build du projet
docker build -f "WebAppMeetupNantes/Dockerfile" . -t webappmeetup
Test en local
docker run -d -p 9000:80 --name myappmug webappmeetup
Azure Container Registry
Création du groupe de ressource
az group create --name demo --location eastus
https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview
Création de la container registry
az acr create --resource-group demo --name containeregistry --sku Basic
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-intro
https://docs.microsoft.com/en-us/azure/container-registry/container-registry-skus
Connexion à la registry
az acr login --name containeregistry
Tag sur l’image docker
docker tag webappmeetup containeregistry.azurecr.io/webappk8s:v1
Push de l’image sur la registry
docker push containeregistry.azurecr.io/webappk8s:v1
Azure Kubernetes Services
Création d’un service principal
az ad sp create-for-rbac --skip-assignment
https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli
Obtenir l’identifiant de la registry
az acr show --resource-group demo --name containeregistry --query "id" --output tsv
Ajout du role Owner sur la registry
az role assignment create --assignee <appid> --scope <acrid> --role Owner
https://docs.microsoft.com/en-us/azure/role-based-access-control/role-assignments-cli
Création du cluster kubernetes
az aks create --resource-group demo --name myAKSCluster --node-count 3 --service-principal <appid> --client-secret <apppwd> --generate-ssh-keys --enable-addons monitoring
https://docs.microsoft.com/en-us/azure/aks/tutorial-kubernetes-deploy-cluster
Node pool et type de VM utilisé pour les nodes :
https://docs.microsoft.com/en-us/azure/aks/use-multiple-node-pools
Récupération du contexte en local
az aks get-credentials --resource-group demo --name myAKSCluster
Pods en execution
kubectl get pods --namespace=kube-system
Création du ClusterRoleBinding pour utiliser le dashboard
kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
Ouverture du dashboard
az aks browse --resource-group demo --name myAKSCluster
https://docs.microsoft.com/en-us/azure/aks/kubernetes-dashboard
Introduction à Kubectl
https://kubernetes.io/docs/reference/kubectl/
https://kubernetes.io/fr/docs/reference/kubectl/cheatsheet/
Déploiement de mon app via un fichier YAML
kubectl apply -f .\deploytoaks.yaml
Déploiement du suivi des logs en live
kubectl apply -f .\metrics.yaml
Consommation de ressources
kubectl top nodes
kubectl top pod
Supression d’un pod de mon application
kubectl delete pod … Il est relancé automatiquement.
Horizontal Pod Autoscaler
https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
Mise en place du HPA
kubectl autoscale deployment aspwebsite --max 10 --min 2 --cpu-percent 10
Visualisation
kubectl get hpa
Stress test via l’executable .cmd
Autoscale sur la mémoire
kubectl apply -f .\autoscale.yaml
Monitoring
https://docs.microsoft.com/en-us/azure/azure-monitor/overview
Insights : https://docs.microsoft.com/en-us/azure/azure-monitor/app/app-insights-overview
Metrics : https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-platform-metrics
Logs : https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/get-started-portal
Les fichiers yaml déployés et le programme batch pour le stress test :demo
Tests
Test en local : http://thomasrannou.azurewebsites.net/2019/08/14/tester-son-cluster-k8s-en-local/
Azure DevSpaces : http://thomasrannou.azurewebsites.net/2019/09/04/debugger-dans-son-cluster-kubernetes-dans-azure/
J’espère que cette vidéo de présentation d’AKS vous permettra de comprendre les avantages de ce formidable outil 🙂
Thomas