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.

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

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.

Tahap Pengerjaan


1. Pertama kita Buat minimal 2 Instance di OpenStack yaitu Master & Worker


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 
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)
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)

           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-servicdigunakan 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 :
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.

             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)
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




Komentar

  1. mas mau nanya untuk kubernetes dashboard saya portnya ga ada yaa ,,apakah ada masalah dalam instalasi
    mohon bantuanny terimakasih

    BalasHapus

Posting Komentar

Postingan Populer