Exercice : déployer un exemple d’application sur le cluster à l’aide de GitOps et Flux

Effectué

Dans cet exercice, vous allez déployer une application Linux conteneurisée sur votre cluster AKS Edge Essentials avec Arc à l’aide de GitOps et Flux.

Dupliquer le dépôt GitHub de l’application de démonstration

Si vous n’avez pas encore de compte GitHub, créez-en un maintenant.

  1. Accédez au dépôt Azure Arc Jumpstart Apps et dupliquez-le vers votre propre compte GitHub en sélectionnant Fork, puis Create fork.

    Screenshot of Azure Arc Jumpstart Apps repository.

  2. Vérifiez que la duplication a fonctionné en accédant aux dépôts de votre compte et en sélectionnant le dépôt azure-arc-jumpstart-apps. L’URL du dépôt doit ressembler à ceci :

    https://github.com/<your-github-username>/azure-arc-jumpstart-apps
    

Déployer l’application

Dans le Portail Azure, accédez à votre cluster AKS Edge Essentials avec Arc, puis sélectionnez GitOps sous Paramètres. Créons deux configurations : une au niveau du cluster et une au niveau de l’espace de noms.

Screenshot of AKS Edge Essentials Kubernetes Azure Arc resource in Azure portal, with GitOps highlight.

  1. Sélectionnez Créer et utilisez les valeurs suivantes pour établir la configuration au niveau du cluster :

    Attribut Input
    Concepts de base
    Nom de la configuration config-nginx
    Espace de noms ingress-nginx
    Étendue Cluster
    Type Flux v2
    Source
    Type de source Référentiel Git
    URL du dépôt <URL du dépôt dupliqué>
    Type de référence Branche
    Branche main
    Type de dépôt Public
    Intervalle de synchronisation 1
    Délai d’expiration de la synchronisation 10
    Kustomizations
    Kustomizations Sélectionnez Créer
    Nom de l’instance nginx
    Chemin d’accès ./nginx/release
    Intervalle de synchronisation 10
    Délai d’expiration de la synchronisation 10
    Élaguer Enabled
    Force Non activé

    Remarque

    Attendez que config-nginx soit créé et visible sur votre Portail Azure GitOps avant de créer la configuration au niveau de l’espace de noms (si la conformité est en attente, vous pouvez passer à la création de la configuration suivante).

  2. Sélectionnez Créer et utilisez les valeurs suivantes pour établir la configuration au niveau du cluster :

    Attribut Input
    Concepts de base
    Nom de la configuration config-helloarc
    Espace de noms hello-arc
    Étendue Espace de noms
    Type Flux v2
    Source
    Type de source Référentiel Git
    URL du dépôt <URL du dépôt dupliqué>
    Type de référence Branche
    Branche main
    Type de dépôt Public
    Intervalle de synchronisation 1
    Délai d’expiration de la synchronisation 10
    Kustomizations
    Kustomizations Sélectionnez Créer
    Nom de l’instance app
    Chemin d’accès ./hello-arc/releases/app
    Intervalle de synchronisation 10
    Délai d’expiration de la synchronisation 10
    Élaguer Enabled
    Force Non activé
  3. Actualisez la table de configuration et patientez jusqu’à ce que les configurations soient installées et conformes.

    Screenshot of cluster-level and namespace-level configurations in Azure portal.

  4. Dans votre machine virtuelle, utilisez kubectl pour vérifier que le service est en cours d’exécution :

    kubectl get svc -n ingress-nginx
    kubectl get pods -n hello-arc
    

    L’exemple de sortie suivant indique que le service est en cours d’exécution :

    PS C:\akseeLearn> kubectl get svc -n ingress-nginx
    NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
    ingress-nginx-controller             LoadBalancer   10.43.136.240   192.168.0.4   80:31838/TCP,443:30386/TCP   18m
    ingress-nginx-controller-admission   ClusterIP      10.43.11.51     <none>        443/TCP                      18m
    PS C:\akseeLearn> kubectl get pods -n hello-arc
    NAME                         READY   STATUS    RESTARTS   AGE
    hello-arc-7c66864f8d-662b7   1/1     Running   0          12m
    hello-arc-7c66864f8d-fdbkc   1/1     Running   0          12m
    hello-arc-7c66864f8d-prb2v   1/1     Running   0          12m
    
  5. Pour afficher l’application, ouvrez un navigateur et accédez à l’adresse EXTERNAL-IP affectée au service ingress-nginx-controller. Dans l’exemple précédent, l’adresse IP affectée au service est 192.168.0.4.

    Screenshot of Windows VM with linux sample application running in the browser.

Mettre à jour l’application

Nous avons configuré GitOps et Flux pour surveiller les modifications apportées à la branche main de votre dépôt dupliqué. Apportons une modification à l’application et examinons la réponse de GitOps.

  1. Dans votre dépôt azure-arc-jumpstart-apps dupliqué, accédez à hello-arc > releases > app > hello-arc.yaml.

  2. Apportez une modification à ce fichier YAML en sélectionnant Edit. Remplacez la valeur du paramètre replicaCount par 5. Remplacez le texte en regard de value par Deploying to AKS Edge Essentials GitOps!.

  3. Commitez la modification en sélectionnant Commit changes..., puis Commit changes.

    Screenshot of application changes in the GitHub repository.

  4. Utilisez kubectl pour afficher les anciens pods à l’arrêt et les nouveaux pods en ligne :

    kubectl get pods -n hello-arc -w
    

    L’exemple de sortie suivant montre les anciens pods à l’arrêt et les nouveaux pods en ligne :

    PS C:\akseeLearn> kubectl get pods -n hello-arc -w
    NAME                         READY   STATUS    RESTARTS   AGE
    hello-arc-699dff9888-5mcjs   1/1     Running   0          19m
    hello-arc-699dff9888-qrsfw   1/1     Running   0          19m
    hello-arc-699dff9888-xm82r   1/1     Running   0          19m
    hello-arc-699dff9888-mpdxt   0/1     Pending   0          0s
    hello-arc-699dff9888-mpdxt   0/1     Pending   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Pending   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Pending   0          0s
    hello-arc-699dff9888-mpdxt   0/1     ContainerCreating   0          0s
    hello-arc-699dff9888-cvkgf   0/1     ContainerCreating   0          0s
    hello-arc-699dff9888-cvkgf   0/1     Running             0          1s
    hello-arc-699dff9888-mpdxt   0/1     Running             0          1s
    hello-arc-699dff9888-mpdxt   1/1     Running             0          2s
    hello-arc-699dff9888-cvkgf   1/1     Running             0          2s
    

    Remarque

    Étant donné que nous définissons l’intervalle de synchronisation sur 1 min lors de la création de la configuration, Flux extrait les modifications de GitHub toutes les minutes.

  5. Actualisez l’application pour observer comment cette modification se reflète dans une mise à jour récurrente.

    Screenshot of Windows VM with updated linux sample application running in the browser.

Nettoyer vos ressources Azure

Au cours de ce module, vous avez créé des ressources Azure. Si vous pensez ne plus avoir besoin de ces ressources, supprimez le groupe de ressources et le principal du service en exécutant les commandes az group delete et az ad sp delete dans Azure Cloud Shell :

az group delete --name "aksedge-training" --force-deletion-types Microsoft.Compute/virtualMachines
az ad sp delete --id "<your-service-principal-ID>"

Important

Pour éviter de cumuler des frais indésirables, vous devez supprimer les ressources et le principal de service Azure que vous avez utilisés dans ce module.