Déployer des applications Windows

S’applique à : AKS sur Azure Stack HCI 22H2, AKS sur Windows Server

Ce tutoriel explique comment déployer un exemple d’application ASP.NET dans un conteneur Windows Server sur le cluster Azure Kubernetes Service (AKS) dans AKS activé par Arc, puis tester et mettre à l’échelle votre application. Vous apprendrez également à joindre un nœud Windows à un domaine Active Directory.

Ce didacticiel suppose que vous disposez de connaissances de base sur les concepts de Kubernetes. Pour plus d’informations, consultez les concepts fondamentaux de Kubernetes pour AKS activés par Azure Arc.

Avant de commencer

Vérifiez que vous avez satisfait aux exigences suivantes :

  • Un cluster Azure Kubernetes Service avec au moins un nœud Worker Windows opérationnel.
  • Un fichier kubeconfig pour accéder au cluster.
  • Le module PowerShell AksHci est installé.

Lorsque vous suivez les procédures :

  • Exécutez les commandes dans une fenêtre d’administrateur PowerShell.
  • Vérifiez que les charges de travail spécifiques au système d’exploitation se trouvent sur l’hôte de conteneur approprié. Si votre cluster Kubernetes a un mélange de nœuds Worker Linux et Windows, vous pouvez utiliser des sélecteurs de nœuds ou des teintes et des tolérances. Pour plus d’informations, consultez les sélecteurs de nœud et les teintes et tolérances.

Déployer l’application

Un fichier manifeste Kubernetes définit un état souhaité pour le cluster, comme les images conteneur à exécuter. Dans ces procédures, un manifeste est utilisé pour créer tous les objets nécessaires pour exécuter l’exemple d’application ASP.NET dans un conteneur Windows Server. Ce manifeste comprend un déploiement Kubernetes pour l’exemple d’application ASP.NET et un service Kubernetes externe pour accéder à l’application à partir d’Internet.

L’exemple d’application ASP.NET est fourni dans le cadre des exemples .NET Framework et s’exécute dans un conteneur Windows Server. AKS Arc exige que les conteneurs Windows Server soient basés sur des images de Windows Server 2019.

Le fichier manifeste Kubernetes doit également définir un sélecteur de nœuds pour indiquer à votre cluster d’exécuter votre ASP.NET pod d’exemple d’application sur un nœud qui peut exécuter des conteneurs Windows Server.

Créez un fichier nommé sample.yamlet copiez/collez la définition YAML suivante :

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sample
  labels:
    app: sample
spec:
  replicas: 1
  template:
    metadata:
      name: sample
      labels:
        app: sample
    spec:
      nodeSelector:
        "beta.kubernetes.io/os": windows
      containers:
      - name: sample
        image: mcr.microsoft.com/dotnet/framework/samples:aspnetapp
        resources:
          limits:
            cpu: 1
            memory: 800M
          requests:
            cpu: .1
            memory: 300M
        ports:
          - containerPort: 80
  selector:
    matchLabels:
      app: sample
---
apiVersion: v1
kind: Service
metadata:
  name: sample
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
  selector:
    app: sample

Déployez l’application à l’aide de la kubectl apply commande et spécifiez le nom de votre manifeste YAML :

kubectl apply -f sample.yaml

L’exemple de sortie suivant montre que le déploiement et le service ont été créés avec succès :

deployment.apps/sample created
service/sample created

Test de l’application

Quand l’application s’exécute, un service Kubernetes expose le front-end de l’application sur Internet. L’exécution de ce processus peut prendre plusieurs minutes. Parfois, le provisionnement du service peut prendre plus de quelques minutes. Autorisez jusqu’à 10 minutes dans ces cas de figure.

Pour surveiller la progression, utilisez la kubectl get service commande avec l’argument --watch :

kubectl get service sample --watch

Initialement, l’adresse EXTERNAL-IP pour l’exemple de service s’affiche comme étant en attente :

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP   PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   <pending>     80:30572/TCP   6s

Quand l’adresse EXTERNAL-IP passe de l’état pending à une adresse IP publique réelle, utilisez CTRL-C pour arrêter le processus de surveillance kubectl. L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :

NAME    TYPE           CLUSTER-IP   EXTERNAL-IP     PORT(S)        AGE
sample  LoadBalancer   10.0.37.27   52.179.23.131   80:30572/TCP   2m

Pour voir l’exemple d’application en action, ouvrez un navigateur web en utilisant l’adresse IP externe de votre service.

Capture d’écran de la page d’accueil de l’exemple d’application ASP.NET pour Windows déployée sur un cluster AKS.

Si la connexion expire lorsque vous essayez de charger la page, vérifiez si l’exemple d’application est prêt en exécutant la kubectl get pods --watch commande. Parfois, l’adresse IP externe est disponible avant le démarrage du conteneur Windows.

Mettre à l’échelle les pods d’application

Nous avons créé un réplica unique du serveur frontal de l’application. Pour voir le nombre et l’état des pods de votre cluster, utilisez la commande kubectl get comme suit :

kubectl get pods -n default

Pour changer le nombre de pods dans le déploiement sample, utilisez la commande kubectl scale. L’exemple suivant augmente le nombre de pods de serveur frontal à 3 :

kubectl scale --replicas=3 deployment/sample

Réexécutez kubectl get pods pour vérifier que les pods ont été créés. Au bout d’une minute environ, les pods supplémentaires sont disponibles dans votre cluster :

kubectl get pods -n default

Étapes suivantes