Azure Kubernetes Service'te (AKS) wasmCloud kullanma

WebAssembly bileşenleri, uygulama derlemenin ve dağıtmanın yeni bir yoludur. Bunlar, programlama dilleri için taşınabilir bir derleme hedefi olacak şekilde tasarlanmıştır ve çeşitli ortamlarda çalıştırılabilir. WebAssembly bileşenleri tasarımı gereği izoledir ve işlevlerini tanımlı arabirimler aracılığıyla kullanıma sunar. Bileşenler kapsayıcılardan farklıdır ve bunlar çok daha küçük ve başlatılması daha hızlı olan tek ikili dosyalardır. Modelin tam açıklamasını ve belirtimdeki bileşeni bulun.

wasmCloud , WebAssembly bileşenlerinin geliştirilmesini, dağıtımını ve düzenlemesini hızlı bir şekilde izlemek için tasarlanmış bir Cloud Native Computing Foundation (CNCF) projesidir. Bu belgede wasmCloud'un Azure Kubernetes Service (AKS) kümesinde nasıl dağıtılacağına ilişkin yönergeler ayrıntılı olarak açıklanmaktadır.

Başlamadan önce

  • Kubernetes kavramlarına dair temel bir anlayışa sahip olunması gerektiği varsayılmaktadır. Daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) için Kubernetes temel kavramları.
  • Etkin bir Azure aboneliğine ihtiyacınız vardır. Hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun.
  • AKS kümesine ihtiyacınız var. Mevcut bir kümeniz yoksa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturabilirsiniz.
  • WasmCloud CLI (wash) sürüm 0.39.0 veya üstü bir sürümü kurmanız gerekir. Yükleme seçenekleri için bkz. wasmcloud-cli.

Önkoşullar

  • WasmCloud'un AKS kümesine dağıtılması için Azure portalını kullanamazsınız.

WasmCloud'u kullanıma alma

WasmCloud'u AKS kümesine dağıtmak için tek bir Helm grafiğini kümenize yüklemeniz gerekir. Bu, aşağıdaki hizmetleri tek bir ad alanına yükler:

  • NATS: NATS, wasmCloud'daki bileşenler arasındaki tüm iletişimin omurgasını sağlar.
  • wadm: wasmCloud Uygulama Yöneticisi, diğer adıyla wadm, wasmCloud üzerinde çalışan uygulamaları yönetmek için düzenleyicidir.
  • wasmCloud Operatörü: wasmCloud Operatörü, wasmCloud konaklarının yaşam döngüsünü yöneten bir Kubernetes operatörüdür.

wasmCloud'un ayrılmış bir Kubernetes ad alanına dağıtılması önerilir.

  1. wasmCloud için kubectl kullanarak bir ad alanı oluşturun:

    kubectl create namespace wasmcloud
    
  2. helm upgrade komutunu kullanarak NATS ve wadm'yi wasmCloud ad alanına yükleyin.

    # 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
    

    Bu komutun çıktısı aşağıdakine benzer olmalıdır:

    NAME: wasmcloud-platform
    LAST DEPLOYED: Thu Nov  7 14:58:54 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    
  3. Tüm podların kubectl kullanmaya başlamasını bekleyin.

    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. CRD ve kubectl kullanarak bir wasmCloud barındırıcısı başlatın.

    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. wasmCloud ana bilgisayarının çalıştığını doğrulayın:

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

    Çıktınız aşağıdakine benzer görünmelidir:

    NAME                             READY   STATUS    RESTARTS   AGE
    wasmcloud-host-f9d67b8cf-lvsq6   2/2     Running   0          84s
    
  6. kullanarak washwasmCloud konağına bağlanabildiğinizi doğrulayın:

    Ayrı bir kabukta çalışan NATS podlarından birine port yönlendirmek için aşağıdaki komutu çalıştırın:

    kubectl port-forward nats-0 4222
    

    Bu komut, 4222 numaralı bağlantı noktasındaki tüm trafiği yerel olarak kümenizde çalışan NATS poduna iletir. WasmCloud'a wash kullanarak bağlanmak için bu bağlantı noktasını iletmeniz gerekir.

    Orijinal kabuğunuzda wash ile aşağıdaki komutu çalıştırarak wasmCloud ana bilgisayarınızın çalıştığını doğrulayın.

    wash get hosts
    

    Çıktınız aşağıdakine benzer görünmelidir:

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

WasmCloud uygulaması dağıtma

Artık AKS kümenizde wasmCloud çalıştırıldığına göre, bir wasmCloud uygulaması dağıtabilirsiniz. wasmCloud uygulaması, wasmCloud Application Manager (wadm) tarafından yönetilen bir WebAssembly bileşenleri koleksiyonudur.

  1. WasmCloud uygulama bildirim dosyası oluşturun. Bu dosya, uygulamanızı oluşturan bileşenleri açıklar. Aşağıdaki yaml dosyasını olarak hello-world.yamlkaydedin.

    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. wash kullanarak wasmCloud uygulamasını dağıtın.

    wash app deploy hello-world.yaml
    

    Çıktınız aşağıdakine benzer görünmelidir:

    Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"
    
  3. Uygulamanın wash kullanarak çalıştığını doğrulayın.

    wash app status hello-world
    

    Çıktınız aşağıdakine benzer görünmelidir:

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

    Gerekirse tüm bileşenler Deployed duruma gelene kadar bu komutu yineleyin.

  4. curl ve kubectl port-forward ile http bileşenini çağırın.

    Ayrı bir kabukta aşağıdaki komutu çalıştırarak uygulamaya port yönlendirmek için hello-world sağlayın

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

    Bu komut, 8080 numaralı bağlantı noktasındaki tüm trafiği yerel olarak kümenizde çalışan wasmCloud konağına iletir. WasmCloud'a curl kullanarak bağlanmak için bu bağlantı noktasını iletmeniz gerekir.

    Özgün kabuğunuzda http bileşenini çağırmak için aşağıdaki komutu çalıştırın:

    curl http://localhost:8080
    

    Çıktınız aşağıdakine benzer görünmelidir:

    Hello from Rust!
    
  5. Yüklü kaynakları temizleyin

    Oluşturduğunuz kaynakları temizlemek için aşağıdaki komutları çalıştırın:

    kubectl delete namespace wasmcloud
    

    Bu komut, WASMCloud bileşenlerini AKS kümenizden kaldırır.

Sonraki Adımlar

Farklı wasmCloud özelliklerini kullanarak ve uygulamanızı ölçeklendirerek sıfırdan bir WebAssembly bileşeni oluşturma konusunda size yol gösteren wasmCloud Hızlı Başlangıç Kılavuzu'nu izleyerek öğrenmeye devam edebilirsiniz.