Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
AKS (Azure Kubernetes Service) est un service Kubernetes managé qui vous permet de déployer et de gérer rapidement des clusters. Dans ce guide de démarrage rapide, vous apprenez à :
- Créez un cluster AKS à l’aide de Flatcar Container Linux pour AKS (préversion).
- Déployer un cluster AKS dans le portail Azure.
- Exécutez un exemple d’application multiconteneur avec un groupe de microservices et de frontaux web qui simulent un scénario de vente au détail.
Note
Cet article inclut les étapes à suivre pour déployer un cluster avec des paramètres par défaut uniquement à des fins d’évaluation. Avant de déployer un cluster prêt pour la production, nous vous recommandons de vous familiariser avec notre architecture de référence de base pour prendre en compte la façon dont elle s’aligne sur vos besoins métier.
Avant de commencer
Ce guide de démarrage rapide suppose une compréhension élémentaire des concepts liés à Kubernetes. Pour plus d’informations, consultez Concepts de base de Kubernetes pour AKS (Azure Kubernetes Service).
- Si vous n’avez pas de compte Azure, créez un compte gratuit avant de commencer.
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter des commandes de référence CLI localement, installez Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Comment exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour terminer le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Veillez à ce que l’identité que vous utilisez pour créer votre cluster dispose des autorisations minimales appropriées. Pour plus d’informations sur l’accès et l’identité pour AKS, consultez Options d’accès et d’identité pour Kubernetes Azure Service (AKS).
- Si vous avez plusieurs abonnements Azure, sélectionnez l’ID d’abonnement approprié dans lequel les ressources doivent être facturées avec la commande
az account set. Pour obtenir plus d’informations, consultez Gérer les abonnements Azure – Azure CLI. - En fonction de votre abonnement Azure, vous devrez peut-être demander une augmentation du quota de processeurs virtuels. Pour plus d’informations, consultez Augmenter les quotas de processeurs virtuels de la famille de machines virtuelles.
Inscrire des fournisseurs de ressources
Vous devrez peut-être inscrire des fournisseurs de ressources dans votre abonnement Azure. Par exemple, Microsoft.ContainerService est nécessaire.
Vérifiez l’état de l’inscription à l’aide de la az provider show commande.
az provider show --namespace Microsoft.ContainerService --query registrationState
Si nécessaire, inscrivez le fournisseur de ressources à l’aide de la commande az provider register .
az provider register --namespace Microsoft.ContainerService
Installer l’extension aks-preview
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les versions d'essai sont fournies « en l’état » et « selon disponibilité », et elles sont exclues des contrats de niveau de service et de la garantie limitée. Les versions préliminaires AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Par conséquent, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Installez l’extension
aks-previewAzure CLI en utilisant la commandeaz extension add.az extension add --name aks-previewMettez à jour vers la dernière version de l’extension à l’aide de la commande
az extension update. Flatcar Container Linux nécessite un minimum de 18.0.0b42.az extension update --name aks-preview
Inscrire l’indicateur de fonctionnalité AKSFlatcarPreview
Inscrivez l’indicateur de fonctionnalité
AKSFlatcarPreviewà l’aide de la commandeaz feature register.az feature register --namespace "Microsoft.ContainerService" --name "AKSFlatcarPreview"Vérifiez l’état de l’inscription en utilisant la commande
az feature show. Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit).az feature show --namespace Microsoft.ContainerService --name AKSFlatcarPreviewQuand l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande
az provider register.az provider register --namespace Microsoft.ContainerService
Définir des variables d’environnement
- Définissez les variables d’environnement suivantes à utiliser dans ce guide de démarrage rapide :
export RANDOM_ID="$(openssl rand -hex 3)"
export MY_RESOURCE_GROUP_NAME="myAKSResourceGroup$RANDOM_ID"
export REGION="westus"
export MY_AKS_CLUSTER_NAME="myAKSCluster$RANDOM_ID"
La valeur de la RANDOM_ID variable est une valeur alphanumérique à six caractères ajoutée au groupe de ressources et au nom du cluster afin que les noms soient uniques. Utilisez la echo commande pour afficher les valeurs de variable comme echo $RANDOM_ID.
Créer un groupe de ressources
Un groupe de ressources Azure est un groupe logique dans lequel des ressources Azure sont déployées et gérées. Lorsque vous créez un groupe de ressources, vous êtes invité à spécifier un emplacement. Cet emplacement est l'emplacement de stockage des métadonnées de votre groupe de ressources et l'endroit où vos ressources s'exécutent dans Azure si vous ne spécifiez pas une autre région lors de la création de la ressource.
- Créez un groupe de ressources à l’aide de la commande
az group create.
az group create \
--name $MY_RESOURCE_GROUP_NAME \
--location $REGION
Exemple de sortie :
{
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myAKSResourceGroup<randomIDValue>",
"location": "westus",
"managedBy": null,
"name": "myAKSResourceGroup<randomIDValue>",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Créer un cluster AKS
- Créez un cluster AKS avec la commande
az aks create. L’exemple suivant crée un cluster avec un nœud et active une identité managée affectée par le système :
az aks create \
--resource-group $MY_RESOURCE_GROUP_NAME \
--name $MY_AKS_CLUSTER_NAME \
--os-sku flatcar \
--node-count 1 \
--generate-ssh-keys
Note
Lors de la création d’un nouveau cluster, un deuxième groupe de ressources est automatiquement créé par AKS pour stocker les ressources AKS. Pour plus d’informations, consultez Pourquoi deux groupes de ressources sont-ils créés avec AKS ?
Se connecter au cluster
Pour gérer un cluster Kubernetes, utilisez kubectl, le client de ligne de commande Kubernetes.
kubectl est déjà installé si vous utilisez Azure Cloud Shell. Pour installer kubectl localement, utilisez la commande az aks install-cli .
Configurez
kubectlafin de vous connecter à votre cluster Kubernetes avec la commandeaz aks get-credentials. Cette commande télécharge les informations d’identification et configure l’interface CLI Kubernetes pour les utiliser.az aks get-credentials \ --resource-group $MY_RESOURCE_GROUP_NAME \ --name $MY_AKS_CLUSTER_NAMEPour vérifier la connexion à votre cluster, exécutez la commande
kubectl get. Cette commande renvoie la liste des nœuds de cluster.kubectl get nodes
Déployer l’application
Pour déployer l'application, vous utilisez un fichier manifeste pour créer tous les objets nécessaires à l'exécution de l'application AKS Store. Un fichier manifeste Kubernetes définit un état souhaité d’un cluster, notamment les images conteneur à exécuter. Le manifeste inclut les déploiements et services Kubernetes suivants :
- Vitrine : application web permettant aux clients d’afficher les produits et de passer des commandes.
- Service produit : affiche les informations sur le produit.
- Service de commande : passer des commandes.
-
RabbitMQ: file d’attente de messages pour une file d’attente de commandes.
Note
Nous ne recommandons pas l’exécution de conteneurs avec état, comme RabbitMQ, sans stockage persistant pour la production. Nous l’utilisons ici pour simplifier, mais nous vous recommandons d’utiliser des services managés, tels qu’Azure Cosmos DB ou Azure Service Bus.
Créez un fichier nommé aks-store-quickstart.yaml et copiez-le dans le manifeste suivant.
apiVersion: apps/v1 kind: StatefulSet metadata: name: rabbitmq spec: serviceName: rabbitmq replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 env: - name: AI_SERVICE_URL value: "http://ai-service:5001/" resources: requests: cpu: 1m memory: 1Mi limits: cpu: 2m memory: 20Mi readinessProbe: httpGet: path: /health port: 3002 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3002 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi startupProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 5 readinessProbe: httpGet: path: /health port: 8080 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 3 livenessProbe: httpGet: path: /health port: 8080 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3 --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerPour obtenir une répartition des fichiers manifeste YAML, consultez Déploiements et manifestes YAML.
Si vous créez et enregistrez le fichier YAML localement, vous pouvez charger le fichier manifeste dans votre répertoire par défaut dans Cloud Shell en sélectionnant le bouton Charger/Télécharger des fichiers et en sélectionnant le fichier à partir de votre système de fichiers local.
Déployez l’application à l’aide de la commande
kubectl applyet spécifiez le nom de votre manifeste YAML.kubectl apply -f aks-store-quickstart.yamlL'exemple de sortie suivant présente les déploiements et services :
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
Tester 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.
Vérifiez l'état des pods déployés à l'aide de la commande
kubectl get pods. Vérifiez que tous les pods sontRunningavant de continuer.kubectl get podsRecherchez une adresse IP publique pour l’application
store-front. Surveillez la progression avec la commandekubectl get serviceet l’argument--watch.kubectl get service store-front --watchLa sortie EXTERNAL-IP pour le service
store-frontindique initialement qu'il est en attente :NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mQuand l’adresse EXTERNAL-IP passe de l’état pending à une adresse IP publique réelle, utilisez
CTRL-Cpour arrêter le processus de surveillancekubectl.L’exemple de sortie suivant montre une adresse IP publique valide affectée au service :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mOuvrez un navigateur web à l'adresse IP externe de votre service pour voir l'application Azure Store en action.
Supprimer le cluster
Si vous ne prévoyez pas de passer par le didacticiel AKS, nettoyez les ressources inutiles pour éviter les frais de facturation Azure.
Supprimez le groupe de ressources, le service conteneur et toutes les ressources associées à l’aide de la commande
az group delete.az group delete --name $MY_RESOURCE_GROUP_NAMELe cluster AKS a été créé avec une identité managée affectée par le système, qui est l’option d’identité par défaut utilisée dans ce guide de démarrage rapide. La plateforme gère cette identité afin que vous n’ayez pas besoin de la supprimer manuellement.
Étapes suivantes
Dans ce démarrage rapide, vous avez déployé un cluster Kubernetes et ensuite une application simple multi-conteneurs. Cet exemple d’application est fourni à des fins de version de démonstration uniquement et ne représente pas toutes les meilleures pratiques pour les applications Kubernetes. Pour obtenir des conseils sur la création de solutions complètes avec AKS pour la production, consultez les instructions de solution AKS.
Pour en savoir plus sur AKS et effectuer un exemple complet de code à déploiement, passez au didacticiel sur le cluster Kubernetes.