Latihan - Menyimpan variabel dengan aman dalam rahasia

Selesai

Membuat grup sumber daya dan kluster AKS

Nota

Latihan ini bersifat opsional. Jika Anda ingin menyelesaikan latihan ini, Anda harus membuat langganan Azure sebelum memulai. Jika Anda tidak memiliki akun Azure atau tidak ingin membuatnya saat ini, Anda dapat membaca instruksi sehingga Anda memahami informasi yang sedang disajikan.

  1. Buat variabel lingkungan untuk grup sumber daya, kluster, zona DNS, dan lokasi Anda. Pastikan Anda memperbarui variabel LOCATION dengan wilayah yang paling dekat dengan Anda, misalnya, eastus.

    export RESOURCE_GROUP=rg-ship-manager
    export CLUSTER_NAME=ship-manager-cluster
    export ZONE_NAME=ship-$RANDOM.com
    export LOCATION={location}
    
  2. Jalankan perintah berikut untuk melihat nilai variabel lingkungan Anda dan catat untuk digunakan nanti.

    echo "RESOURCE_GROUP:" $RESOURCE_GROUP
    echo "CLUSTER_NAME:"$CLUSTER_NAME
    echo "ZONE_NAME:" $ZONE_NAME
    echo "LOCATION:"$LOCATION
    
  3. Buat grup sumber daya menggunakan perintah az group create.

    az group create --location $LOCATION --name $RESOURCE_GROUP
    
  4. Buat kluster AKS menggunakan perintah az aks create.

    az aks create \
     -g $RESOURCE_GROUP \
     -n $CLUSTER_NAME \
     --location $LOCATION \
     --node-count 1 \
     --node-vm-size Standard_B2s \
     --generate-ssh-keys
    
  5. Aktifkan plugin perutean aplikasi dengan perintah berikut.

    az aks approuting enable -g $RESOURCE_GROUP -n $CLUSTER_NAME
    

    Nota

    Jika Anda melihat pesan yang meminta Anda menginstal ekstensi aks-preview, masukkan Y untuk menginstalnya dan melanjutkan.

  6. Buat zona DNS menggunakan perintah az network dns zone create.

    az network dns zone create -g $RESOURCE_GROUP -n $ZONE_NAME
    
  7. Ambil ID zona DNS Anda dan gunakan sebagai bagian dari perintah untuk menambahkan zona ke kluster Anda untuk perutean aplikasi.

    ZONEID=$(az network dns zone show -g $RESOURCE_GROUP -n $ZONE_NAME --query "id" --output tsv)
    az aks approuting zone add -g $RESOURCE_GROUP -n $CLUSTER_NAME --ids=${ZONEID} --attach-zones
    
  8. Dapatkan kredensial untuk kluster Anda menggunakan perintah az aks get-credentials.

    az aks get-credentials -n $CLUSTER_NAME -g $RESOURCE_GROUP
    

Membuat Rahasia

Nota

Dalam dokumentasi aplikasi , Anda dapat melihat aplikasi ini memiliki dua bagian: ujung depan dan ujung belakang. Hanya back end yang perlu menggunakan Rahasia, karena memiliki string koneksi MongoDB sebagai variabel lingkungan.

  1. Sebarkan database MongoDB untuk mendukung aplikasi menggunakan perintah az cosmosdb create.

    export DATABASE_NAME=contoso-ship-manager-$RANDOM && \
    az cosmosdb create \
     -n $DATABASE_NAME \
     -g $RESOURCE_GROUP \
     --kind MongoDB
    
  2. Setelah database dibuat, dapatkan string koneksi menggunakan perintah az cosmosdb keys list dan salin nilai output.

    az cosmosdb keys list \
      --type connection-strings \
      -g $RESOURCE_GROUP \
      -n $DATABASE_NAME \
      -o tsv \
      --query "connectionStrings[0].connectionString"
    
  3. Buat file YAML baru bernama backend-secret.yaml dan tempelkan kode berikut untuk membuat spesifikasi Rahasia. Pastikan untuk mengganti string tempat penampung dengan string koneksi dari output sebelumnya.

    apiVersion: v1
    kind: Secret
    metadata:
      name: ship-manager-database
      namespace: default
    type: Opaque
    stringData:
      database_mongodb_uri: "<paste the connection string here>"
    
  4. Simpan dan tutup file.

  5. Terapkan rahasia menggunakan perintah kubectl apply.

    kubectl apply -f backend-secret.yaml
    
  6. Periksa hasilnya dengan mengkueri rahasia menggunakan perintah kubectl get secret.

    kubectl get secret ship-manager-database
    

    Anda harus mendapatkan output yang mirip dengan contoh berikut:

    NAME                    TYPE     DATA   AGE
    ship-manager-database   Opaque   1      5s
    

Membuat aplikasi

  1. Buat file YAML baru bernama backend-application.yaml dan tempelkan kode berikut untuk membuat spesifikasi Penyebaran.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ship-manager-backend
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ship-manager-backend
      template:
        metadata:
          labels:
            app: ship-manager-backend
        spec:
          containers:
            - image: mcr.microsoft.com/mslearn/samples/contoso-ship-manager:backend
              name: ship-manager-backend
              ports:
                - containerPort: 3000
                  name: http
              env:
                - name: DATABASE_MONGODB_URI
                  valueFrom:
                    secretKeyRef:
                      key: database_mongodb_uri
                      name: ship-manager-database
                - name: DATABASE_MONGODB_DBNAME
                  value: ship_manager
    

    Perhatikan bahwa di bagian env, kami menggunakan valueFrom dan kunci secretKeyRef. Urutan kunci ini memberi tahu penyebaran untuk menggunakan nilai dari key yang ada di Secret yang ditentukan dalam kunci name.

  2. Tambahkan tiga tanda hubung di bawah baris terakhir dalam file backend-application.yaml untuk memisahkan bagian berikutnya.

    # Previous lines from the deployment
    value: ship_manager
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: ship-manager-backend
      namespace: default
    spec:
      selector:
        app: ship-manager-backend
      ports:
        - name: http
          port: 80
          targetPort: 3000
    ---
    
  3. Di bawah tiga tanda hubung, tempelkan kode berikut untuk membuat spesifikasi Ingress.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ship-manager-backend
      namespace: default
      annotations:
        spec.ingressClassName: webapprouting.kubernetes.azure.com
    spec:
      rules:
        - host: ship-manager-backend.<paste the ZONE_NAME here>
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: ship-manager-backend
                    port:
                      name: http
    
  4. Ubah zona DNS di host: agar sesuai dengan nama zona DNS Anda. Gunakan nilai variabel ZONE_NAME yang Anda buat sebelumnya.

  5. Simpan dan tutup file.

  6. Terapkan perubahan pada kluster Anda menggunakan perintah kubectl apply.

    kubectl apply -f backend-application.yaml