Alıştırma - Uygulamayı ConfigMap'lerle iyileştirme

Tamamlandı

Uygulama arka ucunu dağıttınız ve şimdi ConfigMap kullanarak uygulama ön ucunu dağıtmanız gerekiyor.

Başlamadan önce

Not

Bu alıştırma isteğe bağlıdır. Bu alıştırmayı tamamlamak istiyorsanız başlamadan önce bir Azure aboneliği oluşturmanız gerekir. Azure hesabınız yoksa veya şu anda bir hesap oluşturmak istemiyorsanız, sunulan bilgileri anlamak için yönergeleri okuyabilirsiniz.

ConfigMap oluşturma

  1. ConfigMap belirtimini oluşturmak için adlı configmap.yaml yeni bir YAML dosyası oluşturun ve aşağıdaki kodu yapıştırın:

    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. değerini daha önce oluşturduğunuz ZONE_NAME değişkeninin değeriyle değiştirin {your-dns-zone} .

  3. Dosyayı kaydedip kapatın

  4. komutunu kullanarak kubectl apply değişiklikleri kümenize uygulayın.

    kubectl apply -f configmap.yaml
    
  5. komutunu kullanarak kubectl get configmap ConfigMap'i sorgulayarak sonucu denetleyin.

    kubectl get configmap ship-manager-config
    

Uygulamayı oluşturma

  1. Adlı frontend.yaml yeni bir YAML dosyası oluşturun ve Dağıtım belirtimini oluşturmak için aşağıdaki kodu yapıştırın:

    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'in Dağıtım nesnesine nasıl bağlan olduğuna dikkat edin. Herhangi bir anahtar belirtmediğimiz için bir subPath anahtar belirtmemiz gerekir. subpath kapsayıcısının içindeki dosya adıdır.

  2. Üç tirenin altına aşağıdaki kodu yapıştırarak Hizmet ve Giriş belirtimlerini oluşturun:

    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. Giriş içindeki değerini daha önce oluşturduğunuz ZONE_NAME değişkeninin değeriyle değiştirin {your-dns-zone} .

  4. Dosyayı kaydedip kapatın

  5. komutunu kullanarak uygulamayı dağıtın kubectl apply .

    kubectl apply -f frontend.yaml
    
  6. komutunu kullanarak Kubernetes API'sini kubectl get deployment sorgulayarak sonucu denetleyin.

    kubectl get deployment contoso-ship-manager-frontend
    

    API kullanılabilir olduğunda aşağıdaki örneğe benzer bir çıkış almanız gerekir:

    NAME                           READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-ship-manager-frontend  1/1     1            1           18s