Menggunakan wasmCloud di Azure Kubernetes Service (AKS)

Komponen WebAssembly adalah cara baru untuk membangun dan menyebarkan aplikasi. Mereka dirancang untuk menjadi target kompilasi portabel untuk bahasa pemrograman dan dapat berjalan di berbagai lingkungan. Komponen WebAssembly diisolasi secara desain dan mengekspos fungsionalitasnya menggunakan antarmuka yang ditentukan. Komponen berbeda dari kontainer karena mereka merupakan biner individu yang ukurannya jauh lebih kecil dan mulai lebih cepat. Temukan deskripsi lengkap model serta komponen yang ada dalam spesifikasi.

wasmCloud adalah proyek Cloud Native Computing Foundation (CNCF) yang dirancang untuk melacak cepat pengembangan, penyebaran, dan orkestrasi komponen WebAssembly. Dokumen ini merinci instruksi tentang cara menyebarkan wasmCloud pada kluster Azure Kubernetes Service (AKS).

Sebelum Anda mulai

Prasyarat

  • Anda tidak dapat menggunakan portal Microsoft Azure untuk menyebarkan wasmCloud ke kluster AKS.

Menerapkan wasmCloud

Untuk menyebarkan wasmCloud pada kluster AKS, Anda perlu menginstal all-in-one Helm chart ke dalam kluster Anda. Ini menginstalasi layanan berikut ke dalam satu namespace:

  • NATS: NATS menyediakan tulang punggung untuk semua komunikasi antar komponen di wasmCloud.
  • wadm: WasmCloud Application Manager, atau dikenal sebagai wadm adalah orkestrator untuk mengelola aplikasi yang berjalan di atas wasmCloud.
  • Operator wasmCloud: Operator wasmCloud adalah operator Kubernetes yang mengelola siklus hidup host wasmCloud.

Sebaiknya sebarkan wasmCloud ke dalam namespace Kubernetes khusus.

  1. Buat namespace untuk wasmCloud menggunakan kubectl:

    kubectl create namespace wasmcloud
    
  2. Instal NATS dan wadm ke namespace wasmCloud menggunakan helm upgrade perintah :

    # By default, the chart installs NATS, Wadm, and wasmCloud Operator subcharts
     helm upgrade --install \
          wasmcloud-platform \
          --values https://raw.githubusercontent.com/wasmCloud/wasmcloud/main/charts/wasmcloud-platform/values.yaml \
          oci://ghcr.io/wasmcloud/charts/wasmcloud-platform:0.1.2 \
          --dependency-update
    

    Output dari perintah ini akan terlihat mirip dengan yang berikut ini:

    NAME: wasmcloud-platform
    LAST DEPLOYED: Thu Nov  7 14:58:54 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    
  3. Tunggu semua pod mulai menggunakan kubectl:

    kubectl rollout status deploy,sts -l app.kubernetes.io/name=nats
    kubectl wait --for=condition=available --timeout=600s deploy -l app.kubernetes.io/name=wadm
    kubectl wait --for=condition=available --timeout=600s deploy -l app.kubernetes.io/name=wasmcloud-operator
    
  4. Mulai host wasmCloud menggunakan CRD dan kubectl:

    cat << EOF | kubectl apply -f -
    apiVersion: k8s.wasmcloud.dev/v1alpha1
    kind: WasmCloudHostConfig
    metadata:
      name: wasmcloud-host
    spec:
      lattice: default
      version: "1.4.1"
    EOF
    
    
  5. Verifikasi bahwa host wasmCloud sedang berjalan:

    kubectl get pod -l app.kubernetes.io/instance=wasmcloud-host
    

    Output Anda akan terlihat mirip dengan yang berikut ini:

    NAME                             READY   STATUS    RESTARTS   AGE
    wasmcloud-host-f9d67b8cf-lvsq6   2/2     Running   0          84s
    
  6. Verifikasi bahwa Anda dapat terhubung ke host wasmCloud menggunakan wash:

    Dalam shell terpisah, jalankan perintah berikut untuk melakukan port forwarding ke salah satu pod NATS yang aktif:

    kubectl port-forward nats-0 4222
    

    Perintah ini meneruskan semua lalu lintas pada port 4222 secara lokal ke pod NATS yang berjalan di kluster Anda. Anda harus meneruskan port ini untuk terhubung ke wasmCloud menggunakan wash.

    Di shell asli Anda, jalankan perintah berikut dengan wash untuk memverifikasi bahwa host wasmCloud Anda sedang berjalan:

    wash get hosts
    

    Output Anda akan terlihat mirip dengan yang berikut ini:

      Host ID                                                      Friendly name           Uptime (seconds)
      ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ     frosty-resonance-6227   312
    

Menyebarkan aplikasi wasmCloud

Setelah wasmCloud berjalan di kluster AKS, Anda dapat menyebarkan aplikasi wasmCloud. Aplikasi wasmCloud adalah kumpulan komponen WebAssembly yang diorkestrasi oleh Manajer Aplikasi wasmCloud (wadm).

  1. Buat file manifes aplikasi wasmCloud. File ini menjelaskan komponen yang terdiri dari aplikasi Anda. Simpan file yaml berikut sebagai hello-world.yaml.

    apiVersion: core.oam.dev/v1beta1
    kind: Application
    metadata:
      name: hello-world
      annotations:
        description: 'HTTP hello world demo in Rust, using the WebAssembly Component Model and WebAssembly Interfaces Types (WIT)'
    spec:
      components:
        - name: http-component
          type: component
          properties:
            image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0
          traits:
            # Govern the spread/scheduling of the component
            - type: spreadscaler
              properties:
                instances: 1
    
        # Add a capability provider that enables HTTP access
        - name: httpserver
          type: capability
          properties:
            image: ghcr.io/wasmcloud/http-server:0.23.2
          traits:
            # Establish a unidirectional link from this http server provider (the "source")
            # to the `http-component` component (the "target") so the component can handle incoming HTTP requests,
            #
            # The source (this provider) is configured such that the HTTP server listens on 0.0.0.0:8080
            - type: link
              properties:
                target: http-component
                namespace: wasi
                package: http
                interfaces: [incoming-handler]
                source_config:
                  - name: default-http
                    properties:
                      address: 0.0.0.0:8080
    
  2. Sebarkan aplikasi wasmCloud menggunakan wash:

    wash app deploy hello-world.yaml
    

    Output Anda akan terlihat mirip dengan yang berikut ini:

    Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"
    
  3. Verifikasi bahwa aplikasi berjalan menggunakan wash:

    wash app status hello-world
    

    Output Anda akan terlihat mirip dengan yang berikut ini:

    Name                                         Kind           Status
    http_component                               SpreadScaler   Deployed
    httpserver -(wasi:http)-> http_component     LinkScaler     Deployed
    httpserver                                   SpreadScaler   Deployed
    

    Ulangi perintah ini jika perlu hingga semua komponen berada dalam status Deployed .

  4. Panggil komponen http menggunakan curl dan kubectl port-forward:

    Di shell terpisah, jalankan perintah berikut untuk membuka port ke aplikasi hello-world

    kubectl port-forward port-forward deployment/wasmcloud-host 8080
    

    Perintah ini meneruskan semua lalu lintas pada port 8080 secara lokal ke host wasmCloud yang berjalan di kluster Anda. Anda harus meneruskan port ini untuk terhubung ke wasmCloud menggunakan curl.

    Di shell asli Anda, jalankan perintah berikut untuk memanggil komponen http:

    curl http://localhost:8080
    

    Output Anda akan terlihat mirip dengan yang berikut ini:

    Hello from Rust!
    
  5. Membersihkan sumber daya yang terinstal

    Untuk membersihkan sumber daya yang Anda buat, jalankan perintah berikut:

    kubectl delete namespace wasmcloud
    

    Perintah ini menghapus komponen wasmCloud dari kluster AKS Anda.

Langkah berikutnya

Anda dapat terus belajar dengan mengikuti Panduan Mulai Cepat wasmCloud, yang memandu Anda dalam membuat komponen WebAssembly dari awal, menggunakan berbagai kemampuan wasmCloud, dan menskalakan aplikasi Anda.