Esercizio - Migliorare l'applicazione con gli oggetti ConfigMap
Il back-end dell'applicazione è stato distribuito e ora è necessario distribuire il front-end dell'applicazione usando un oggetto ConfigMap.
Prima di iniziare
Nota
Questo esercizio è facoltativo. Per completare questo esercizio, sarà necessario creare una sottoscrizione di Azure prima di iniziare. Se non si dispone di un account Azure o non si vuole crearne uno in questo momento, è possibile leggere le istruzioni per avere un'idea delle informazioni contenute.
Creare un oggetto ConfigMap
Creare un nuovo file YAML denominato
configmap.yaml
e incollarlo nel codice seguente per creare la specifica 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', } })()
Sostituisci
{your-dns-zone}
con il valore della variabile ZONE_NAME creata in precedenza.Salva e chiudi il file.
Applicare le modifiche al cluster usando il comando
kubectl apply
.kubectl apply -f configmap.yaml
Controllare il risultato eseguendo una query per ConfigMap usando il comando
kubectl get configmap
.kubectl get configmap ship-manager-config
Creare l'applicazione
Creare un nuovo file YAML denominato
frontend.yaml
e incollare il codice seguente per creare la specifica di distribuzione: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 ---
ConfigMap viene montato nell'oggetto Deployment. Non si specificano chiavi, il che significa che è necessario specificare una chiave
subPath
.subpath
è il nome file all'interno del contenitore.Sotto i tre trattini incollare il codice seguente per creare le specifiche di servizio e in ingresso:
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
Sostituisci
{your-dns-zone}
in Ingresso con il valore della variabile ZONE_NAME creata in precedenza.Salva e chiudi il file.
Distribuire l'applicazione usando il comando
kubectl apply
.kubectl apply -f frontend.yaml
Controlla il risultato eseguendo una query dell'API Kubernetes usando il comando
kubectl get deployment
.kubectl get deployment contoso-ship-manager-frontend
Quando l'API è disponibile, verrà restituito un output simile al seguente esempio:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s