Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Компоненты WebAssembly — это новый способ создания и развертывания приложений. Они предназначены для переносимого целевого объекта компиляции для языков программирования и могут выполняться в различных средах. Компоненты WebAssembly изначально изолированы и предоставляют свои функциональные возможности через определенные интерфейсы. Компоненты отличаются от контейнеров в том, что они одинарные двоичные файлы, которые гораздо меньше и быстрее запускаются. Найдите полное описание модели и какой компонент в спецификации.
wasmCloud — это проект Cloud Native Computing Foundation (CNCF), предназначенный для быстрого отслеживания разработки, развертывания и оркестрации компонентов WebAssembly. В этом документе описаны инструкции по развертыванию wasmCloud в кластере Службы Azure Kubernetes (AKS).
Перед тем как начать
- В этой статье предполагается базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- Вам нужна активная подписка Azure. Если у вас еще нет аккаунта, создайте бесплатную учетную запись, прежде чем начать.
- Вам нужен кластер AKS. Если у вас нет существующего кластера, его можно создать с помощью Azure CLI, Azure PowerShell или портал Azure.
- Необходимо установить CLI wasmCloud (wash) версии 0.39.0 или более поздней. Параметры установки см. wasmcloud-cli.
Предпосылки
- Вы не можете использовать портал Azure для развертывания wasmCloud в кластере AKS.
Разверните wasmCloud
Чтобы развернуть wasmCloud в кластере Azure Kubernetes Service (AKS), необходимо установить единый график Helm в ваш кластер. При этом устанавливаются следующие службы в одно пространство имен:
- NATS: NATS предоставляет магистраль для всех связей между компонентами в WasmCloud.
- wadm: диспетчер приложений wasmCloud, также известный как wadm, является оркестратором для управления приложениями, запущенными на wasmCloud.
- Оператор wasmCloud: оператор wasmCloud — это оператор Kubernetes, который управляет жизненным циклом узлов wasmCloud.
Рекомендуется развернуть wasmCloud в выделенном пространстве имен Kubernetes.
Создайте пространство имен для wasmCloud с помощью
kubectl:kubectl create namespace wasmcloudУстановите NATS и wadm в пространство имен wasmCloud с помощью команды
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-updateВыходные данные этой команды должны выглядеть следующим образом:
NAME: wasmcloud-platform LAST DEPLOYED: Thu Nov 7 14:58:54 2024 NAMESPACE: default STATUS: deployed REVISION: 1 NOTES:Дождитесь, когда все Pod'ы начнут работать, используя
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Запустите узел wasmCloud с помощью CRD и
kubectl:cat << EOF | kubectl apply -f - apiVersion: k8s.wasmcloud.dev/v1alpha1 kind: WasmCloudHostConfig metadata: name: wasmcloud-host spec: lattice: default version: "1.4.1" EOFУбедитесь, что хост wasmCloud запущен:
kubectl get pod -l app.kubernetes.io/instance=wasmcloud-hostВыходные данные должны выглядеть примерно так:
NAME READY STATUS RESTARTS AGE wasmcloud-host-f9d67b8cf-lvsq6 2/2 Running 0 84sУбедитесь, что вы можете подключиться к узлу WasmCloud с помощью
wash:В отдельной оболочке выполните следующую команду, чтобы перенаправить порт на один из запущенных модулей pod NATS:
kubectl port-forward nats-0 4222Эта команда перенаправит весь трафик через порт 4222 локально в модуль NATS, работающий в кластере. Этот порт необходимо перенаправить, чтобы подключиться к wasmCloud с помощью
wash.В исходной оболочке выполните следующую команду с
wash, чтобы убедиться, что хост wasmCloud запущен:wash get hostsВыходные данные должны выглядеть примерно так:
Host ID Friendly name Uptime (seconds) ND2G4FRXLBCV3YL52OD4NRSS66Z5YOR3JOSL3Q7T5I6ZJM4EII3Y73CZ frosty-resonance-6227 312
Развертывание приложения WasmCloud
Теперь, когда wasmCloud работает в кластере AKS, можно развернуть приложение wasmCloud. Приложение wasmCloud — это коллекция компонентов WebAssembly, управляемых диспетчером приложений WasmCloud (wadm).
Создайте файл манифеста приложения wasmCloud. В этом файле описываются компоненты, составляющие приложение. Сохраните следующий yaml-файл как
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Развертывание приложения WasmCloud с помощью
wash:wash app deploy hello-world.yamlВыходные данные должны выглядеть примерно так:
Deployed application "hello-world", version "01JC44TVDBC2V6MJ1NJTKNNX1J"Убедитесь, что приложение работает с помощью
wash:wash app status hello-worldВыходные данные должны выглядеть примерно так:
Name Kind Status http_component SpreadScaler Deployed httpserver -(wasi:http)-> http_component LinkScaler Deployed httpserver SpreadScaler DeployedПовторите эту команду при необходимости, пока все компоненты не находятся в
Deployedсостоянии.Вызов компонента HTTP с помощью
curlиkubectl port-forward:В отдельной оболочке выполните следующую команду, чтобы перенаправить его в
hello-worldприложение.kubectl port-forward port-forward deployment/wasmcloud-host 8080Эта команда перенаправит весь трафик через порт 8080 локально на узел wasmCloud, работающий в кластере. Этот порт необходимо перенаправить, чтобы подключиться к wasmCloud с помощью
curl.В исходной оболочке выполните следующую команду, чтобы вызвать компонент HTTP:
curl http://localhost:8080Выходные данные должны выглядеть примерно так:
Hello from Rust!Очистка установленных ресурсов
Чтобы очистить созданные ресурсы, выполните следующие команды:
kubectl delete namespace wasmcloudЭта команда удаляет компоненты wasmCloud из кластера AKS.
Дальнейшие действия
Вы можете продолжить изучение, следуя руководству по краткому руководству по wasmCloud, которое поможет вам создать компонент WebAssembly с нуля, используя различные возможности wasmCloud и масштабирование приложения.