Cvičení – vylepšení aplikace pomocí objektů ConfigMap

Dokončeno

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

  1. 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',
          }
        })()
    
  2. Nahraďte {your-dns-zone} hodnotou proměnné ZONE_NAME, kterou jste vytvořili dříve.

  3. Soubor uložte a zavřete.

  4. Pomocí příkazu použijte změny v clusteru kubectl apply .

    kubectl apply -f configmap.yaml
    
  5. Pomocí příkazu zkontrolujte výsledek dotazem na objekt ConfigMap kubectl get configmap .

    kubectl get configmap ship-manager-config
    

Vytvoření aplikace

  1. 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á se subpath o název souboru uvnitř kontejneru.

  2. 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
    
  3. V příchozím přenosu dat nahraďte {your-dns-zone} hodnotou proměnné ZONE_NAME, kterou jste vytvořili dříve.

  4. Soubor uložte a zavřete.

  5. Nasaďte aplikaci pomocí kubectl apply příkazu.

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