Ejercicio: Mejora de la aplicación con objetos ConfigMap
Ha implementado el back-end de la aplicación y ahora debe implementar el front-end mediante un objeto ConfigMap.
Antes de empezar
Nota
Este ejercicio es opcional. Si le interesa completar este ejercicio, deberá crear una suscripción de Azure antes de empezar. Si no tiene una cuenta de Azure o no quiere crear una en este momento, puede leer las instrucciones para comprender la información que se está presentando.
Creación de un objeto ConfigMap
Cree un nuevo archivo YAML denominado
configmap.yaml
y pegue el siguiente código para crear la especificación 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', } })()
Reemplace
{your-dns-zone}
por el valor de la variable ZONE_NAME que creó anteriormente.Guarde y cierre el archivo.
Aplique los cambios al clúster mediante el comando
kubectl apply
.kubectl apply -f configmap.yaml
Para comprobar el resultado, consulte ConfigMap mediante el comando
kubectl get configmap
.kubectl get configmap ship-manager-config
Crear la aplicación
Cree un nuevo archivo YAML denominado
frontend.yaml
y pegue el siguiente código para crear la especificación Deployment: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 ---
Observe cómo está montado el objeto ConfigMap en el objeto Deployment. No se especifica ninguna clave, lo que significa que es necesario especificar una clave
subPath
.subpath
es el nombre de archivo dentro del contenedor.Debajo de los tres guiones, pegue el siguiente código para crear las especificaciones de Service e Ingress:
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
Reemplace
{your-dns-zone}
en la entrada por el valor de la variable ZONE_NAME que creó anteriormente.Guarde y cierre el archivo.
Implemente la aplicación mediante el comando
kubectl apply
.kubectl apply -f frontend.yaml
Compruebe el resultado consultando la API de Kubernetes mediante el comando
kubectl get deployment
.kubectl get deployment contoso-ship-manager-frontend
Cuando la API esté disponible, debería obtener una salida similar al siguiente ejemplo:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s