Ćwiczenie — ulepszanie aplikacji za pomocą obiektów ConfigMap
Wdrożono zaplecze aplikacji, a teraz musisz wdrożyć fronton aplikacji przy użyciu narzędzia ConfigMap.
Przed rozpoczęciem
Uwaga
To ćwiczenie jest opcjonalne. Jeśli chcesz wykonać to ćwiczenie, przed rozpoczęciem musisz utworzyć subskrypcję platformy Azure. Jeśli nie masz konta platformy Azure lub nie chcesz go tworzyć w tej chwili, możesz zapoznać się z instrukcjami, aby zrozumieć prezentowane informacje.
Tworzenie obiektu ConfigMap
Utwórz nowy plik YAML o nazwie
configmap.yaml
i wklej następujący kod, aby utworzyć specyfikację 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', } })()
Zastąp
{your-dns-zone}
element wartością utworzonej wcześniej zmiennej ZONE_NAME.Zapisz i zamknij plik.
Zastosuj zmiany do klastra
kubectl apply
przy użyciu polecenia .kubectl apply -f configmap.yaml
Sprawdź wynik, wykonując zapytanie dotyczące obiektu ConfigMap przy użyciu
kubectl get configmap
polecenia .kubectl get configmap ship-manager-config
Tworzenie aplikacji
Utwórz nowy plik YAML o nazwie
frontend.yaml
i wklej następujący kod, aby utworzyć specyfikację wdrożenia: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 ---
Zwróć uwagę, jak obiekt ConfigMap jest zainstalowany w obiekcie Deployment. Nie określamy żadnych kluczy, co oznacza, że musimy określić
subPath
klucz. Jestsubpath
to nazwa pliku wewnątrz kontenera.Poniżej trzech łączników wklej następujący kod, aby utworzyć specyfikacje usługi i ruchu przychodzącego:
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
Zastąp
{your-dns-zone}
element w ruchu przychodzącym wartością utworzonej wcześniej zmiennej ZONE_NAME.Zapisz i zamknij plik.
Wdróż aplikację przy użyciu
kubectl apply
polecenia .kubectl apply -f frontend.yaml
Sprawdź wynik, wykonując zapytanie względem interfejsu API platformy Kubernetes przy użyciu
kubectl get deployment
polecenia .kubectl get deployment contoso-ship-manager-frontend
Gdy interfejs API jest dostępny, powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s