Skip to content

Latest commit

 

History

History
184 lines (124 loc) · 6.96 KB

File metadata and controls

184 lines (124 loc) · 6.96 KB

Lab 6 : 6 : Installation d'AGIC, déploiement d'Azure Application Gateway et déploiement d'une application basique


Objectifs

Utiliser Azure Application Gateway comme solution de reverse proxy pour exposer des applications exécutées dans Azure Kubernetes Service.

Plus d'informations sur Azure Application Gateway : https://docs.microsoft.com/en-us/azure/application-gateway/overview

Azure Application Gateway sera piloté par AGIC (Azure Application Gateway Ingress Controller)

Plus d'informations sur AGIC : https://docs.microsoft.com/en-us/azure/application-gateway/ingress-controller-overview

Les règles de routage http(s) seront définies dans des objets Ingress dans Kubernetes.

Plus d'informations sur les objets Ingress : https://kubernetes.io/docs/concepts/services-networking/ingress/

L'installation d'Azure Application Gateway et d'AGIC sera faite via l'utilisation d'un add-on à Azure Kubernetes Service

Azure Application Gateway peut être installé en mode GreenField lors de l'installation du cluster AKS si on active l'add on AGIC. Les ressources Azure associée seront alors dans le Resource Group où sont les VMScaleSet des node pools. Dans ce cas, le cycle de vie d'Azure Application Gateway sera celui du cluster AKS.

Une Azure Application Gateway existante peut être piloté par AGIC en activant le add-on sur un cluster AKS existant.

Plus d'information : https://docs.microsoft.com/en-us/azure/application-gateway/tutorial-ingress-controller-add-on-existing

Dans ce lab, pour des raisons de simplicité, l'option Greenfield est retenue.


Pré-requis sur le poste d'administration

Les opérations sont réalisables depuis l'Azure Cloud Shell : https://shell.azure.com


Création d'un cluster AKS avec le add-on AGIC en mode greenfield

az login
az group create --name "RG-Lab6" --location "eastus2"
az aks create -n myCluster -g "RG-Lab6" --network-plugin azure --enable-managed-identity -a ingress-appgw --appgw-name myApplicationGateway --appgw-subnet-cidr "10.225.0.0/16" --generate-ssh-keys 

note : par défaut, la plage d'adresse IP d'un VNet créé pour AKS est désormais 10.224.0.0/12 (avant c'était 10.0.0.0/8) cf. https://github.com/Azure/AKS/blob/master/CHANGELOG.md#release-notes-13 cf. https://jodies.de/ipcalc?host=10.224.0.0&mask1=12&mask2= cf. https://stackoverflow.com/questions/72062611/aks-create-with-app-gateway-ingress-control-fails-with-ingressappgwaddonconfigin


Vérification de l'installation de add-on AGIC sur le cluster AKS

Lister les clusters AKS disponibles

az aks list -o table

Lister les add-ons installés sur un cluster AKS

az aks addon list -n <nomduclusterAKS> -g <nomduResourceGroupduControlPlane> -o table

Le résultat devrait être le suivant :

Name                             Enabled
-------------------------------  ---------
http_application_routing         False
monitoring                       False
virtual-node                     False
kube-dashboard                   False
azure-policy                     False
ingress-appgw                    True
confcom                          False
open-service-mesh                False
azure-keyvault-secrets-provider  False
gitops                           False
web_application_routing          False

Noter ingress-appgw qui est à true


Déploiement d'une application et test de la solution de Ingress

Récupérer le kubeconfig permettant à kubectl de s'authentifier auprès de l'API Server du cluster AKS

az aks get-credentials -n "myCluster" -g "RG-Lab6"

Lister les classes d'ingress disponibles dans le cluster :

kubectl get ingressclasses.networking.k8s.io

Le résultat doit être :

NAME                        CONTROLLER                  PARAMETERS   AGE
azure-application-gateway   azure/application-gateway   <none>       6m30s

Lister les objets ingress dans le cluster Kubernetes

kubectl get ingress --all-namespaces

Normalement il doit y avoir comme réponse No resource found

Dans le portail Azure, aller dans le resource group MC_.... contenant les ressources du cluster AKS

Ouvrir la ressource Application Gateway

Sur le panneau de gauche, aller dans Rules et dans Backend pools et regarder les configurations par défaut (avec aucune)

Installer une application de démonstration

wget https://raw.githubusercontent.com/kubernetes/examples/master/guestbook/all-in-one/guestbook-all-in-one.yaml 
kubectl apply -f guestbook-all-in-one.yaml

kubectl get pods -n default -o wide

--> Dans le namespace default, il doit y avoir 3 frontend, 1 redis master et 2 redis replicas

Répéter la commande jusqu'à que les 6 pods soient en état running

kubectl get services -n default

Les services frontend, redis-master et redis-replica ne doivent pas avoir d'adresses IP externes

kubectl get ingress -n default

Visualiser le contenu du fichier ing-guestbook.yaml puis appliquer ce fichier

kubectl apply -f ing-guestbook.yaml

kubectl get services -n default -o wide

kubectl get ingress -n default

ouvrir un navigateur et se connecter sur l'url (qui est ici juste une adresse IP) ....

Dans le portail Azure, aller dans le resource group MC_.... contenant les ressources du cluster AKS

Ouvrir la ressource Application Gateway et regarder les changements faits par AGIC sur la configuration :

  • Listener
  • Rules
  • Backend pools : à comparer avec les résultats de la commande
kubectl get pod -n default -o wide
  • Backend settings

nettoyage

Supprimer le resource group RG-Lab6

az group delete -n RG-Lab6

Fin du Lab 6