Exercice - Améliorer l’application avec des ConfigMaps
Vous avez déployé le back end de l'application et vous devez maintenant déployer le front-end de l'application à l'aide d'un ConfigMap.
Avant de commencer
Notes
Cet exercice est facultatif. Si vous souhaitez effectuer cet exercice, vous devrez créer un abonnement Azure avant de commencer. Si vous n’avez pas de compte Azure ou si vous ne souhaitez pas en créer un pour l’instant, vous pouvez lire les instructions pour comprendre les informations qui sont présentées.
Créer un ConfigMap
Créez un fichier YAML nommé
configmap.yaml
et collez-le dans le code suivant pour créer la spécification ConfigMap :apiVersion: v1 kind: ConfigMap metadata: name: ship-manager-config namespace: default data: config.js: | const config = (() => { return { 'VUE_APP_BACKEND_BASE_URL': 'http://ship-manager-backend.{your-dns-zone}.aksapp.io', } })()
Remplacez
{your-dns-zone}
par la valeur de la variable ZONE_NAME que vous avez créée précédemment.Enregistrez et fermez le fichier.
Appliquez les modifications à votre cluster en utilisant la commande
kubectl apply
.kubectl apply -f configmap.yaml
Vérifiez le résultat en interrogeant le ConfigMap à l’aide de la commande
kubectl get configmap
.kubectl get configmap ship-manager-config
Création de l'application
Créez un fichier YAML nommé
frontend.yaml
et collez-le dans le code suivant pour créer la spécification de déploiement :apiVersion: apps/v1 kind: Deployment metadata: name: contoso-ship-manager-frontend namespace: default spec: replicas: 1 selector: matchLabels: app: contoso-ship-manager-frontend template: metadata: labels: app: contoso-ship-manager-frontend spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-ship-manager:frontend name: contoso-ship-manager-frontend ports: - containerPort: 80 name: http volumeMounts: - name: config mountPath: /usr/src/app/dist/config.js subPath: config.js volumes: - name: config configMap: name: ship-manager-config ---
Notez que le ConfigMap est monté dans l’objet de déploiement. Nous ne spécifions aucune clé, ce qui signifie que nous devons spécifier une clé
subPath
. Lesubpath
est le nom du fichier dans le conteneur.Sous les trois tirets, collez le code suivant pour créer les spécifications de service et d’entrée :
apiVersion: v1 kind: Service metadata: name: contoso-ship-manager-frontend namespace: default spec: selector: app: contoso-ship-manager-frontend ports: - name: http port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: contoso-ship-manager-frontend namespace: default annotations: spec.ingressClassName: webapprouting.kubernetes.azure.com spec: rules: - host: contoso-ship-manager.{your-dns-zone}.aksapp.io http: paths: - path: / pathType: Prefix backend: service: name: contoso-ship-manager-frontend port: name: http
Remplacez
{your-dns-zone}
dans l’entrée par la valeur de la variable ZONE_NAME que vous avez créée précédemment.Enregistrez et fermez le fichier.
Déployez l’application à l’aide de la commande
kubectl apply
.kubectl apply -f frontend.yaml
Vérifiez le résultat en interrogeant l’API Kubernetes à l’aide de la commande
kubectl get deployment
.kubectl get deployment contoso-ship-manager-frontend
Lorsque l’API est disponible, vous devez obtenir une sortie similaire à l’exemple suivant :
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s