Kubernetes adalah aplikasi untuk automisasi deployment, scaling dan manajemen aplikasi berbasis container. Dimana dengan menggunakan Kubernetes pengguna akan dimanjakan dengan proses automisasinya tersebut. Namun dalam prakteknya terkadang akan sulit dalam proses deployment Kubernetes tersebut, dimana Kubernetes menggunakan servis microservices sebagai arsitekturnya, dimana arsitektur tersebut akan memecah proses atau servis dalam sekala yang lebih kecil dan saling terhubung, berbeda dengan proses monolithic, dimana semua servis akan dijadikan satu dan saling terhubung. Kira – kira seperti ini perbandingan dari arsitektur microservices dan monolithic
Terlihat jelas perbedaanya dimana arsitektur monolithic menjalankan beberapa servis yang berbeda dan terhubung dalam satu server. Sedangkan microservices menjalankan servis yang berbeda pada beberapa server, namun tetap saling terhubung.
Jika kita bandingkan maka bisa kita bedakan sebagai berikut :
Monolithic
- Jika aplikasi makin kompleks dan penggunanya makin banyak, kenaikan biaya yg dibutuhkan lebih besar daripada jika menggunakan microservices.
- Satu server untuk handle semua layanan.
- Tidak bisa menggunakan module module yang tidak terinstall pada server utama. misalkan mau menggunakan no-sql atau sql, nodejs atau php.
- Proses update aplikasi akan berimbas ke seluruh aplikasi.
- Seluruh Code atau component menjadi 1 server.
- Untuk scaling hanya bisa mengupgrade resource server saja.
- Latensi komunikasi antar modul sangat rendah karena berada dalam server yang sama.
MicroService
- Aplikasi scalable, secure dan reliable.
- Setiap layanan memiliki infrastruktur sendiri.
- Karena setiap layanan memiliki infrastruktur sendiri, bisa dengan mudah membuat aplikasi tanpa memikirkan hubungan / ketergantungan module dengan layanan yang lain. misalkan anda bisa membuat aplikasi dengan beberapa bahasa pemrograman.
- Proses update aplikasi hanya melingkupi layanan yang terkait.
- Codenya berbasis layanan. Kamu harus memiliki dokumentasi yang lebih dari pada infrastruktur Monolithic.
- Proses Scalingnya bisa menggunakan beberapa metode, scaling up dan scaling side.
- Ada kemungkinan komunikasi antar modulenya mengalami kegagalan. Untuk itu kamu harus selalu mempersiapkan cara handlenya.
Ok karena sudah mengenai sedikit mengenai arsitektur MicroService, langsung aja dimulai untuk proses instalasi kubernetes. Untuk dapat menginstall kubernetes sebenarnya ada beberapa cara untuk proses instalasinya. Bisa diinstall dilokal, atau bisa langsung di install di cloud penyedia VPS semisal GCP, DO, dan lain sebagainya. Untuk tutorial kali ini saya akan memulai dari instalasi Kubernetes di lokal, menggunakan Minikube. Untuk proses nya sendiri cukup mudah, anda cukup membutuhkan 1 buah laptop atau pc, dan sebuah VirtualBox. Dimana virtualbox tersebut akan sebagai media tempat instalasi Kubernetes. Sebelum memulai, ada 2 aplikasi lagi yang harus diperlukan instalasi kubectl dan instalasi minikube. Untuk bahan – bahan nya dapat diambil disini, untuk Kubectl dan untuk Minikube. Sedikit info untuk proses instalasi nya dapat dilakukan diberbagai sistem operasi, baik di Linux, Windows maupun Mac OS. Saya sendiri sudah menginstal di sistem operasi Linux yaitu OpenSUSE dan Windows 10 Home Edition. Untuk Mac belum coba, karena belum beli Laptopnya. Tapi lihat video – video di youtube sih bisa instalasi MiniKube dan Kubectl di Mac OS. Oh ya kali ini saya hanya akan membahas instalasi di Linux saja, untuk di Windows mungkin akan dilain waktu.
Ok jika sudah semua, langsung aja dimulai proses instalasinya.
Instalasi Minikube
Setelah mendownload file instalasi Minikube jalankan minikube nya. Karena ini adalah bineri instalasi, cukup jalankan dengan cara berikut jika di Linux.
dwinar@dwinar:~> minikube start 🎉 minikube 1.6.2 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.6.2 💡 To disable this notice, run: 'minikube config set WantUpdateNotification false' 🙄 minikube v1.5.2 on "Opensuse-Leap" "15.1" 💡 Tip: Use 'minikube start -p ' to create a new cluster, or 'minikube delete' to delete this one. 🔄 Starting existing virtualbox VM for "minikube" ... ⌛ Waiting for the host to be provisioned ... 🐳 Preparing Kubernetes v1.16.2 on Docker '18.09.9' ... 🔄 Relaunching Kubernetes using kubeadm ... ⌛ Waiting for: apiserver 🏄 Done! kubectl is now configured to use "minikube" dwinar@dwinar:~>
Tunggu hingga proses nya selesai.
Instalasi Kubectl
Setelah mendownload file instalasi Minikube jalankan minikube nya. Karena ini adalah bineri instalasi, cukup jalankan dengan cara berikut jika di Linux.
chmod +x kubectl dwinar@dwinar:~> kubectl version Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:23:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"} Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:09:08Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"} dwinar@dwinar:~>
NB : Agar perintah minikube dan kubectl dapat dijalankan disetiap directory, copy file minikube dan kubectl ke directory /usr/local/bin
Cukup mudah kan, dengan dua langkah diatas, anda sudah mempunyai Kubernetes yang terinstal di laptop atau pc anda. Untuk penggunaan kubernetes akan saya lanjut di tutorial lainnya, makasih telah membaca.