(DÉCONSEILLÉ) Déployer un cluster Azure Kubernetes pour des conteneurs Linux
Conseil
Pour obtenir la version mise à jour, ce guide de démarrage rapide qui utilise Azure Kubernetes Service, consultez Démarrage rapide : Déployer un cluster Azure Kubernetes Service (AKS).
Avertissement
Le service Azure Container Service (ACS) est déprécié. Aucune nouvelle fonctionnalité ni fonction n’est ajoutée à ACS. L’ensemble des API, de l’utilisation du portail, des commandes CLI et de la documentation sont marquées comme dépréciées.
En 2017, nous avons introduit Azure Kubernetes Service (AKS) pour simplifier la gestion, le déploiement et les opérations liés à Kubernetes. Si vous utilisez l’orchestrateur Kubernetes, veuillez migrer vers AKS avant le 31 janvier 2020. Pour commencer, consultez Migrer vers Azure Kubernetes Service.
Pour plus d’informations, consultez l’annonce de la dépréciation d’Azure Container Service sur Azure.com.
Dans ce guide de démarrage rapide, un cluster Kubernetes est déployé à l’aide d’Azure CLI. Une application à plusieurs conteneurs composée d’un serveur web frontal et d’une instance Redis est ensuite déployée, puis exécutée sur le cluster. Ceci fait, l’application est accessible via internet.
L’exemple d’application utilisé dans ce document est écrit en Python. Les concepts et étapes décrits dans cet article sont utilisables pour le déploiement de toute image conteneur dans un cluster Kubernetes. Le code, le fichier Dockerfile et les fichiers manifestes Kubernetes préalablement créés qui sont associés à ce projet sont disponibles sur GitHub.
Ce guide de démarrage rapide suppose une compréhension élémentaire des concepts de Kubernetes. Pour en savoir plus, consultez la documentation Kubernetes.
Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.
Azure Cloud Shell
Azure héberge Azure Cloud Shell, un environnement d’interpréteur de commandes interactif que vous pouvez utiliser dans votre navigateur. Vous pouvez utiliser Bash ou PowerShell avec Cloud Shell pour utiliser les services Azure. Vous pouvez utiliser les commandes préinstallées Cloud Shell pour exécuter le code de cet article sans avoir à installer quoi que ce soit dans votre environnement local.
Pour démarrer Azure Cloud Shell :
Option | Exemple/Lien |
---|---|
Sélectionnez Essayer dans le coin supérieur droite d’un bloc de codes ou de commandes. La sélection de Essayer ne copie pas automatiquement le code ni la commande dans Cloud Shell. | |
Accédez à https://shell.azure.com ou sélectionnez le bouton Lancer Cloud Shell pour ouvrir Cloud Shell dans votre navigateur. | |
Sélectionnez le bouton Cloud Shell dans la barre de menus en haut à droite du portail Azure. |
Pour utiliser Azure Cloud Shell :
Démarrez Cloud Shell.
Sélectionnez le bouton Copier sur un bloc de codes (ou un bloc de commandes) pour copier le code ou la commande.
Collez le code ou la commande dans la session Cloud Shell en sélectionnant Ctrl+Maj+V sur Windows et Linux ou en sélectionnant Cmd+Maj+V sur macOS.
Sélectionnez Entrée pour exécuter le code ou la commande.
Si vous choisissez d’installer et d’utiliser l’interface de ligne de commande localement, vous devez exécuter Azure CLI version 2.0.4 ou une version ultérieure pour poursuivre la procédure décrite dans ce guide de démarrage rapide. Exécutez az --version
pour trouver la version. Si vous devez effectuer une installation ou une mise à niveau, consultez Installer Azure CLI.
Créer un groupe de ressources
Créez un groupe de ressources avec la commande az group create. Un groupe de ressources Azure est un groupe logique dans lequel des ressources Azure sont déployées et gérées.
L’exemple suivant crée un groupe de ressources nommé myResourceGroup à l’emplacement westeurope.
az group create --name myResourceGroup --location westeurope
Sortie :
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup",
"location": "westeurope",
"managedBy": null,
"name": "myResourceGroup",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null
}
Créer un cluster Kubernetes
Pour créer un cluster Kubernetes dans Azure Container Service, utilisez la commande az acs create. L’exemple ci-après permet de créer un cluster nommé myK8sCluster, qui inclut un nœud maître Linux et trois nœuds agents Linux.
az acs create --orchestrator-type kubernetes --resource-group myResourceGroup --name myK8sCluster --generate-ssh-keys
Dans certains cas, par exemple avec une version d’évaluation limitée, un abonnement Azure dispose d’un accès limité aux ressources Azure. Si le déploiement échoue à cause d’une limitation du nombre de cœurs disponibles, réduisez le nombre d’agents par défaut en ajoutant --agent-count 1
à la commande az acs create.
Au bout de quelques minutes, la commande se termine et retourne des informations formatées Json sur le cluster.
Se connecter au cluster
Pour gérer un cluster Kubernetes, utilisez kubectl, le client de ligne de commande Kubernetes.
Si vous utilisez Azure Cloud Shell, l’outil kubectl est déjà installé. Si vous souhaitez l’installer en local, vous pouvez utiliser la commande az acs kubernetes install-cli.
Pour configurer kubectl afin qu’il se connecte à votre cluster Kubernetes, exécutez la commande az acs kubernetes get-credentials. Cette étape télécharge les informations d’identification et configure l’interface de ligne de commande Kubernetes pour leur utilisation.
az acs kubernetes get-credentials --resource-group=myResourceGroup --name=myK8sCluster
Pour vérifier la connexion à votre cluster, utilisez la commande kubectl get pour retourner une liste des nœuds du cluster.
kubectl get nodes
Sortie :
NAME STATUS AGE VERSION
k8s-agent-14ad53a1-0 Ready 10m v1.6.6
k8s-agent-14ad53a1-1 Ready 10m v1.6.6
k8s-agent-14ad53a1-2 Ready 10m v1.6.6
k8s-master-14ad53a1-0 Ready,SchedulingDisabled 10m v1.6.6
Exécution de l'application
Un fichier manifeste Kubernetes définit un état souhaité pour le cluster, incluant les images conteneur à exécuter. Dans cet exemple, un manifeste est utilisé afin de créer tous les objets nécessaires pour l’exécution de l’application Azure Vote.
Créez un fichier nommé azure-vote.yml
et copiez-y le YAML suivant. Si vous travaillez dans Azure Cloud Shell, vous pouvez créer ce fichier à l’aide de vi ou de Nano comme si vous travailliez sur un système virtuel ou physique.
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: azure-vote-back
spec:
replicas: 1
template:
metadata:
labels:
app: azure-vote-back
spec:
containers:
- name: azure-vote-back
image: redis
ports:
- containerPort: 6379
name: redis
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-back
spec:
ports:
- port: 6379
selector:
app: azure-vote-back
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: azure-vote-front
spec:
replicas: 1
template:
metadata:
labels:
app: azure-vote-front
spec:
containers:
- name: azure-vote-front
image: microsoft/azure-vote-front:v1
ports:
- containerPort: 80
env:
- name: REDIS
value: "azure-vote-back"
---
apiVersion: v1
kind: Service
metadata:
name: azure-vote-front
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-vote-front
Utilisez la commande kubectl create pour exécuter l’application.
kubectl create -f azure-vote.yml
Sortie :
deployment "azure-vote-back" created
service "azure-vote-back" created
deployment "azure-vote-front" created
service "azure-vote-front" created
Test de l’application
Lorsque l’application est exécutée, un service Kubernetes est créé, qui expose le serveur frontal de l’application à Internet. L’exécution de ce processus peut prendre plusieurs minutes.
Pour surveiller la progression, utilisez la commande kubectl get service avec l’argument --watch
.
kubectl get service azure-vote-front --watch
Au début, EXTERNAL-IP pour le service azure-vote-front apparaît En attente. Une fois que l’adresse IP externe est passée du statut En attente à Adresse IP, utilisez CTRL-C
pour arrêter le processus de surveillance kubectl.
azure-vote-front 10.0.34.242 <pending> 80:30676/TCP 7s
azure-vote-front 10.0.34.242 52.179.23.131 80:30676/TCP 2m
Vous pouvez désormais accéder à l’adresse IP externe pour voir l’application Azure Vote.
Supprimer un cluster
Lorsque vous n’avez plus besoin du cluster, vous pouvez utiliser la commande az group delete pour supprimer le groupe de ressources, le service de conteneur et toutes les ressources associées.
az group delete --name myResourceGroup --yes --no-wait
Obtenir le code
Dans ce guide de démarrage rapide, les images de conteneur, créées au préalable, ont été utilisées pour créer un déploiement Kubernetes. Le code de l’application associé, Dockerfile, et le fichier manifeste Kubernetes sont disponibles sur GitHub.
https://github.com/Azure-Samples/azure-voting-app-redis
Étapes suivantes
Dans ce Démarrage rapide, vous avez déployé un cluster Kubernetes dans lequel vous avez déployé une application de plusieurs conteneurs.
Pour en savoir plus sur Azure Container Service et parcourir le code complet de l’exemple de déploiement, passez au didacticiel sur le cluster Kubernetes.