FaaS on Kubernetes - Function as a Service on top of Kubernetes - Serverless


Bismillah
Yuu bermain lagi kk..

Sekarang kita mainan FaaS di Kubernetes yuu.. jadi ceritanya kita mau deploy NodeJS dan Python tapi sudah lelah buat Dockerfile dan kawan2nya hahaaa.. Oh ya untuk code Kubernetes dan contoh codenya ada di github ane ya.. di git@github.com:unixhat/kubeless.git. Ada tiga step berikut:

1. Deploy Kubeless
2. Deploy Code
3. Expose function to the public


1. Deploy Kubeless:
   a. Install kubeless
  • Install kubeless di laptop, ane pake macos jadi tinggal brew install kubeless
   b. Install Kubeless di Kubernetes Cluster
  • export RELEASE=$(curl -s https://api.github.com/repos/kubeless/kubeless/releases/latest | grep tag_name | cut -d '"' -f 4)
  • kubectl create ns kubeless
  • kubectl create -f https://github.com/kubeless/kubeless/releases/download/$RELEASE/kubeless-$RELEASE.yaml














Kita cek apakah sudah terjadi pods, deployment dan customdef-nya:

kubectl get pods -n kubeless
kubectl get deployment -n kubeless
kubectl get customresourcedefinition




Alhamdulillah terlihat sudah running dan jadi semua yaa..

2. Deploy code NodeJS dan Python

Dan di step 2 ini kita mau ngetes nih, apakah kubeless berfungsi seperti yang diharapkan sodara-sodara?

masukan perintah di bawah ini setelah kamu masuk ke dalam folder kubeless ya..

a. deploy python
kubeless function deploy backend --runtime python2.7 \
                                 --from-file python/backend.py \
                                 --handler test.backend

b. deploy nodeJS
kubeless function deploy frontend --runtime nodejs6 \
                                  --dependencies node/package.json \
                                  --handler test.frontend \
                                  --from-file node/frontend.js



c. Setelah itu kita list functionnya,, apakah sudah ter-deploy dengan baik aplikasi kita:

kubeless function ls


d. Coba yu masukin datanya ke function yg sudah kita ter-deploy dari code kita tadi: 

kubeless function call frontend --data 'coba masukin data'

Pic di atas itu default balikan dari frontend app kita karena kita buat returnnya begitu hahaa, tapi sebenernya data udah masuk cekidot nyok begini perintahnya:

kubectl get pods
kubectl logs frontend-76b48c74b-lshlb


Alhamdulillah udah masuk ternyata sodara2..

3. Expose function to the public

a. pertama kita buat ingress, role, deployment, configmap, service dan namespace-nya dulu yuu kk..

kubectl create -f nginx-ingress-controller-with-elb.yml


b. lalu kalo semua ga ada error lanjut kita buat trigger http-nya

kubeless trigger http create frontend --function-name frontend --hostname frontend.unixhat.com
kubectl get ingress


c. Cek domain address dari ELB-nya
kubectl describe ingress frontend


Berhubung domain unixhat.com belum di beli lagi, jadi saya edit di /etc/hosts, pertama address ELB aja resolve ke IP terus ane taruh di /etc/hosts.

d. Cek di browser

Buka deh di browser.. Alhamdulillah ya berhasil.. 



Sekian ya berbaginya.. semoga Allah berikan manfaat taufik dan hidayah-Nya untuk kita semua.