Cvičení – vylepšení aplikace pomocí objektů ConfigMap
Nasadili jste back-end aplikace a teď potřebujete nasadit front-end aplikace pomocí objektu ConfigMap.
Než začneme
Poznámka:
Toto cvičení není povinné. Pokud chcete absolvovat toto cvičení, budete muset před zahájením vytvořit předplatné Azure. Pokud nemáte účet Azure nebo ho v tuto chvíli nechcete vytvořit, můžete si přečíst pokyny, abyste porozuměli zobrazeným informacím.
Vytvoření objektu ConfigMap
Vytvořte nový soubor YAML s názvem
configmap.yaml
a vložte následující kód, který vytvoří specifikaci 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', } })()
Nahraďte
{your-dns-zone}
hodnotou proměnné ZONE_NAME, kterou jste vytvořili dříve.Soubor uložte a zavřete.
Pomocí příkazu použijte změny v clusteru
kubectl apply
.kubectl apply -f configmap.yaml
Pomocí příkazu zkontrolujte výsledek dotazem na objekt ConfigMap
kubectl get configmap
.kubectl get configmap ship-manager-config
Vytvoření aplikace
Vytvořte nový soubor YAML s názvem
frontend.yaml
a vložte následující kód, který vytvoří specifikaci nasazení: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 ---
Všimněte si, jak je objekt ConfigMap připojen v objektu Nasazení. Nezadáváme žádné klíče, což znamená, že musíme zadat
subPath
klíč. Jedná sesubpath
o název souboru uvnitř kontejneru.Pod tři pomlčky vložte následující kód a vytvořte specifikace služby a příchozího přenosu dat:
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
V příchozím přenosu dat nahraďte
{your-dns-zone}
hodnotou proměnné ZONE_NAME, kterou jste vytvořili dříve.Soubor uložte a zavřete.
Nasaďte aplikaci pomocí
kubectl apply
příkazu.kubectl apply -f frontend.yaml
Pomocí příkazu zkontrolujte výsledek dotazováním rozhraní API
kubectl get deployment
Kubernetes.kubectl get deployment contoso-ship-manager-frontend
Pokud je rozhraní API k dispozici, měli byste získat výstup podobný následujícímu příkladu:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s