Contents

Instalasi Lokal Minishift OKD

Minishift membangun klaster single-node OKD (Openshift) pada VM (Virtual Machine) yang berdiri di atas Hypervisor milik komputer lokal. Dengan Minishift kita dapat mempelajari OKD dalam komputer sendiri sebelum menggunakan teknologi Openshift di lingkungan production sebenarnya.

OpenShift dan OKD

OpenShift adalah distribusi dari Kubernetes yang memiliki fungsi serupa, namun memiliki beberapa fitur tambahan yang memanjakan. Seiring dengan populernya ide cloud computing, berbagai evolusi komputasi telah terjadi. Misalnya adalah metode dalam mengembangkan dan delivery aplikasi untuk sampai ke hadapan user. Seringkali aplikasi/product digital akan dikemas dalam bentuk container untuk alasan kompabilitas, skalabilitas, keamanan, hingga kecepatan pengembangan. Kubernetes awalnya diinisialisasi oleh Google dan kini dikembangkan oleh CNCF, sedangkan OpenShift dinaungi oleh Red Hat menawarkan kemampuan manajemen workloads aplikasi serta otomatisasi secara deklaratif. OpenShift merupakan paid-product, namun kita juga dapat menggunakan versi free of charge bernama OKD sebagai alternatif. OKD pernah bernama OpenShift Origin sebelum mengalami pergantian julukan. Saat artikel ini diterbitkan, OKD telah berkembang menjadi beberapa macam produk, beberapa diantaranya yaitu Self-Managed (seperti OpenShift Container Platform), hingga Managed (seperti Openshift Online dan Openshift Dedicated).

/instalasi-lokal-minishift-okd/red-hat-openshift.png
OpenShift by Red Hat

Katalog OKD

OKD 3 by-default telah menyediakan dukungan bagi aplikasi dengan beberapa bahasa pemrograman. OKD 3 memiliki kickstart template seperti berikut :

  • Rails untuk Ruby
  • Django untuk Python
  • Node.js
  • CakePHP untuk PHP
  • Dancer untuk Perl
  • Maven untuk Java

Sedangkan untuk basis data, OKD 3 juga telah menyediakan beberapa diantaranya :

  • MySQL
  • MongoDB
  • PosgreSQL

Tidak hanya itu saja, OKD 3 juga telah menawarkan fitur CI/CD Pipeline yang siap di-integrasikan dengan Jenkins, sebuah Middleware Apache, hingga Reverse-proxy NGINX.

Minishift

Minishift adalah sebuah tool yang membantu kita untuk menjalankan OpenShift di komputer lokal. Jika bermain dengan Kubernetes, biasanya kita akan menjumpai tool serupa bernama Minikube. Minishift akan membuat dan menjalankan sebuah VM di atas Hypervisor yang tersedia di komputer kita. Saat artikel ini diterbitkan, Minishift hanya mendukung hingga OKD versi 3.11 atau OpenShift 3.

/instalasi-lokal-minishift-okd/arsitektur-minishift.png
Arsitektur Minishift


Prerequisites

Pastikan bahwa komputer lokal kita memiliki spesifikasi yang cukup untuk memasang OKD/OpenShift. Secara default Minishift akan membuat sebuah VM dengan spesifikasi seperti berikut.

ResourcesValue
CPUs2 core
Memory4 GB
Storage20 GB

Mempersiapkan Environment Virtualiasi

Minishift mendukung beberapa Hypervisor untuk membuat dan menjalankan VM. Beberapa diantaranya adalah sebagai berikut.

Sistem OperasiHypervisor
Microsoft WindowsHyper-V
GNU/LinuxKVM
MacOShyperkit
All PlatformVirtualBox

Karena saya menggunakan GNU/Linux, maka dalam artikel ini kita akan menggunakan KVM sebagai environment virtualiasi Minishift. Atau lebih tepatnya, saya menggunakan distro GNU/Linux Arch-based.

Konfigurasi libvirt

1. Pasang paket-paket yang dibutuhkan untuk virtualisasi

1
$ sudo pacman -Sy virt-manager kvm libvirt-runit qemu qemu-guest-agent-runit ebtables bridge-utils

2. Tambahkan user ke dalam grup kvm dan libvirt

1
2
3
$ sudo usermod -aG kvm,libvirt $(whoami)
$ newgrp libvirt
$ id

Jika sudah benar, seharusnya akan keluar output seperti berikut

/instalasi-lokal-minishift-okd/group.png
Group

3. Merubah konfigurasi qemu

Ganti konfigurasi /etc/libvirt/qemu.conf agar menggunakan group kvm.

1
$ sudo sed -ri 's/.?group\s?=\s?".+"/group = "kvm"/1' /etc/libvirt/qemu.conf

4. Menjalankan service libvirt

1
2
3
$ sudo ln -s /etc/runit/sv/libvirtd /run/runit/service
$ sudo ln -s /etc/runit/sv/virtlockd /run/runit/service
$ sudo ln -s /etc/runit/sv/virtlogd /run/runit/service
Perhatian
Saya menggunakan runit sebagai sistem init di komputer lokal. Jika memakai systemd maka silahkan menggunakan perintah systemctl untuk mengelola service.

5. Menjalankan jaringan libvirt

Periksa status jaringan yang tersedia saat ini.

1
$ sudo virsh net-list --all

Maka akan muncul output seperti berikut.

1
2
3
Name                 State      Autostart     Persistent
---------------------------------------------------------
default              inactive     no           yes

Artinya kita memiliki sebuah jaringan bernama default. Maka aktifkan dan buat supaya jaringan tersebut berjalan secara otomatis dengan perintah seperti berikut.

1
2
$ sudo virsh net-start default
$ sudo virsh net-autostart default

Memasang Minishift

Pasang paket-paket yang dibutuhkan.

1
$ yay -Sy minishift docker-machine-kvm origin-client
Info
Pada distro Arch-based, minishift dan beberapa paket pendukung lainnya telah tersedia pada AUR (Arch User Repository). Untuk melakukan instalasi paket dari AUR, saya menggunakan AUR Helper bernama yay.

Menjalankan OKD dengan Minishift

Jalankan perintah seperti berikut.

1
$ minishift start

Atau kita dapat memberikan flags ketika menjalankan minishift untuk membuat VM dengan spesifikasi yang kita butuhkan. Misalnya saya ingin Minishift membuat VM dengan memory sebesar 3 GB, CPU sebanyak 1 core, dan Storage sebesar 8 GB saja. Jalankan perintah seperti berikut.

1
$ minishift start --disk-size 8g --memory 3072 --cpus 1

Jika berhasil maka akan muncul output seperti berikut.

/instalasi-lokal-minishift-okd/okd-running.png
OKD Berjalan

Pengujian Minishift

Periksa apakah VM benar-benar berhasil dibuat.

1
$ sudo virsh list

Akan muncul output seperti berikut jika benar.

1
2
3
Id   Name        State
---------------------------
 4    minishift   running

Memeriksa status Minishift dengan perintah berikut.

1
$ minishift status

Jika OKD berjalan maka kurang lebih akan muncul output seperti berikut.

1
2
3
4
5
Minishift:  Running
Profile:    minishift
OpenShift:  Running (openshift v3.11.0+1cd89d4-542)
DiskUsage:  43% of 6.9G (Mounted On: /mnt/sda1)
CacheUsage: 1.707 GB (used by oc binary, ISO or cached images)

SSH Remote Access

Untuk mencoba mengakses VM Minishift melalui SSH kita dapat menjalankan perintah berikut.

1
$ minishift ssh

/instalasi-lokal-minishift-okd/minishift-remote-access.png
Remote Access Minishift

Menghentikan Minishift

Untuk menghentikan Minishift kita dapat menjalankan perintah berikut.

1
$ minishift stop

Menghapus Resource Minishift

Jika ingin menghapus seluruh resource termasuk VM yang telah dibuat, kita dapat menjalankan perintah berikut.

1
$ minishift delete --force

Pengujian

Web Console

Seperti yang telah kita lihat sebelumnya. Bahwa web console telah dijalankan pada alamat https://192.168.42.192:8443/console. Sekarang buka alamat tersebut menggunakan web browser untuk memeriksa apakah web console benar-benar berjalan.

/instalasi-lokal-minishift-okd/web-console-okd.png
Web Console OKD

Command Line

origin client atau oc adalah program berbasis teks yang digunakan untuk mengelola OKD (OpenShift) lewat terminal. Kita dapat melihat status OKD dengan perintah seperti berikut

1
$ oc status

Karena masih kosong, dan OKD belum kita perintah untuk menjalankan layanan apapun maka akan muncul output seperti berikut.

1
2
3
4
In project My Project (myproject) on server https://192.168.42.156:8443

You have no services, deployment configs, or build configs.
Run 'oc new-app' to create an application.

Kesimpulan

Jika dibandingkan dengan Minikube, maka seharusnya Minishift bisa dikatakan memiliki fungsi yang serupa. Sayangnya saat artikel ini dibuat Minishift hanya dapat digunakan untuk membangun OKD 3 (OpenShift 3), sedangkan untuk membangun OpenShift 4 di komputer lokal kita dapat menggunakan tool lain bernama CodeReady. Sayangnya CodeReady membutuhkan spesifikasi komputer yang cukup besar. Setelah kita perhatikan, By-default OKD yang dibangun oleh Minishift berjalan pada VM CentOS 7 Core untuk melakukan instalasi cluster. OKD adalah versi upstream dari pengembangan project OpenShift, artinya tentu saja OpenShift lebih stabil dan layak digunakan jika dibandingkan dengan OKD. Namun untuk belajar workflow dari OpenShift, OKD bisa dibilang cukup mumpuni (tentunya dengan effort yang mungkin lebih besar).


Referensi