Ćwiczenie — ulepszanie aplikacji za pomocą obiektów ConfigMap

Ukończone

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

  1. 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',
          }
        })()
    
  2. Zastąp {your-dns-zone} element wartością utworzonej wcześniej zmiennej ZONE_NAME.

  3. Zapisz i zamknij plik.

  4. Zastosuj zmiany do klastra kubectl apply przy użyciu polecenia .

    kubectl apply -f configmap.yaml
    
  5. Sprawdź wynik, wykonując zapytanie dotyczące obiektu ConfigMap przy użyciu kubectl get configmap polecenia .

    kubectl get configmap ship-manager-config
    

Tworzenie aplikacji

  1. 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. Jest subpath to nazwa pliku wewnątrz kontenera.

  2. 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
    
  3. Zastąp {your-dns-zone} element w ruchu przychodzącym wartością utworzonej wcześniej zmiennej ZONE_NAME.

  4. Zapisz i zamknij plik.

  5. Wdróż aplikację przy użyciu kubectl apply polecenia .

    kubectl apply -f frontend.yaml
    
  6. 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