Implementation Kubernetes on Openstack
Pendahuluan
Assalamu'alaikum WaarohmatullahiWabarokatuh
Apakah kawan kawan sedang mencari solusi untuk deployment Web dan lain sebagainya di Environtment yang Secure, Reliable, UserFriendly, and tentunya Low Resource ?
Yup anda telah mampir di Blog yang tepa, karena disini kita akan mempelajari Container Technology.
Penasaran bukan, apa itu Container Technology ?
Atau mungkin ada yang pernah berkenalan dengan Docker Container ?
Pastinya gak mau kenalan aja dong ? Yup mari kita Bahas lebih lanjut pada postingan ini.
So, the conclussion is the Master Node is a key to configure or monitoring the Worker Node and in Worker Node adalah dimana kita mendeploy service service yang kita butuhkan.
Penasaran bukan, apa itu Container Technology ?
Atau mungkin ada yang pernah berkenalan dengan Docker Container ?
Pastinya gak mau kenalan aja dong ? Yup mari kita Bahas lebih lanjut pada postingan ini.
Tujuan
1. Mempelajari Lebih lannjut tentang Container Technologi.
2. Mempelajari administrasi OpenStack sebagai Cloud Platform.
3. Laporan dari Tugas di KelasNolsatu dari Bapak Utian Ayuba.
4. Menambah Pengalaman dalam mengadministrasi Kubernetes.
Basic Concept
Sebelum memepelajarilebih lanjut mari kita review tentang Docker
Docker
Petikemas (container) adalah satu kemasan yang dirancang secara khusus dengan ukuran tertentu, dapat dipakai berulang kali, dipergunakan untuk menyimpan dan sekaligus mengangkut muatan yang ada di dalamnya. Filosofi di balik Petikemas adalah membungkus atau membawa muatan dalam peti-peti yang sama dan membuat semua kendaraan dapat mengangkutnya sebagai satu kesatuan, baik kendaraan itu berupa Kapal laut, kereta api, truk, atau angkutan lainnya, dan dapat membawanya secara cepat, aman, dan efisien atau bila mungkin, dari pintu ke pintu (door to door).
Dari sini muncul pertanyaan, Apa itu Container Orchestration ?
Container Orchestration
Container Orchestration merupakan tool yang berguna untuk mengelompokan Hosts dan secara bersamaan mebentuk sebuah Cluster.Container Orchestration Tool
1. Docker Swarm
2. Kubernetes
3.Amazon ECS
4. bisa dibaca di katacoda.com untuk detilnya
Yup, setelah memahami tentang Container Technology, now together we open the Kubernetes door's. Prepare your heart
Kubernetes
Kubernetes merupakan OpenSource Project yang di pelopori oleh Google dan memiliki license Apache License Version 2.0. Kubernetes sendiri ditulis dengan GoLang Programing Language.
Kubernetes atau biasa disingkat K8S merupakan sebuah OpenSource System for automatng deployment, scaling, and management of containerized applicatons.
Berikut arsitektur K8S
Tahap Pengerjaan
2. Inisiasi ke 2 Instance then Join worker Node to Master Node
A) check Host
B) Install Docker.io and Kubernetes
C) Inisialisasi Master in Master Node
Jika Success teman-teman akan dapat mengeksekui command :
# Bagaimana masih semangat ?
#LANJUT !!!!
D) Joining Worker Node to Master Node
a) from Master Node ssh to Worker Node
b)
E) In Master Node do command :
Jika output sperti gambar maka teman teman bisa lanjut
dan jika tidak, maka silahkan TShoot :V
3. Coba lakukan $ifconfig
Mungkin anda bertanya tanya kenapa tercreate banyak interfaces, gambar ini akan menjawab rasa penasaran anda
C) Inisialisasi Master in Master Node
Jika Success teman-teman akan dapat mengeksekui command :
# Bagaimana masih semangat ?
#LANJUT !!!!
D) Joining Worker Node to Master Node
a) from Master Node ssh to Worker Node
b)
E) In Master Node do command :
Jika output sperti gambar maka teman teman bisa lanjut
dan jika tidak, maka silahkan TShoot :V
3. Coba lakukan $ifconfig
Mungkin anda bertanya tanya kenapa tercreate banyak interfaces, gambar ini akan menjawab rasa penasaran anda
Interface2 tersebut digunakan untuk komunkasi antar POD maupun Container2 yang ada di dalam pod.
4. Install DashBoard
Yup, sampailah kita di penginstalan Dashboard untuk memudahkan kita dalam memajemen Kubernetes.
Jika teman-teman bertanya-tanya dimana harus mengeksekusi command2 di bawah dan selanjutnya, jawabannya ialah Node Master. Kenapa Node master,
sesuai dengan Arsitektur yang ada Node master digunakan untuk memanjemen Worker Node , tentu saja setelah $kubectl get nodes success.
A) Cex dahulu cluster dari Kubernetes
B) Do this Command :
C)
D) Jika anda menggunakan OpenStack, anda diharuskan menggunakan
ssh-tunnel
$ ssh -D OpenSourcePort user@OpenStackVM
E) Config SOCK Protocol di Firefox
F) Access Dashboard
G) Jika anda menglami error > dashboard tidak menampilkan data deployment, pods, dll, maka excex Command berikut
## [NotRecommendet] Set Permissive RBAC Permissions :
$kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts
4. ##Masih kuat lanjut kawan ?
# Lanjut Minnnnn
Reference bisa dilihat disini :
https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
A) Pertama fahami dulu Topologinya
B) Dari Topology, ita faham bahwa nanti NFS-server akan mengambil resource dari GCE PD secara Persistent(berkelanjutan) dan akan dilakukan / tercreate menjadi Persitent Volume Claim. Persistent Volume Claim merupakan Block Storage yang akan digunakan untuk POD Web Frontend..
C)
Penjelasan : a. Di Worker Node 1 kita tetap harus membuat Folder Manula karena untuk engatur file .yml yg akan di excex oleh Master Node
b. nfs-server & nfs-server-service digunakan dalam transmisi data dari GCE PD. Dan nfs-server sendiri merupakan Replication Controller. Perintah diatas akan men-Create file index.html di Worker Node.
D)
Penjelasan :a. Nomer 4 & 5 merupakan tahap Persistent Volume Claim(PVC) dimana PVC sendiri berguna untuk memberikan pengalihan yang memungkinkan beberapa POD untuk merujuk ke server NFS
menggunakan nama simbolik daripada alamat server hardcoded. Selain itu PVC lah yang akan dianggap oleh POD merupakan Volume yang akan ia pergunakan secara single / sharing.
* Bisa cex Dashboard untuk lebih mudahnya
b. Fake Backend(N. 7) berguna untuk mengupdate informasi setiap 10s pada file index.html yang dibuat oleh nfs-server di Worker Node. atau kita bisa sebut informasi Persitent Volume terkini yang akan di distribusikan untuk Web Frontend
E) Langkah akhir, install Web Frontend
Penjelasan :
Cek pada Kubernetes Dashboard pada menu ingress apakah rewrite config kita sudah Running.
$ echo "floating ip instance master rsvp.myweb.ok nfs.myweb.ok"
4 . https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
5. Github & Blog CloudYuga
6. Artikel in Medium written by Oleg Smetanin
4. Install DashBoard
Yup, sampailah kita di penginstalan Dashboard untuk memudahkan kita dalam memajemen Kubernetes.
Jika teman-teman bertanya-tanya dimana harus mengeksekusi command2 di bawah dan selanjutnya, jawabannya ialah Node Master. Kenapa Node master,
sesuai dengan Arsitektur yang ada Node master digunakan untuk memanjemen Worker Node , tentu saja setelah $kubectl get nodes success.
A) Cex dahulu cluster dari Kubernetes
B) Do this Command :
C)
Lihat service kubernetes-dashboard apakah sudah Runnig,
dan catat berapa Port nya. Disana tertelis 443:31856 yang artinya, kita diharuskan mengakses port 31856 untuk dapat masuk ke Dashboard Kubernetes yang ada di Port 443.D) Jika anda menggunakan OpenStack, anda diharuskan menggunakan
ssh-tunnel
$ ssh -D OpenSourcePort user@OpenStackVM
E) Config SOCK Protocol di Firefox
F) Access Dashboard
G) Jika anda menglami error > dashboard tidak menampilkan data deployment, pods, dll, maka excex Command berikut
## [NotRecommendet] Set Permissive RBAC Permissions :
$kubectl create clusterrolebinding permissive-binding --clusterrole=cluster-admin --user=admin --user=kubelet --group=system:serviceaccounts
4. ##Masih kuat lanjut kawan ?
# Lanjut Minnnnn
LAB1: DEPLOY MULTI APP
Pada lab kali ini kita akan mempratekkan Deployinig App dengan Kubernetes.Reference bisa dilihat disini :
https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
A) Pertama fahami dulu Topologinya
B) Dari Topology, ita faham bahwa nanti NFS-server akan mengambil resource dari GCE PD secara Persistent(berkelanjutan) dan akan dilakukan / tercreate menjadi Persitent Volume Claim. Persistent Volume Claim merupakan Block Storage yang akan digunakan untuk POD Web Frontend..
C)
b. nfs-server & nfs-server-service digunakan dalam transmisi data dari GCE PD. Dan nfs-server sendiri merupakan Replication Controller. Perintah diatas akan men-Create file index.html di Worker Node.
D)
* Bisa cex Dashboard untuk lebih mudahnya
b. Fake Backend(N. 7) berguna untuk mengupdate informasi setiap 10s pada file index.html yang dibuat oleh nfs-server di Worker Node. atau kita bisa sebut informasi Persitent Volume terkini yang akan di distribusikan untuk Web Frontend
E) Langkah akhir, install Web Frontend
a) Bisa dilihat bagian yang saya tandai disana tertera ada service yang telah kita Create dgn nfs-web-service.yaml. Lalu 2POD yang tercreate dengan file nfs-web-rc.yaml. 2 POD tersebut akan berbagi resource Persistent Volume Claim / nfs storage melalui informasi yang terupdate di file index.html.
b) do command :
ingat 2 pod ini akan menjadi 2 container yang mempunyai service Load Balancing. Teman2 bisa cex dengan access ip di container poada POD nfs-web, menggunakan Console Browser(links).
LAB2: INGRESS
5. Ingress ialah collection of Rule yang mengijinkan koneksi dari external menuju ke cluster service di Kubernetes. Lalu, apa perbedaannya dengan Deploying App pada Lab sebelumnya ?
Penasaran bukan ?
mari kita mulai labnya ...
Gambar di atas merupakan Cara Kerja Ingress, Karena Ingress mengkonfigurasi Layer 7 jadi seorang client / user mengakses Ingress dari External Network dan tentu saja mengakses dari Browser menggunakan URl & URL Map berperan mengarahakan ke POD dengan Service yg di Request.. Dalam hal ini Green & Blue.
Cek pada Kubernetes Dashboard pada menu ingress apakah rewrite config kita sudah Running.
6. Different Test Lab1 & LAb2
A) Pastikan SSH Tunnel masih terkoneksi ke Vm Openstack
B) Do command :
Bisa kita lihat ada 2 service yang telah kita buat sebelumnya yaitu rsvp dan nfs-web.
C) Kita edit dulu /etc/hosts kita, karena di file config rewrite.yml kita juga mendefinisikan hosts
$ echo "floating ip instance master rsvp.myweb.ok nfs.myweb.ok"
D) Buka IP nfs-web di LAB 1 di Browser Client,
E) Buka link yang telah kita Definisikan di /etc/hosts
nb: perhatikan portnya
F) akses ip Floating kita di Browser Clientbeserta portnya (ip floating:Port).
Maka akan mengeluarkan Output yang sama dengan diakses melalui Ip nfs-web di browser console Node master.
Maka akan mengeluarkan Output yang sama dengan diakses melalui Ip nfs-web di browser console Node master.
Kesimpulannya : Sesai dengan pengertian Ingress sebelumnya maka Ingress dapat digunakan untuk mengakses POD Load Balancing melalui Web Browser, asalkan SSH tunnel terhubung ke Vm Openstack(dlm kasus ini) dan Sock Protocol pada browser telah di konfigurasi(lihat diatas).
QUIZ
1. Pada Lab2 kita masih menggunakan Port untuk dapat mengakses POD melalui Ingress. Sudang Ingress sendiri sudah mempunyai URL Map untuk mengarahkan service HTTP Load Balancer. SO, seharusnya tanpa Port pun harus bisa diakses.
Jadi tugas teman2 ialah membuat Container yg ada dalam POD dapat diakses melalui Web Browser client(external)
Jadi tugas teman2 ialah membuat Container yg ada dalam POD dapat diakses melalui Web Browser client(external)
Hasilnya akan seperti ini
Reference
1. Kelas nolsatu.id
2. Bapak Utian Ayuba
3. Saudara Muhamad hanif
4 . https://github.com/kubernetes/examples/tree/master/staging/volumes/nfs
5. Github & Blog CloudYuga
6. Artikel in Medium written by Oleg Smetanin
mas mau nanya untuk kubernetes dashboard saya portnya ga ada yaa ,,apakah ada masalah dalam instalasi
BalasHapusmohon bantuanny terimakasih