Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak wdrożyć narzędzie SpinKube w usłudze Azure Kubernetes Service (AKS) w celu uruchamiania bezserwerowych obciążeń zestawu WebAssembly (Wasm).
Omówienie
WebAssembly (Wasm) to format binarny zoptymalizowany pod kątem szybkiego pobierania i niemal natywnej szybkości wykonywania. Działa w piaskownicy izolowanej od komputera hosta udostępnionego przez środowisko uruchomieniowe Wasm. Domyślnie moduły WebAssembly nie mogą uzyskiwać dostępu do zasobów, w tym gniazd i zmiennych środowiskowych, na hoście poza środowiskiem piaskownicy, chyba że są jawnie dozwolone. Standard WebAssembly System Interface (WASI) definiuje zestaw interfejsów dla środowisk uruchomieniowych Wasm w celu zapewnienia dostępu do modułów WebAssembly do środowiska i zasobów spoza hosta przy użyciu modelu zabezpieczeń opartego na możliwościach.
SpinKube to projekt typu open source, który uruchamia bezserwerowe obciążenia Wasm (Spin Apps) zbudowane za pomocą otwartego oprogramowania Spin w Kubernetes. W przeciwieństwie do wcześniejszych środowisk uruchomieniowych Wasm dla platformy Kubernetes narzędzie SpinKube wykonuje aplikacje Spin Apps natywnie na źródłowych węzłach Kubernetes i nie opiera się na kontenerach. Aplikacje Spin to zwykłe moduły Wasm, które są zgodne ze specyfikacją modelu komponentów WebAssembly.
Uruchamiając polecenie Spin Apps na platformie Kubernetes za pomocą narzędzia SpinKube, możesz uruchomić następujące obciążenia:
- Uruchom zadania Wasm obok istniejących aplikacji konteneryzowanych.
- Uruchamiaj podobne obciążenia, zużywając mniej zasobów.
- Uruchamianie większej liczby obciążeń w danym zestawie zasobów.
- Uruchamiaj obciążenia na różnych architekturach (takich jak
amd64iarm64) bez konieczności ich kompilowania krzyżowego.
System SpinKube składa się z dwóch składników najwyższego poziomu:
-
spin-operator: Operator kubernetes umożliwiający wdrażanie i zarządzanie aplikacjami spin przy użyciu zasobów niestandardowych. -
kubewtyczka dlaspin: wtyczkaspininterfejsu wiersza polecenia umożliwiająca użytkownikom tworzenie szkieletu manifestów wdrożenia Kubernetes dla aplikacji Spin.
Wymagania wstępne
- Wersja
2.64.0lub nowsza interfejsu wiersza polecenia platformy Azure. Aby zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. -
kubectlwersja1.31.0lub nowsza. -
helmwersja3.15.4lub nowsza. -
spinwersja3.0.0lub nowsza. -
Node.js wersji
21.6.2. - Istniejący klaster AKS. Jeśli go nie masz, zobacz Utwórz klaster AKS.
Ograniczenia
- Węzeł
os-typeKubernetes musi być systemem Linux. - Nie można użyć witryny Azure Portal do wdrożenia narzędzia SpinKube w klastrze usługi AKS.
Wdrażanie narzędzia SpinKube w istniejącym klastrze
Nawiązywanie połączenia z klastrem usługi AKS
Skonfiguruj
kubectl, aby nawiązać połączenie z klastrem Kubernetes za pomocą poleceniaaz aks get-credentials.az aks get-credentials --name <aks-cluster-name> --resource-group <resource-group-name>
Wdrożyć cert-manager
Jeśli jeszcze nie wdrożyłeś cert-manager do swojego klastra AKS, możesz go zainstalować, wdrażając niestandardowe definicje zasobów (CRD), a następnie chart Helm cert-manager udostępniony za pośrednictwem repozytorium jetstack.
Wdróż elementy CRD i chart Helm za pomocą polecenia
cert-manager.kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.3/cert-manager.crds.yamlDodaj i zaktualizuj repozytorium Jetstack przy użyciu poleceń
helm repo addihelm repo update.helm repo add jetstack https://charts.jetstack.io helm repo updateZainstaluj chart Helm przy użyciu polecenia
cert-managerhelm install.helm install \ cert-manager jetstack/cert-manager --version v1.14.3 \ --namespace cert-manager --create-namespace \ --wait
Wdróż runtime-class-manager (znane również jako KWasm)
Obiekt runtime-class-manager (znany również jako KWasm) jest odpowiedzialny za wdrażanie i zarządzanie containerd-shim na żądanych węzłach Kubernetes.
Dodaj repozytorium KWasm Helm przy użyciu
helm repo addpolecenia .helm repo add kwasm http://kwasm.sh/kwasm-operator/Zainstaluj operator KWasm przy użyciu
helm installpolecenia .helm install \ kwasm-operator kwasm/kwasm-operator \ --namespace kwasm --create-namespace \ --version 0.2.3 \ --set kwasmOperator.installerImage=ghcr.io/spinframework/containerd-shim-spin/node-installer:v0.19.0
Aprowizuj kontenerd-shim-spin do węzłów kubernetes
Po runtime-class-manager zainstalowaniu w klastrze usługi AKS należy dodać adnotacje do węzłów Kubernetes, które powinny mieć możliwość uruchamiania funkcji Spin Apps za pomocą kwasm.sh/kwasm-node=truepolecenia . Możesz użyć kubectl annotate node do adnotacji wszystkich węzłów lub tylko określonych węzłów w klastrze AKS. W tym przykładzie dodajemy adnotacje do wszystkich węzłów w klastrze usługi AKS z adnotacją kwasm.sh/kwasm-node=true .
Skonfiguruj
containerd-shim-spinwszystkie węzły w klastrze usługi AKS, korzystając z poleceniakubectl annotate node --all.kubectl annotate node --all kwasm.sh/kwasm-node=truePo dodaniu adnotacji do węzłów,
runtime-class-managerużywa zadania Kubernetes Job do zmodyfikowania żądanych węzłów. Po pomyślnym wdrożeniucontainerd-shim-spinwęzły są oznaczone etykietąkwasm.sh/kwasm-provisioned. Możesz sprawdzić, czy żądane węzły mają przypisaną etykietękwasm.sh/kwasm-provisioned, używając poleceniakubectl get nodes --show-labels.kubectl get nodes --show-labels
Wdróż spin-operator
Element spin-operator składa się z dwóch niestandardowych definicji zasobów (CRDs), które należy wdrożyć do klastra usługi AKS: pierwsza to RuntimeClass dla spin, a druga to SpinAppExecutor.
Wdróż CRD i RuntimeClass dla
spinza pomocą poleceniakubectl apply.kubectl apply -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.crds.yaml kubectl apply -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.runtime-class.yamlWdróż
spin-operatorprzy użyciu poleceniahelm install.helm install spin-operator --version 0.5.0 \ --namespace spin-operator --create-namespace \ --wait oci://ghcr.io/spinframework/charts/spin-operatorUtwórz element
SpinAppExecutorw domyślnej przestrzeni nazw przy użyciukubectl applypolecenia .kubectl apply -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.shim-executor.yaml
Uruchom aplikację Spin w usłudze AKS
W tej sekcji zweryfikujesz instalację narzędzia SpinKube, tworząc prostą Spin App przy użyciu CLI (interfejsu wiersza polecenia) i języka JavaScript.
Utwórz nową aplikację Spin
Utwórz nową aplikację Spin przy użyciu polecenia
spin newz szablonemhttp-js.spin new -t http-js --accept-defaults hello-spinkubePrzejdź do
hello-spinkubekatalogu przy użyciucdpolecenia .cd hello-spinkubeZainstaluj zależności przy użyciu
npm installpolecenia .npm installUżyj
spininterfejsu wiersza polecenia, aby utworzyć podstawową aplikację Hello, World.spin build
Tworzenie rejestru kontenerów i uwierzytelnianie interfejsu spin wiersza polecenia
Aplikacje Spin są pakowane jako artefakty OCI i dystrybuowane za pośrednictwem rejestru zgodnego z OCI, takiego jak Azure Container Registry (ACR). Utwórz nowe wystąpienie usługi ACR przy użyciu
az acr createpolecenia .az acr create --name <acr-name> --resource-group <resource-group-name> --location <location> --sku Basic --admin-enabled trueUzyskaj punkt końcowy serwera logowania ACR oraz hasło administratora, korzystając z poleceń
az acr showiaz acr credential show.ACR_LOGIN_SERVER=$(az acr show -n <acr-name> -g <resource-group-name> --query 'loginServer' -otsv) ACR_PASSWORD=$(az acr credential show -n <acr-name> -g <resource-group-name> --query 'passwords[0].value' -otsv)Uwierzytelnij swój (c0) interfejs wiersza polecenia za pomocą polecenia (c1).
spin registry login -u $ACR_NAME -p $ACR_PASSWORD $ACR_LOGIN_SERVER
Pakowanie, dystrybuowanie i wdrażanie aplikacji spin
Teraz, gdy
spininterfejs wiersza polecenia jest uwierzytelniany w wystąpieniu usługi ACR, możesz spakować i rozpowszechnić aplikację spin przy użyciuspin registry pushpolecenia, a następnie odwołania do artefaktu OCI (który jest zgodny ze schematem<your acr login server>/<repository-name>:<tag>nazewnictwa).spin registry push $ACR_LOGIN_SERVER/hello-spinkube:0.0.1Utwórz wpis tajny kubernetes typu
docker-registryna potrzeby odwoływania się podczas wdrażania aplikacji spin do klastra usługi AKS przy użyciukubectl create secretpolecenia . W tym przykładzie sekret nosi nazwęspinkube-on-aks.kubectl create secret docker-registry spinkube-on-aks \ --docker-server=$ACR_LOGIN_SERVER \ --docker-username=$ACR_NAME\ --docker-password $ACR_PASSWORDUtwórz niezbędne manifesty wdrożenia platformy Kubernetes przy użyciu
spin kube scaffoldpolecenia .spin kube scaffold --from $ACR_LOGIN_SERVER/hello-spinkube:0.0.1 -s spinkube-on-aks > spinapp.yamlPlik
spinapp.yamlzawiera wstępnie skonfigurowane wystąpienieSpinAppcrD, które powinno wyglądać następująco:apiVersion: core.spinoperator.dev/v1alpha1 kind: SpinApp metadata: name: hello-spinkube spec: image: "<your acr name>.azurecr.io/hello-spinkube:0.0.1" executor: containerd-shim-spin replicas: 2 imagePullSecrets: - name: spinkube-on-aksWdróż aplikację Spin w klastrze usługi AKS przy użyciu
kubectl applypolecenia .kubectl apply -f spinapp.yaml
Eksplorowanie aplikacji spin w usłudze AKS
Pobieranie listy aplikacji spin
Pobierz listę aplikacji Spin przy użyciu polecenia
kubectl get spinapps.kubectl get spinappsNAME READY DESIRED EXECUTOR hello-spinkube 2 2 containerd-shim-spin
Pobierz prymitywy Kubernetes utworzone przez spin-operator
Po wdrożeniu obiekt spin-operator tworzy podstawowe elementy pierwotne kubernetes, takie jak usługa, wdrożenie i odpowiadające im zasobniki.
Pobierz listę usług przy użyciu
kubectl get servicepolecenia .kubectl get serviceNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-spinkube ClusterIP 10.43.35.78 <none> 80/TCP 24sPobierz listę wdrożeń przy użyciu
kubectl get deploymentpolecenia .kubectl get deploymentNAME READY UP-TO-DATE AVAILABLE AGE hello-spinkube 2/2 2 2 38sPobierz listę podów za pomocą polecenia
kubectl get pod.kubectl get podNAME READY STATUS RESTARTS AGE hello-spinkube-5b8579448d-zmc6x 1/1 Running 0 51s hello-spinkube-5b8579448d-bhkp9 1/1 Running 0 51s
Wywoływanie Aplikacji Spin
Aby wywołać aplikację Spin, należy skonfigurować przekazywanie portów do usługi przygotowanej przez spin-operator i używać curl do wysyłania żądań HTTP.
Ustanów przekierowanie portów do usługi
hello-spinkubeprzy użyciu poleceniakubectl port-forward.kubectl port-forward svc/hello-spinkube 8080:80Forwarding from 127.0.0.1:8080 -> 80 Forwarding from [::1]:8080 -> 80Otwórz nowe wystąpienie terminalu i użyj następującego
curlpolecenia, aby wysłać żądanie HTTP dolocalhost:8080.curl -iX GET localhost:8080HTTP/1.1 200 OK content-type: text/plain content-length: 17 date: Tue, 28 May 2024 08:55:50 GMT Hello from JS-SDK
Czyszczenie zasobów
Usuń aplikację Spin z klastra AKS przy użyciu polecenia
kubectl delete.kubectl delete spinapp hello-spinkubeUsuń sekret rejestru docker (spinkube-on-aks) przy użyciu polecenia
kubectl delete secret.kubectl delete secret spinkube-on-aksUsuń wystąpienie usługi ACR utworzone w ramach tego samouczka przy użyciu polecenia
az acr delete.az acr delete --name <acr-name> --resource-group <resource-group-name> --yesUsuń składniki SpinKube z klastra AKS za pomocą następujących poleceń.
# Remove the spin-operator helm delete spin-operator --namespace spin-operator # Remove the SpinAppExecutor kubectl delete -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.shim-executor.yaml # Remove the RuntimeClass for Spin kubectl delete -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.runtime-class.yaml # Remove the SpinKube CRDs kubectl delete -f https://github.com/spinframework/spin-operator/releases/download/v0.5.0/spin-operator.crds.yaml # Remove runtime-class-manager (also known as KWasm) helm delete kwasm-operator --namespace kwasm # Remove cert-manager Helm Release helm delete cert-manager --namespace cert-manager # Remove cert-manager CRDs kubectl delete -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.3/cert-manager.crds.yaml
Następne kroki
W tym artykule przedstawiono sposób wdrażania narzędzia SpinKube w usłudze Azure Kubernetes Service (AKS) w celu uruchamiania bezserwerowych obciążeń zestawu WebAssembly (Wasm). Aby wdrożyć więcej obciążeń w usłudze AKS, zobacz poniższe artykuły: