Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os componentes WebAssembly são uma nova maneira de criar e implantar aplicativos. Eles são projetados para ser um destino de compilação portátil para linguagens de programação e podem ser executados em vários ambientes. Os componentes WebAssembly são isolados por design e expõem a sua funcionalidade através de interfaces definidas. Os componentes diferem dos contêineres porque são binários únicos que são muito menores e mais rápidos de iniciar. Encontre a descrição completa do modelo e o que é um componente na especificação.
wasmCloud é um projeto Cloud Native Computing Foundation (CNCF) projetado para acelerar o desenvolvimento, implantação e orquestração de componentes WebAssembly. Este documento detalha instruções sobre como implantar o wasmCloud em um cluster do Serviço Kubernetes do Azure (AKS).
Antes de começar
- Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes para o Serviço Kubernetes do Azure (AKS).
- Você precisa de uma assinatura ativa do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
- Você precisa de um cluster AKS. Se você não tiver um cluster existente, poderá criar um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
- Você precisa instalar a wasmCloud CLI (wash) na versão 0.39.0 ou superior. Para obter opções de instalação, consulte wasmcloud-cli.
Pré-requisitos
- Não é possível usar o portal do Azure para implantar o wasmCloud em um cluster AKS.
Implante o wasmCloud
Para implantar o wasmCloud em um cluster AKS, você precisa instalar o gráfico Helm tudo em um em seu cluster. Isso instala os seguintes serviços em um único namespace:
- NATS: O NATS fornece a espinha dorsal para toda a comunicação entre componentes no wasmCloud.
- wadm: o wasmCloud Application Manager, também conhecido como wadm, é o orquestrador para gerenciar aplicativos executados sobre o wasmCloud.
- o operador wasmCloud: o operador wasmCloud é um operador Kubernetes que gerencia o ciclo de vida dos hosts wasmCloud.
Recomendamos implantar o wasmCloud em um namespace Kubernetes dedicado.
Crie um namespace para wasmCloud usando
kubectl:kubectl create namespace wasmcloudInstale NATS e wadm no namespace wasmCloud usando o
helm upgradecomando:# 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-updateA saída deste comando deve ser semelhante à seguinte:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Aguarde até que todos os pods comecem 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 um host wasmCloud usando um CRD e
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFVerifique se o host wasmCloud está em execução:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostO seu resultado deve ser semelhante ao seguinte:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sVerifique se você pode se conectar ao host wasmCloud usando
wash:Em um shell separado, use o seguinte comando para fazer a portabilidade para um dos pods NATS em execução:
kubectl port-forward nats-0 4222Este comando encaminha todo o tráfego na porta 4222 localmente para o pod NATS em execução no cluster. Você deve ter essa porta encaminhada para se conectar ao wasmCloud usando
wash.No shell original, execute o seguinte comando com
washpara verificar se o seu host wasmCloud está em execução:wash get hostsO seu resultado deve ser semelhante ao seguinte:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Implantar um aplicativo wasmCloud
Agora que o wasmCloud está sendo executado em seu cluster AKS, você pode implantar um aplicativo wasmCloud. Um aplicativo wasmCloud é uma coleção de componentes WebAssembly que são orquestrados pelo wasmCloud Application Manager (wadm).
Crie um arquivo de manifesto do aplicativo wasmCloud. Este arquivo descreve os componentes que compõem seu aplicativo. Salve o seguinte arquivo 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:8080Implante o aplicativo wasmCloud usando
wash:wash app deploy hello-world.yamlO seu resultado deve ser semelhante ao seguinte:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Verifique se o aplicativo está sendo executado usando
wash:wash app status hello-worldO seu resultado deve ser semelhante ao seguinte:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedRepita este comando
Deployed, se necessário, até que todos os componentes estejam no estadoDeployed.Invoque o componente http usando
curlekubectl port-forward:Em um shell separado, execute o seguinte comando para fazer o redirecionamento de porta para a aplicação
hello-world.kubectl port-forward port-forward deployment/wasmcloud-host 8080Este comando encaminha todo o tráfego na porta 8080 localmente para o host wasmCloud em execução no cluster. Você deve ter essa porta encaminhada para se conectar ao wasmCloud usando
curl.No shell original, execute o seguinte comando para invocar o componente http:
curl http://localhost:8080O seu resultado deve ser semelhante ao seguinte:
Hello from Rust!Limpar os recursos instalados
Para limpar os recursos criados, execute os seguintes comandos:
kubectl delete namespace wasmcloudEste comando remove os componentes wasmCloud do seu cluster AKS.
Próximos passos
Você pode continuar a aprender seguindo o Guia de Início Rápido do wasmCloud, que o orienta na criação de um componente WebAssembly do zero, usando diferentes recursos do wasmCloud e dimensionando seu aplicativo.