Menggunakan OpenFaaS di Azure Kubernetes Service (AKS)
OpenFaaS adalah kerangka kerja yang menggunakan kontainer untuk membangun fungsi tanpa server. Sebagai proyek sumber terbuka, ia telah mendapatkan adopsi skala besar dalam komunitas. Dokumen ini merinci penginstalan dan penggunaan OpenFaas pada kluster Azure Kubernetes Service (AKS).
- Artikel ini mengasumsikan pemahaman dasar tentang konsep Kube. Untuk informasi lebih, lihat konsep inti Kubernetes untuk Azure Kubernetes Service (AKS).
- Anda memerlukan langganan Azure aktif. Jika Anda tidak memilikinya, buat akun gratis sebelum memulai.
- Anda memerlukan kluster AKS. Jika Anda tidak memiliki kluster yang sudah ada, Anda dapat membuatnya menggunakan Azure CLI, Azure PowerShell, atau portal Azure.
- Anda perlu menginstal OpenFaaS CLI. Untuk opsi penginstalan, lihat dokumentasi OpenFaaS CLI.
Navigasi ke Azure Cloud Shell.
Tambahkan repositori bagan helm OpenFaaS dan perbarui ke versi terbaru menggunakan perintah berikut
helm
.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Sebagai praktik yang baik, OpenFaaS dan fungsi OpenFaaS harus disimpan di namespace layanan Kube mereka sendiri.
Buat namespace layanan untuk sistem dan fungsi OpenFaaS menggunakan
kubectl apply
perintah .kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Buat kata sandi untuk Portal UI OpenFaaS dan REST API menggunakan perintah berikut. Bagan helm menggunakan kata sandi ini untuk mengaktifkan autentikasi dasar pada OpenFaaS Gateway, yang diekspos ke Internet melalui LoadBalancer cloud.
# generate a random password PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1) kubectl -n openfaas create secret generic basic-auth \ --from-literal=basic-auth-user=admin \ --from-literal=basic-auth-password="$PASSWORD"
Penting
Menggunakan nama pengguna dan kata sandi untuk autentikasi adalah pola yang tidak aman. Jika Anda memiliki lisensi perusahaan OpenFaaS, sebaiknya gunakan Manajemen Identitas dan Akses (IAM) untuk OpenFaaS sebagai gantinya.
Dapatkan nilai untuk kata sandi Anda menggunakan perintah berikut
echo
.echo $PASSWORD
Sebarkan OpenFaaS ke kluster AKS Anda menggunakan
helm upgrade
perintah .helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Output Anda akan terlihat mirip dengan contoh output ringkas berikut:
NAME: openfaas LAST DEPLOYED: Tue Aug 29 08:26:11 2023 NAMESPACE: openfaas STATUS: deployed ... NOTES: To verify that openfaas has started, run: kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas" ...
Alamat IP publik dibuat untuk mengakses gateway OpenFaaS. Dapatkan alamat IP menggunakan
kubectl get service
perintah .kubectl get service -l component=gateway --namespace openfaas
Output Anda akan terlihat mirip dengan contoh output berikut:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gateway ClusterIP 10.0.156.194 <none> 8080/TCP 7m gateway-external LoadBalancer 10.0.28.18 52.186.64.52 8080:30800/TCP 7m
Uji sistem OpenFaaS dengan menelusuri ke alamat IP eksternal pada port 8080,
http://52.186.64.52:8080
dalam contoh ini, tempat Anda diminta untuk masuk. Pengguna default adalahadmin
dan kata sandi Anda dapat diambil menggunakanecho $PASSWORD
.Atur
$OPENFAAS_URL
ke URL alamat IP eksternal pada port 8080 dan masuk dengan Azure CLI menggunakan perintah berikut.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Navigasikan ke sistem OpenFaaS menggunakan URL OpenFaaS Anda.
Buat fungsi menggunakan portal OpenFaas dengan memilih Sebarkan Fungsi Baru dan cari Figlet.
Pilih fungsi Figlet, lalu pilih Sebarkan.
Panggil fungsi menggunakan perintah berikut
curl
. Pastikan Anda mengganti alamat IP dalam contoh berikut dengan alamat gateway OpenFaaS Anda.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Output Anda akan terlihat mirip dengan contoh output berikut:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Navigasi ke Azure Cloud Shell.
Buat grup sumber daya baru untuk instans Azure Cosmos DB menggunakan
az group create
perintah .az group create --name serverless-backing --location eastus
Sebarkan instans Azure Cosmos DB jenis
MongoDB
menggunakanaz cosmosdb create
perintah . Gantiopenfaas-cosmos
dengan nama instans unik Anda sendiri.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Dapatkan database Azure Cosmos DB string koneksi dan simpan dalam variabel menggunakan
az cosmosdb keys list
perintah . Pastikan Anda mengganti nilai untuk--resource-group
argumen dengan nama grup sumber daya Anda, dan--name
argumen dengan nama instans Azure Cosmos DB Anda.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Isi Azure Cosmos DB dengan data pengujian dengan membuat file bernama
plans.json
dan menyalin di json berikut.{ "name" : "two_person", "friendlyName" : "Two Person Plan", "portionSize" : "1-2 Person", "mealsPerWeek" : "3 Unique meals per week", "price" : 72, "description" : "Our basic plan, delivering 3 meals per week, which will feed 1-2 people.", "__v" : 0 }
Instal alat MongoDB. Contoh perintah berikut menginstal alat-alat ini menggunakan brew. Untuk opsi penginstalan lainnya, lihat dokumentasi MongoDB.
brew install mongodb
Muat instans Azure Cosmos DB dengan data menggunakan alat mongoimport .
mongoimport --uri=$COSMOS -c plans < plans.json
Output Anda akan terlihat mirip dengan contoh output berikut:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Buat fungsi menggunakan
faas-cli deploy
perintah . Pastikan Anda memperbarui nilai-g
argumen dengan alamat gateway OpenFaaS Anda.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Setelah disebarkan, output Anda akan terlihat mirip dengan contoh output berikut:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Uji fungsi menggunakan perintah berikut
curl
. Pastikan Anda memperbarui alamat IP dengan alamat gateway OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Output Anda akan terlihat mirip dengan contoh output berikut:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Catatan
Anda juga dapat menguji fungsi dalam UI OpenFaaS:
Lanjutkan belajar dengan lokakarya OpenFaaS, yang mencakup serangkaian lab langsung yang mencakup topik seperti cara membuat bot GitHub Anda sendiri, menggunakan rahasia, melihat metrik, dan penskalaan otomatis.
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: