Menyebarkan SpinKube ke Azure Kubernetes Service (AKS) untuk menjalankan beban kerja WebAssembly (Wasm) tanpa server
Artikel
Artikel ini menunjukkan cara menyebarkan SpinKube ke Azure Kubernetes Service (AKS) untuk menjalankan beban kerja WebAssembly (Wasm) tanpa server.
Gambaran Umum
WebAssembly (Wasm) adalah format biner yang dioptimalkan untuk unduhan cepat dan kecepatan eksekusi hampir asli. Ini berjalan di kotak pasir yang diisolasi dari komputer host yang disediakan oleh runtime Wasm. Secara default, modul WebAssembly tidak dapat mengakses sumber daya, termasuk soket dan variabel lingkungan, pada host di luar kotak pasir kecuali jika diizinkan secara eksplisit. Standar WebAssembly System Interface (WASI) mendefinisikan sekumpulan antarmuka untuk runtime Wasm untuk menyediakan akses ke modul WebAssembly ke lingkungan dan sumber daya di luar host menggunakan model keamanan berbasis kemampuan.
SpinKube adalah proyek sumber terbuka yang menjalankan beban kerja Wasm tanpa server (Spin Apps) yang dibangun dengan Spin sumber terbuka di Kubernetes. Berbeda dengan runtime Wasm sebelumnya untuk Kubernetes, SpinKube menjalankan Spin Apps secara asli pada node Kubernetes yang mendasarinya dan tidak bergantung pada kontainer. Spin Apps adalah modul Wasm reguler yang selaras dengan spesifikasi Model Komponen WebAssembly.
Dengan menjalankan Spin Apps di Kubernetes dengan SpinKube, Anda dapat menjalankan beban kerja berikut:
Jalankan beban kerja Wasm di samping aplikasi kontainer yang ada.
Jalankan beban kerja serupa sambil menggunakan lebih sedikit sumber daya.
Jalankan lebih banyak beban kerja pada sekumpulan sumber daya tertentu.
Jalankan beban kerja pada arsitektur yang berbeda (seperti amd64 dan arm64) tanpa mengkompilasi silangnya.
SpinKube terdiri dari dua komponen tingkat atas:
spin-operator: Operator Kubernetes yang memungkinkan penyebaran dan manajemen Aplikasi Spin dengan menggunakan sumber daya kustom.
kube plugin untuk spin: spin Plugin CLI yang memungkinkan pengguna untuk membuat perancah manifes penyebaran Kubernetes untuk Spin Apps.
Prasyarat
Azure CLI versi 2.64.0 atau yang lebih baru. Untuk menginstal atau meningkatkan, lihat Menginstal Azure CLI.
Kluster AKS yang sudah ada. Jika Anda tidak memilikinya, lihat Membuat kluster AKS.
Batasan
Simpul os-type Kubernetes harus Linux.
Anda tidak dapat menggunakan portal Azure untuk menyebarkan SpinKube ke kluster AKS.
Menyebarkan SpinKube ke kluster yang ada
Menyambungkan ke kluster AKS Anda
Konfigurasikan kubectl untuk terhubung ke kluster Kubernetes menggunakan perintah az aks get-credentials.
az aks get-credentials --name <aks-cluster-name> --resource-group <resource-group-name>
Menyebarkan cert-manager
Jika Anda belum menyebarkan cert-manager ke kluster AKS, Anda dapat menginstalnya dengan menyebarkan Definisi Sumber Daya Kustom (CRD) yang diikuti oleh cert-manager bagan Helm yang disediakan melalui jetstack repositori.
Sebarkan cert-manager bagan CRD dan Helm menggunakan kubectl apply perintah .
Sebarkan runtime-class-manager (juga dikenal sebagai KWasm)
runtime-class-manager (juga dikenal sebagai KWasm) bertanggung jawab untuk menyebarkan dan mengelola containerd-shim pada simpul Kubernetes yang diinginkan.
Tambahkan repositori KWasm Helm menggunakan helm repo add perintah .
Memprovisikan containerd-shim-spin ke simpul Kubernetes
Setelah runtime-class-manager diinstal pada kluster AKS, Anda harus membuat anotasi simpul Kubernetes yang seharusnya dapat menjalankan Spin Apps dengan kwasm.sh/kwasm-node=true. Anda dapat menggunakan kubectl annotate node untuk membuat anotasi semua simpul atau hanya simpul tertentu di kluster AKS Anda. Dalam contoh ini, kami membuat anotasi semua simpul di kluster AKS dengan kwasm.sh/kwasm-node=true anotasi.
Provisikan containerd-shim-spin ke semua simpul di kluster AKS menggunakan kubectl annotate node --all perintah .
Setelah Anda membuat anotasi simpul Kubernetes, runtime-class-manager gunakan Pekerjaan Kubernetes untuk memodifikasi simpul yang diinginkan. Setelah penyebaran containerd-shim-spinberhasil , simpul diberi label dengan kwasm.sh/kwasm-provisioned label. Anda dapat memeriksa apakah simpul yang diinginkan memiliki label yang kwasm.sh/kwasm-provisioned ditetapkan menggunakan kubectl get nodes --show-labels perintah .
kubectl get nodes --show-labels
Menyebarkan spin-operator
spin-operator Terdiri dari dua Definisi Sumber Daya Kustom (CRD) yang perlu Anda sebarkan ke kluster AKS Anda: RuntimeClass untuk spin dan SpinAppExecutor.
Sebarkan CRD dan RuntimeClass untuk spin menggunakan kubectl apply perintah .
Di bagian ini, Anda memverifikasi penginstalan SpinKube dengan membuat Aplikasi Spin sederhana menggunakan spin CLI dan JavaScript.
Membuat Aplikasi Spin baru
Buat Aplikasi Spin baru menggunakan spin new perintah dengan http-js templat.
spin new -t http-js --accept-defaults hello-spinkube
Ubah ke hello-spinkube direktori menggunakan cd perintah .
cd hello-spinkube
Instal dependensi menggunakan npm install perintah .
npm install
spin Gunakan CLI membuat aplikasi Hello, World dasar.
spin build
Membuat registri kontainer dan mengautentikasi spin CLI
Spin Apps di kemas sebagai artefak OCI dan didistribusikan melalui registri yang mematuhi OCI seperti Azure Container Registry (ACR). Buat instans ACR baru menggunakan az acr create perintah .
Mengemas, mendistribusikan, dan menyebarkan Aplikasi Spin
Sekarang setelah spin CLI diautentikasi terhadap instans ACR, Anda dapat mengemas dan mendistribusikan <your acr login server>/<repository-name>:<tag> Aplikasi Spin menggunakan spin registry push perintah diikuti dengan referensi artefak OCI (yang mengikuti skema penamaan).
Buat Rahasia Kubernetes jenis docker-registry untuk mereferensikan selama penyebaran Aplikasi Spin ke kluster AKS Anda menggunakan kubectl create secret perintah . Dalam contoh ini, rahasia diberi nama spinkube-on-aks.
Sebarkan Aplikasi Spin ke kluster AKS menggunakan kubectl apply perintah .
kubectl apply -f spinapp.yaml
Menjelajahi Aplikasi Spin di AKS
Mengambil daftar Aplikasi Spin
Ambil daftar Spin Apps menggunakan kubectl get spinapps perintah .
kubectl get spinapps
NAME READY DESIRED EXECUTOR
hello-spinkube 2 2 containerd-shim-spin
Mengambil primitif Kubernetes yang dibuat oleh spin-operator
Setelah penyebaran, spin-operator membuat primitif Kubernetes yang mendasar seperti Layanan, Penyebaran, dan Pod yang sesuai.
Ambil daftar layanan menggunakan kubectl get service perintah .
kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-spinkube ClusterIP 10.43.35.78 <none> 80/TCP 24s
Ambil daftar penyebaran menggunakan kubectl get deployment perintah .
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
hello-spinkube 2/2 2 2 38s
Ambil daftar pod menggunakan kubectl get pod perintah .
kubectl get pod
NAME READY STATUS RESTARTS AGE
hello-spinkube-5b8579448d-zmc6x 1/1 Running 0 51s
hello-spinkube-5b8579448d-bhkp9 1/1 Running 0 51s
Memanggil Aplikasi Spin
Untuk memanggil Aplikasi Spin, Anda mengonfigurasi penerusan port ke layanan yang spin-operator disediakan oleh dan menggunakan curl untuk mengirim permintaan HTTP.
Tetapkan penerusan port ke hello-spinkube layanan menggunakan kubectl port-forward perintah .
kubectl port-forward svc/hello-spinkube 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
Buka instans terminal baru dan gunakan perintah berikut curl untuk mengirim permintaan HTTP ke localhost:8080.
curl -iX GET localhost:8080
HTTP/1.1 200 OK
content-type: text/plain
content-length: 17
date: Tue, 28 May 2024 08:55:50 GMT
Hello from JS-SDK
Membersihkan sumber daya
Hapus Aplikasi Spin dari kluster AKS menggunakan kubectl delete perintah .
kubectl delete spinapp hello-spinkube
Hapus Docker-registry Secret (spinkube-on-aks) menggunakan kubectl delete secret perintah .
kubectl delete secret spinkube-on-aks
Hapus instans ACR yang Anda buat sebagai bagian dari tutorial ini menggunakan az acr delete perintah .
az acr delete --name <acr-name> --resource-group <resource-group-name> --yes
Hapus komponen SpinKube dari kluster AKS menggunakan perintah berikut.
# Remove the spin-operator
helm delete spin-operator --namespace spin-operator
# Remove the SpinAppExecutor
kubectl delete -f https://github.com/spinkube/spin-operator/releases/download/v0.2.0/spin-operator.shim-executor.yaml
# Remove the RuntimeClass for Spin
kubectl delete -f https://github.com/spinkube/spin-operator/releases/download/v0.2.0/spin-operator.runtime-class.yaml
# Remove the SpinKube CRDs
kubectl delete -f https://github.com/spinkube/spin-operator/releases/download/v0.2.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
Langkah berikutnya
Dalam artikel ini, Anda mempelajari cara menyebarkan SpinKube ke Azure Kubernetes Service (AKS) untuk menjalankan beban kerja WebAssembly (Wasm) tanpa server. Untuk menyebarkan lebih banyak beban kerja di AKS, lihat artikel berikut ini:
Sumber untuk konten ini dapat ditemukan di GitHub, yang juga dapat Anda gunakan untuk membuat dan meninjau masalah dan menarik permintaan. Untuk informasi selengkapnya, lihat panduan kontributor kami.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Bangun solusi end-to-end di Microsoft Azure untuk membuat Azure Functions, menerapkan dan mengelola aplikasi web, mengembangkan solusi yang menggunakan penyimpanan Azure, dan banyak lagi.