Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os componentes webAssembly são uma nova maneira de criar e implantar aplicativos. Eles foram projetados para serem 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 natureza e expõem suas funcionalidades por meio de interfaces definidas. Os componentes diferem dos contêineres por serem binários únicos que são menores e começam mais rapidamente. Encontre a descrição completa do modelo e o que é um componente na especificação.
wasmCloud é um projeto do CNCF (Cloud Native Computing Foundation) projetado para acompanhar rapidamente o desenvolvimento, a implantação e a orquestração de componentes webAssembly. Este documento detalha as instruções sobre como implantar o wasmCloud em um cluster do AKS (Serviço de Kubernetes do Azure).
Antes de começar
- Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, confira Principais conceitos do Kubernetes para o AKS (Serviço de Kubernetes do Azure).
- Você precisa de uma assinatura ativa do Azure. Se você não tiver uma, crie uma conta gratuita antes de começar.
- Você precisa de um cluster do 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 CLI do wasmCloud (wash) na versão 0.39.0 ou posterior. Para obter opções de instalação, consulte wasmcloud-cli.
Pré-requisitos
- Você não pode usar o portal do Azure para implantar o wasmCloud em um cluster do AKS.
Implantar wasmCloud
Para implantar o wasmCloud em um cluster do AKS, você precisa instalar o Helm chart all-in-one em seu cluster. Isso instala os seguintes serviços em um único namespace:
- NATS: O NATS fornece o backbone para toda a comunicação entre componentes no wasmCloud.
- wadm: o gerenciador de aplicativos wasmCloud, também conhecido como wadm, é o orquestrador para gerenciar aplicativos em execução em cima do wasmCloud.
- o operador wasmCloud: o operador wasmCloud é um operador do Kubernetes que gerencia o ciclo de vida dos hosts wasmCloud.
Recomendamos implantar o wasmCloud em um namespace dedicado do Kubernetes.
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 desse 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 iniciem o uso de
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-hostSeu 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, execute o seguinte comando para redirecionar a porta para um dos pods NATS em execução:
kubectl port-forward nats-0 4222Esse comando encaminha todo o tráfego na porta 4222 localmente para o pod NATS em execução em seu cluster. Você deve ter essa porta encaminhada para se conectar ao wasmCloud usando
wash.No shell original, execute o seguinte comando
washpara verificar se o host wasmCloud está em execução:wash get hostsSeu 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á em execução no cluster do AKS, você pode implantar um aplicativo wasmCloud. Um aplicativo wasmCloud é uma coleção de componentes WebAssembly orquestrados pelo gerenciador de aplicativos wasmCloud (wadm).
Crie um arquivo de manifesto do aplicativo wasmCloud. Este arquivo descreve os componentes que compõem seu aplicativo. Salve o arquivo yaml a seguir 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:8080Implantar o aplicativo wasmCloud usando
wash:wash app deploy hello-world.yamlSeu resultado deve ser semelhante ao seguinte:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Verifique se o aplicativo está em execução usando
wash:wash app status hello-worldSeu resultado deve ser semelhante ao seguinte:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedRepita esse comando se necessário até que todos os componentes estejam no
Deployedestado.Invoque o componente http usando
curlekubectl port-forward:Em um shell separado, execute o seguinte comando para fazer um redirecionamento de porta para o aplicativo
hello-worldkubectl port-forward port-forward deployment/wasmcloud-host 8080Esse comando encaminha todo o tráfego na porta 8080 localmente para o host wasmCloud em execução em seu 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:8080Seu resultado deve ser semelhante ao seguinte:
Hello from Rust!Limpar os recursos instalados
Para limpar os recursos que você criou, execute os seguintes comandos:
kubectl delete namespace wasmcloudEsse comando remove os componentes do wasmCloud do cluster do AKS.
Próximas etapas
Você pode continuar aprendendo seguindo o Guia de Início Rápido do wasmCloud, que orienta você ao criar um componente WebAssembly do zero, usando diferentes funcionalidades do wasmCloud e dimensionando seu aplicativo.