A wasmCloud használata az Azure Kubernetes Service-ben (AKS)

A WebAssembly-összetevők új módszert jelentenek az alkalmazások létrehozására és üzembe helyezésére. Úgy tervezték, hogy a programozási nyelvek hordozható fordítási célpontja legyen, és különböző környezetekben is futtatható. A WebAssembly-összetevők kialakításuk szerint tesztkörnyezetbe vannak adva, és meghatározott felületeken teszik elérhetővé a működésüket. Az összetevők abban különböznek a tárolóktól, hogy a bináris fájlok sokkal kisebbek és gyorsabban indulnak el. Keresse meg a modell teljes leírását és a specifikációban szereplő összetevőt.

A wasmCloud a Cloud Native Computing Foundation (CNCF) projekt, amelynek célja a WebAssembly-összetevők fejlesztésének, üzembe helyezésének és vezénylésének gyors nyomon követése. Ez a dokumentum részletesen ismerteti a wasmCloud Azure Kubernetes Service-fürtön való üzembe helyezésének utasításait.

Mielőtt hozzákezdene

  • Ez a cikk a Kubernetes-fogalmak alapszintű megértését feltételezi. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait.
  • Aktív Azure-előfizetésre van szüksége. Ha még nincs előfizetése, hozzon létre egy ingyenes fiókot, mielőtt hozzákezd.
  • Szüksége van egy AKS-fürtre. Ha nem rendelkezik meglévő fürttel, létrehozhat egyet az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával.
  • Telepítenie kell a wasmCloud CLI-t (mosás) a 0.39.0-s vagy újabb verzióban. A telepítési lehetőségekről a wasmcloud-cli című témakörben olvashat.

Előfeltételek

  • Az Azure Portallal nem helyezheti üzembe a wasmCloudot egy AKS-fürtön.

A wasmCloud üzembe helyezése

A wasmCloud AKS-fürtön való üzembe helyezéséhez telepítenie kell az all-in-one Helm chartot a fürtbe. Ez a következő szolgáltatásokat telepíti egyetlen névtérbe:

  • NATS: A NATS biztosítja a gerincet a wasmCloud összetevői közötti összes kommunikációhoz.
  • wadm: a wasmCloud Application Manager, más néven wadm a wasmCloud tetején futó alkalmazások felügyeletének vezénylője.
  • a wasmCloud operátor: a wasmCloud operátor egy Kubernetes-operátor, amely a wasmCloud-gazdagépek életciklusát kezeli.

Javasoljuk, hogy helyezze üzembe a wasmCloudot egy dedikált Kubernetes-névtérben.

  1. A következő használatával hozzon létre egy névteret a wasmCloudhoz: kubectl

    kubectl create namespace wasmcloud
    
  2. Telepítse a NATS-t és a wadm-ot a wasmCloud névtérbe a helm upgrade következő paranccsal:

    # 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
    

    A parancs kimenetének a következőhöz hasonlóan kell kinéznie:

    NAME: wasmcloud-platform
    LAST DEPLOYED: Thu Nov  7 14:58:54 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    NOTES:
    
  3. Várja meg, amíg az összes pod elkezdi használni a 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. Egy CRD és kubectl használatával wasmCloud-hoszt indítása:

    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. Ellenőrizze, hogy fut-e a wasmCloud-gazdagép:

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

    A kimenetnek a következőhöz hasonlóan kell kinéznie:

    NAME                             READY   STATUS    RESTARTS   AGE
    wasmcloud-host-f9d67b8cf-lvsq6   2/2     Running   0          84s
    
  6. Ellenőrizze, hogy tud-e csatlakozni a wasmCloud-gazdagéphez a következő használatával wash:

    Egy külön shellben futtassa a következő parancsot egy futó NATS-podhoz való porttovábbításhoz.

    kubectl port-forward nats-0 4222
    

    Ez a parancs a 4222-s porton lévő összes forgalmat helyileg továbbítja a fürtben futó NATS-podra. A wasmCloudhoz wash segítségével való csatlakozáshoz muszáj továbbítania a portot.

    Az Ön eredeti termináljában futtassa a következő parancsot wash, hogy ellenőrizze, fut-e a wasmCloud-gazdagép:

    wash get hosts
    

    A kimenetnek a következőhöz hasonlóan kell kinéznie:

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

WasmCloud-alkalmazás üzembe helyezése

Most, hogy a wasmCloud fut az AKS-fürtön, üzembe helyezhet egy wasmCloud-alkalmazást. A wasmCloud-alkalmazások a WasmCloud Application Manager (wadm) által vezényelt WebAssembly-összetevők gyűjteményei.

  1. WasmCloud-alkalmazásjegyzékfájl létrehozása. Ez a fájl az alkalmazást alkotó összetevőket ismerteti. Mentse a következő yaml-fájlt, mint 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. A wasmCloud-alkalmazás üzembe helyezése a(z) wash használatával.

    wash app deploy hello-world.yaml
    

    A kimenetnek a következőhöz hasonlóan kell kinéznie:

    Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"
    
  3. Ellenőrizze, hogy az alkalmazás fut-e a következővel wash:

    wash app status hello-world
    

    A kimenetnek a következőhöz hasonlóan kell kinéznie:

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

    Szükség esetén ismételje meg ezt a parancsot, amíg az összes összetevő állapota Deployed meg nem jelenik.

  4. A http-összetevő meghívása a következővelcurl:kubectl port-forward

    Egy külön parancssorban futtassa a következő parancsot porttovábbításra az hello-world alkalmazáshoz

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

    Ez a parancs a 8080-s porton lévő összes forgalmat helyileg továbbítja a fürtön futó wasmCloud-gazdagépre. A wasmCloudhoz curl segítségével való csatlakozáshoz muszáj továbbítania a portot.

    Az eredeti rendszerhéjban futtassa a következő parancsot a http komponens meghívásához:

    curl http://localhost:8080
    

    A kimenetnek a következőhöz hasonlóan kell kinéznie:

    Hello from Rust!
    
  5. A telepített erőforrások törlése

    A létrehozott erőforrások törléséhez futtassa a következő parancsokat:

    kubectl delete namespace wasmcloud
    

    Ez a parancs eltávolítja az wasmCloud-összetevőket az AKS-fürtből.

Következő lépések

A wasmCloud gyorsútmutatót követve továbbra is elsajátíthatja a WebAssembly-összetevők alapoktól való létrehozását, a különböző WasmCloud-képességek használatát és az alkalmazás skálázását.