Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los componentes de WebAssembly son una nueva manera de compilar e implementar aplicaciones. Están diseñados para ser un destino de compilación portátil para lenguajes de programación y se pueden ejecutar en varios entornos. Los componentes de WebAssembly están aislados por diseño y exponen su funcionalidad mediante interfaces definidas. Los componentes difieren de los contenedores en que los archivos binarios únicos son mucho más pequeños y más rápidos para empezar. Busque la descripción completa del modelo y cuál es un componente de la especificación.
wasmCloud es un proyecto de Cloud Native Computing Foundation (CNCF) diseñado para realizar un seguimiento rápido del desarrollo, la implementación y la orquestación de componentes webAssembly. En este documento se detallan las instrucciones sobre cómo implementar wasmCloud en un clúster de Azure Kubernetes Service (AKS).
Antes de empezar
- En este artículo se presupone un conocimiento básico de los conceptos de Kubernetes. Para más información, consulte Conceptos básicos de Kubernetes de Azure Kubernetes Service (AKS).
- Necesita una suscripción de Azure activa. Si no tienes una, crea una cuenta gratuita antes de empezar.
- Necesita un clúster de AKS. Si no tiene un clúster existente, puede crear uno mediante la CLI de Azure, Azure PowerShell o Azure Portal.
- Debe instalar la CLI de wasmCloud (wash) en la versión 0.39.0 o posterior. Para ver las opciones de instalación, consulte wasmcloud-cli.
Prerrequisitos
- No puede usar Azure Portal para implementar wasmCloud en un clúster de AKS.
Implementación de wasmCloud
Para implementar wasmCloud en un clúster de AKS, debe instalar todo en un gráfico de Helm en el clúster. Esto instala los siguientes servicios en un único espacio de nombres:
- NATS: NATS proporciona la red troncal para toda la comunicación entre los componentes de wasmCloud.
- wadm: wasmCloud Application Manager, también conocido como wadm es el orquestador para administrar aplicaciones que se ejecutan en wasmCloud.
- el operador wasmCloud: el operador wasmCloud es un operador de Kubernetes que administra el ciclo de vida de los hosts wasmCloud.
Se recomienda implementar wasmCloud en un espacio de nombres de Kubernetes dedicado.
Cree un namespace para wasmCloud mediante
kubectl:kubectl create namespace wasmcloudInstale NATS y wadm en el espacio de nombres wasmCloud mediante el comando
helm upgrade.# 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-updateLa salida de este comando debe ser similar a la siguiente:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Espere a que todos los pods empiecen a usar
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-operatorInicie un host wasmCloud mediante un CRD y
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFAsegúrese de que el host wasmCloud esté en ejecución:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostLa salida debe tener una apariencia similar a la siguiente:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sCompruebe que puede conectarse al host wasmCloud mediante
wash:En un shell independiente, ejecute el siguiente comando para reenviar uno de los pods NATS en ejecución:
kubectl port-forward nats-0 4222Este comando reenvía todo el tráfico en el puerto 4222 localmente al pod NATS que se ejecuta en el clúster. Debe tener este puerto reenviado para conectarse a wasmCloud mediante
wash.En su shell original, ejecute el siguiente comando con
washpara comprobar que el host wasmCloud se está ejecutando:wash get hostsLa salida debe tener una apariencia similar a la siguiente:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Implementación de una aplicación wasmCloud
Ahora que wasmCloud se está ejecutando en el clúster de AKS, puede implementar una aplicación wasmCloud. Una aplicación wasmCloud es una colección de componentes de WebAssembly orquestados por el administrador de aplicaciones wasmCloud (wadm).
Cree un archivo de manifiesto para la aplicación de wasmCloud. En este archivo se describen los componentes que componen la aplicación. Guarde el siguiente archivo yaml como
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:8080Implemente la aplicación wasmCloud mediante
wash:wash app deploy hello-world.yamlLa salida debe tener una apariencia similar a la siguiente:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Compruebe que la aplicación se está ejecutando mediante
wash:wash app status hello-worldLa salida debe tener una apariencia similar a la siguiente:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedRepita este comando si es necesario hasta que todos los componentes estén en estado
Deployed.Invoque el componente http mediante
curlykubectl port-forward:En un shell independiente, ejecute el siguiente comando para reenviar a la aplicación
hello-worldkubectl port-forward port-forward deployment/wasmcloud-host 8080Este comando reenvía todo el tráfico del puerto 8080 localmente al host wasmCloud que se ejecuta en el clúster. Debe tener este puerto reenviado para conectarse a wasmCloud mediante
curl.En el shell original, ejecute el siguiente comando para invocar el componente http:
curl http://localhost:8080La salida debe tener una apariencia similar a la siguiente:
Hello from Rust!Limpieza de los recursos instalados
Para limpiar los recursos que ha creado, ejecute los siguientes comandos:
kubectl delete namespace wasmcloudEste comando quita los componentes wasmCloud del clúster de AKS.
Pasos siguientes
Puede seguir aprendiendo siguiendo la guía de inicio rápido de wasmCloud, que le guía a través de la creación de un componente WebAssembly desde cero, mediante diferentes funcionalidades de wasmCloud y escalado de la aplicación.