Mulai Cepat: Menyebarkan aplikasi menggunakan ekstensi kluster Dapr untuk Azure Kubernetes Service (AKS) atau Kubernetes berbasis Arc

Dalam mulai cepat ini, Anda menggunakan ekstensi kluster Dapr di kluster Kube yang didukung AKS atau Arc. Anda menyebarkan hello world contoh, yang terdiri dari aplikasi Python yang menghasilkan pesan dan aplikasi node yang mengonsumsi dan mempertahankan pesan.

Prasyarat

Mengklon repositori

  1. Kloning repositori mulai cepat Dapr menggunakan git clone perintah .

    git clone https://github.com/dapr/quickstarts.git
    
  2. Ubah ke hello-kubernetes direktori menggunakan cd.

    cd quickstarts/tutorials/hello-kubernetes/
    

Membuat dan mengonfigurasi toko negara

Dapr dapat menggunakan berbagai penyimpanan status, seperti Redis, Azure Cosmos DB, DynamoDB, dan Cassandra, untuk bertahan dan mengambil status. Untuk contoh ini, kami menggunakan Redis.

Membuat cache Redis

  1. Buka portal Azure untuk memulai alur pembuatan Azure Cache for Redis.

  2. Isi informasi yang diperlukan.

  3. Pilih Buat untuk memulai penyebaran instans Redis.

  4. Perhatikan nama host instans Redis Anda, yang dapat Anda ambil dari bagian Gambaran Umum di Azure. Nama host mungkin mirip dengan contoh berikut: xxxxxx.redis.cache.windows.net:6380.

  5. Di bawah Pengaturan, navigasikan ke Kunci akses untuk mendapatkan kunci akses Anda.

  6. Buat rahasia Kubernetes untuk menyimpan kata sandi Redis Anda menggunakan kubectl create secret generic redis perintah .

    kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
    

Mengonfigurasi komponen Dapr

Setelah penyimpanan dibuat, Anda perlu menambahkan kunci ke redis.yaml file di direktori penyebaran repositori Halo Dunia. Pelajari lebih lanjut di sini:

  1. redisHost Ganti nilai dengan alamat master Redis Anda sendiri.

  2. redisPassword Ganti dengan Rahasia Anda sendiri.

  3. Tambahkan dua baris berikut di bawah ini redisPassword untuk mengaktifkan koneksi melalui TLS

    - name: redisPassword
        secretKeyRef:
          name: redis
          key: redis-password
    - name: enableTLS
      value: true
    

Terapkan konfigurasi

  1. Terapkan redis.yaml file menggunakan kubectl apply perintah .

    kubectl apply -f ./deploy/redis.yaml
    
  2. Pastikan penyimpanan status Anda berhasil dikonfigurasi menggunakan kubectl get components.redis perintah .

    kubectl get components.redis -o yaml
    

    Anda akan melihat output yang mirip dengan contoh output berikut:

    component.dapr.io/statestore created
    

Terapkan aplikasi Node.js dengan sidecar Dapr

  1. Terapkan penyebaran aplikasi Node.js ke kluster Anda menggunakan kubectl apply perintah .

    kubectl apply -f ./deploy/node.yaml
    

    Catatan

    Penyebaran Kubernetes bersifat asinkron, yang berarti Anda perlu menunggu penyebaran selesai sebelum melanjutkan ke langkah berikutnya. Anda bisa melakukannya dengan perintah berikut:

    kubectl rollout status deploy/nodeapp
    

    Ini menyebarkan aplikasi Node.js ke Kubernetes. Sarana kontrol Dapr secara otomatis menyuntikkan sidecar Dapr ke Pod. Jika Anda melihat node.yaml file, Anda akan melihat bagaimana Dapr diaktifkan untuk penyebaran tersebut:

    • dapr.io/enabled: true: memberi tahu sarana kontrol Dapr untuk menyuntikkan sespan ke penyebaran ini.
    • dapr.io/app-id: nodeapp: menetapkan ID atau nama unik ke aplikasi Dapr, sehingga dapat dikirimi pesan ke dan dikomunikasikan dengan aplikasi Dapr lainnya.
  2. Akses layanan Anda menggunakan kubectl get svc perintah .

    kubectl get svc nodeapp
    
  3. Catat EXTERNAL-IP dalam output.

Verifikasi layanan

  1. Hubungi layanan menggunakan curl dengan .EXTERNAL-IP

    curl $EXTERNAL_IP/ports
    

    Anda akan melihat output yang mirip dengan contoh output berikut:

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Kirim pesanan ke aplikasi menggunakan curl.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Konfirmasikan pesanan telah bertahan dengan memintanya menggunakan curl.

    curl $EXTERNAL_IP/order
    

    Anda akan melihat output yang mirip dengan contoh output berikut:

    { "orderId": "42" }
    

Terapkan aplikasi Node.js dengan sidecar Dapr

  1. Navigasikan ke direktori aplikasi Python di hello-kubernetes quickstart dan buka app.py .

    Contoh ini adalah aplikasi Python dasar yang memposting pesan JSON ke localhost:3500, yang merupakan port mendengarkan default untuk Dapr. Anda dapat meminta titik akhir aplikasi Node.js dengan neworder memposting ke v1.0/invoke/nodeapp/method/neworder . Pesan berisi beberapa data dengan orderId peningkatan sekali per detik:

    n = 0
    while True:
        n += 1
        message = {"data": {"orderId": n}}
    
        try:
            response = requests.post(dapr_url, json=message)
        except Exception as e:
            print(e)
    
        time.sleep(1)
    
  2. Sebarkan aplikasi Python ke kluster Kubernetes menggunakan kubectl apply perintah .

    kubectl apply -f ./deploy/python.yaml
    

    Catatan

    Seperti perintah sebelumnya, Anda perlu menunggu penyebaran selesai sebelum melanjutkan ke langkah berikutnya. Anda bisa melakukannya dengan perintah berikut:

    kubectl rollout status deploy/pythonapp
    

Amati pesan dan konfirmasi kegigihan

Sekarang setelah aplikasi Node.js dan Python disebarkan, Anda menonton pesan masuk.

  1. Dapatkan log aplikasi Node.js menggunakan kubectl logs perintah .

    kubectl logs --selector=app=node -c node --tail=-1
    

    Jika penyebaran berhasil, Anda akan melihat log seperti contoh log berikut:

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Panggil titik akhir pesanan aplikasi Node.js untuk mendapatkan pesanan terbaru menggunakan curl.

    curl $EXTERNAL_IP/order
    {"orderID":"42"}
    

    Anda harus melihat JSON terbaru dalam jawabannya.

Membersihkan sumber daya

  • Hapus grup sumber daya, kluster, namespace layanan, dan semua sumber daya terkait menggunakan perintah az group delete .

    az group delete --name MyResourceGroup
    

Langkah berikutnya