Latihan - Simpan variabel dengan aman dalam rahasia

Selesai

Membuat grup sumber daya dan kluster AKS

Catatan

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 sekarang, Anda dapat membaca petunjuk agar Anda memahami informasi yang sedang diberikan.

  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 az group create perintah .

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

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

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

    Catatan

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

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

    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 az aks get-credentials perintah .

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

Membuat Rahasia

Catatan

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 MongoDB string koneksi sebagai variabel lingkungan.

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

    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 az cosmosdb keys list perintah 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 dalam 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 kubectl apply perintah .

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

    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
    

Buat aplikasi

  1. Buat file YAML baru bernama backend-application.yaml dan tempelkan dalam 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 tersebut env , kami menggunakan valueFrom kunci dan secretKeyRef . Urutan kunci ini memberi tahu penyebaran untuk menggunakan nilai dari yang key ada di Rahasia yang ditentukan dalam name kunci.

  2. Tambahkan tiga tanda hubung di bawah baris terakhir dalam backend-application.yaml file 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 kubectl apply perintah .

    kubectl apply -f backend-application.yaml