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.
Dans ce tutoriel, vous allez héberger une application d’inventaire sur Azure Kubernetes Service (AKS) et découvrir comment utiliser la géoréplication active pour répliquer des données dans votre instance Azure Cache pour Redis Enterprise ou Azure Managed Redis dans les régions Azure.
Conditions préalables
- Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit.
- Un cluster Azure Kubernetes Service. Pour plus d’informations sur la création d’un cluster, consultez Démarrage rapide : déployer un cluster AKS (Azure Kubernetes Service) à l’aide du portail Azure. Vous pouvez également héberger deux instances de l’application de démonstration sur deux clusters AKS différents. Dans un environnement de production, vous utiliseriez deux clusters différents situés dans les mêmes régions que vos clusters pour déployer deux versions de l’application. Pour les besoins de ce tutoriel, vous allez déployer les deux instances de l’application sur le même cluster AKS.
Important
Ce tutoriel part du principe que vous connaissez les concepts de base de Kubernetes, notamment les conteneurs, les pods et le service.
Aperçu
Ce tutoriel utilise un exemple de page d’inventaire qui comprend trois options de t-shirt différentes. L’utilisateur peut « acheter » chaque t-shirt et voir l’inventaire baisser. La particularité de cette démonstration est que nous exécutons l’application d’inventaire dans deux régions différentes. En règle générale, vous exécutez la base de données stockant les données d’inventaire dans une seule région afin d’éviter toute incohérence. Avec d’autres back-ends de bases de données et synchronisations, les clients peuvent avoir une expérience désagréable en raison d’une latence plus élevée pour les appels dans différentes régions Azure. Quand vous utilisez Azure Cache pour Redis Enterprise comme back-end, vous pouvez lier deux caches avec la géoréplication active afin que l’inventaire soit cohérent dans les deux régions tout en bénéficiant d’une faible latence de Redis Enterprise dans la même région.
Configurer deux instances Azure Redis
Créez une instance Azure Cache pour Redis Enterprise ou Azure Managed Redis dans la région USA Ouest 2 à l’aide du portail Azure ou de votre outil CLI préféré. Vous pouvez également utiliser une autre région. Utilisez le guide de démarrage rapide pour commencer.
Sous l’onglet Avancé :
- Activez Accès non TLS uniquement.
- Définissez Stratégie de clustering sur Entreprise.
- Configurez un nouveau groupe de géoréplication active en vous reportant à ce guide. Vous finirez par ajouter les deux caches au même groupe de réplication. Créez le nom du groupe avec le premier cache et ajoutez le deuxième cache au même groupe.
Important
Ce tutoriel utilise un port non TLS à des fins de démonstration, mais nous vous recommandons vivement d’utiliser un port TLS pour tout ce qui est en production.
Configurez une autre instance d’Azure Cache pour Redis Enterprise dans la région USA Est avec la même configuration que le premier cache. Vous pouvez également utiliser une autre région. Veillez à choisir le même groupe de réplication que celui sélectionné pour le premier cache.
Préparer les fichiers de déploiement Kubernetes
Créez deux fichiers .yml à l’aide de la procédure suivante (un fichier pour chaque cache créé dans les deux régions).
Pour illustrer la réplication des données entre les régions, nous exécutons deux instances de la même application dans différentes régions. Faisons en sorte qu’une instance s’exécute à Seattle (espace de noms west) et que l’autre instance s’exécute à New York (espace de noms east).
Espace de noms west
Modifiez les champs suivants dans le fichier YAML suivant et enregistrez-le sous app_west.yaml.
- Définissez la variable
REDIS_HOSTavec l’URL de Valeur du point de terminaison une fois le suffixe de port (10000) supprimé. - Définissez
REDIS_PASSWORDavec la Clé d’accès de votre cache USA Ouest 2. - Modifiez
APP_LOCATIONpour afficher la région dans laquelle cette instance d’application s’exécute. Pour ce cache, configurezAPP_LOCATIONsurSeattlepour indiquer que cette instance d’application s’exécute à Seattle. - Vérifiez que la variable
namespacea la valeurwestaux deux emplacements dans le fichier.
Votre code doit ressembler à ceci :
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: west
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoWest.westus2.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "Seattle, WA"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: west
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Espace de noms east
Enregistrez une autre copie du même fichier YAML sous app_east.yaml. Cette fois, utilisez les valeurs qui correspondent à votre deuxième cache.
- Définissez la variable
REDIS_HOSTavec la Valeur du point de terminaison une fois le suffixe de port (10000) supprimé. - Définissez
REDIS_PASSWORDavec la Clé d’accès de votre cache USA Est. - Modifiez
APP_LOCATIONpour afficher la région dans laquelle cette instance d’application s’exécute. Pour ce cache, configurezAPP_LOCATIONsur New York pour indiquer que cette instance d’application s’exécute à New York. - Vérifiez que la variable
namespacea la valeureastaux deux emplacements dans le fichier.
Votre code doit ressembler à ceci :
apiVersion: apps/v1
kind: Deployment
metadata:
name: shoppingcart-app
namespace: east
spec:
replicas: 1
selector:
matchLabels:
app: shoppingcart
template:
metadata:
labels:
app: shoppingcart
spec:
containers:
- name: demoapp
image: mcr.microsoft.com/azure-redis-cache/redisactivereplicationdemo:latest
resources:
limits:
cpu: "0.5"
memory: "250Mi"
requests:
cpu: "0.5"
memory: "128Mi"
env:
- name: REDIS_HOST
value: "DemoEast.eastus.redisenterprise.cache.azure.net"
- name: REDIS_PASSWORD
value: "myaccesskey"
- name: REDIS_PORT
value: "10000" # redis enterprise port
- name: HTTP_PORT
value: "8080"
- name: APP_LOCATION
value: "New York, NY"
---
apiVersion: v1
kind: Service
metadata:
name: shoppingcart-svc
namespace: east
spec:
type: LoadBalancer
ports:
- protocol: TCP
port: 80
targetPort: 8080
selector:
app: shoppingcart
Installer l’interface CLI Kubernetes et se connecter à votre cluster AKS
Dans cette section, vous allez d’abord installer l’interface CLI Kubernetes, puis vous connecter à un cluster AKS.
Remarque
Un cluster Azure Kubernetes Service est obligatoire pour ce tutoriel. Vous allez déployer les deux instances de l’application sur le même cluster AKS.
Installer l’interface de ligne de commande Kubernetes
Utilisez l’interface CLI Kubernetes, _kubectl, pour vous connecter au cluster Kubernetes à partir de votre ordinateur local. Dans le cadre d’une exécution locale, vous pouvez utiliser la commande suivante pour installer kubectl.
az aks install-cli
Si vous utilisez Azure Cloud Shell, kubectl est déjà installé et vous pouvez ignorer cette étape.
Se connecter à vos clusters AKS dans deux régions
Utilisez le portail pour copier le groupe de ressources et le nom de votre cluster AKS dans la région USA Ouest 2. Pour configurer kubectl pour qu’il se connecte à votre cluster AKS, utilisez la commande suivante avec votre groupe de ressources et le nom de votre cluster :
az aks get-credentials --resource-group myResourceGroup --name myClusterName
Vérifiez que vous êtes en mesure de vous connecter à votre cluster en exécutant la commande suivante :
kubectl get nodes
Vous devriez voir une sortie similaire affichant la liste des nœuds de votre cluster.
NAME STATUS ROLES AGE VERSION
aks-agentpool-21274953-vmss000001 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000003 Ready agent 1d v1.24.15
aks-agentpool-21274953-vmss000006 Ready agent 1d v1.24.15
Déployer et tester votre application
Vous avez besoin de deux espaces de noms pour que vos applications s’exécutent sur votre cluster AKS. Créez un espace de noms west, puis déployez l’application.
Exécutez la commande suivante pour déployer l’instance d’application sur votre cluster AKS dans l’espace de noms west :
kubectl create namespace west
kubectl apply -f app_west.yaml
Vous obtenez une réponse indiquant que votre déploiement et votre service ont été créés :
deployment.apps/shoppingcart-app created
service/shoppingcart-svc created
Pour tester l’application, exécutez la commande suivante pour vérifier si le pod est en cours d’exécution :
kubectl get pods -n west
Vous voyez que votre pod s’exécute comme suit :
NAME READY STATUS RESTARTS AGE
shoppingcart-app-5fffdcb5cd-48bl5 1/1 Running 0 68s
Exécutez la commande suivante pour obtenir le point de terminaison de votre application :
kubectl get service -n west
Vous verrez peut-être qu’EXTERNAL-IP a l’état <pending> pendant quelques minutes. Continuez à réessayer jusqu’à ce que l’état soit remplacé par une adresse IP.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
shoppingcart-svc LoadBalancer 10.0.166.147 20.69.136.105 80:30390/TCP 90s
Une fois EXTERNAL-IP disponible, ouvrez un navigateur web à l’adresse EXTERNAL-IP de votre service. Vous voyez alors l’application.
Exécutez les mêmes étapes de déploiement et déployez une instance de l’application de démonstration à exécuter dans la région USA Est.
kubectl create namespace east
kubectl apply -f app_east.yml
kubectl get pods -n east
kubectl get service -n east
Si vous ouvrez les deux services dans un navigateur, vous voyez qu’une modification de l’inventaire dans une région est presque instantanément répercutée dans l’autre région. Les données d’inventaire sont stockées dans les instances Redis Enterprise qui répliquent les données entre les régions.
Vous avez réussi. Cliquez sur les boutons et explorez la démonstration.
Pour réinitialiser le nombre d’articles, ajoutez /reset après l’URL :
<IP address>/reset
Nettoyer votre déploiement
Pour nettoyer le cluster, exécutez les commandes suivantes :
kubectl delete deployment shoppingcart-app -n west
kubectl delete service shoppingcart-svc -n west
kubectl delete deployment shoppingcart-app -n east
kubectl delete service shoppingcart-svc -n east
Nettoyer les ressources
Si vous souhaitez continuer à utiliser les ressources que vous avez créées dans cet article, conservez le groupe de ressources.
Sinon, si vous avez terminé avec les ressources, vous pouvez supprimer le groupe de ressources Azure que vous avez créé pour éviter les frais.
Important
La suppression d’un groupe de ressources est irréversible. Quand vous supprimez un groupe de ressources, toutes les ressources qu’il contient sont supprimées définitivement. Veillez à ne pas supprimer accidentellement des ressources ou un groupe de ressources incorrects. Si vous avez créé les ressources dans un groupe de ressources existant contenant des ressources que vous souhaitez conserver, vous pouvez supprimer chaque ressource individuellement, au lieu de supprimer l’intégralité du groupe de ressources.
Pour supprimer un groupe de ressources
Connectez-vous au Portail Azure, puis sélectionnez Groupes de ressources.
Recherchez le groupe de ressources à supprimer.
S’il existe de nombreux groupes de ressources, utilisez la zone Filtrer pour n’importe quel champ..., tapez le nom du groupe de ressources que vous avez créé pour cet article. Sélectionnez le groupe de ressources dans la liste des résultats.
Sélectionnez Supprimer le groupe de ressources.
Vous êtes invité à confirmer la suppression du groupe de ressources. Saisissez le nom de votre groupe de ressources pour confirmer, puis sélectionnez Supprimer.
Après quelques instants, le groupe de ressources et toutes ses ressources sont supprimés.