Suite au Meetup du 05 décembre sur AKS, organisé par le MUG Nantes voici les slides et mes notes pour cette présentation :
Et ci-dessous la liste de toute les commandes utilisées pendant les démos de ce meetup ainsi que la documentation AKS ou Kubernetes associée.
Prérequis
Un projet ASP .Net Core 3.0 et son Dockerfile :
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc
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 registryhttps://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-overview
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
http://thomasrannou.azurewebsites.net/2019/05/28/azure-container-registry/
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
Introduction : http://thomasrannou.azurewebsites.net/2019/07/10/introduction-a-azure-kubernetes-service/
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
http://thomasrannou.azurewebsites.net/2019/08/03/deployer-dans-aks/
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/
http://thomasrannou.azurewebsites.net/2019/11/22/lautoscaling-dans-aks/
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
http://thomasrannou.azurewebsites.net/2019/10/16/azure-monitor-pour-aks/
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 :
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/
Cluster Autoscale
https://docs.microsoft.com/en-us/azure/aks/cluster-autoscaler
Bonne lecture !
Thomas