Container management platform using Rancher

Ini tulisan pertama saya di medium, saya akan membahas sedikit mengenai rancher, tulisan ini diperuntukan para DevOps bagaimana melakukan deployment aplikasi berbasis web menggunakan teknologi kontainer.

Bagi yang belum pernah mendengar istilah kontainer (container), yaitu suatu alat untuk mengemas dan mendistribusikan sesuatu hal dari satu tempat ke tempat lain. Di dalam linux, container ini dapat diartikan sebagai alat yang dapat dipergunakan untuk memberikan sistem yang terisolasi (Isolated environment) pada level OS yang dijalankan pada satu induk linux kernel (host). 
Sudah banyak artikel yang membahas tentang pengenalan teknologi container ini, tapi yang akan saya sedikit bahas yaitu tools untuk mengelola container-container tersebut.

Menjalankan single container bisa di lakukan dengan menggunakan perintah “docker run” atau jika suatu service container berinteraksi dengan service container yang lain di dalam satu host, anda bisa menuliskan docker compose file lalu jalankan dengan “docker compose up”, seiring pengalaman saya dalam deployment aplikasi berbasis web menggunakan docker, muncul banyak pertanyaan.

  1. Bagaimana jika mengelola service container dalam jumlah banyak dan menggunakan load balancer untuk menyeimbangkan traffic antara satu container dengan container lainya?
  2. Bagaimana jika saya ingin melakukan scale up container?
  3. Bagaimana jika saya ingin pindah cloud provider, jika sebelumnya saya pakai digitalocean lalu saya ingin beralih ke AWS (Amazon Web Service)?
  4. Bagaimana jika saya ingin menerapkan zero downtime deployment? (Ini hal yang menarik bagi saya, karna pada saat melakukan deployment ke production akan ada downtime walaupun kurang lebih 1 atau 2 menit)

Yupzz.! Semua bisa di lakukan dengan cara ssh ke dalam terminal dan jalankan perintah docker. but…… that’s complex!

Salah satu tools yang saya pakai untuk mengelola container adalah rancher. Seperti yang dikutip dari website rancher:

Containers make software development easier, enabling you to write code faster and run it better. However, running containers in production can be hard. Rancher is a complete container management platform that makes it easy to deploy and run containers in production on any infrastructure.

Saya akan membahas sedikit beberapa fitur yang ada di dalam rancher ini.

Access Control
Access control ini adalah bagaimana Rancher membatasi pengguna yang berhak masuk ke instance rancher anda, secara default access control ini tidak dikonfigurasi. Anda bisa memilih salah satu tipe autentikasi yang tersedia.

Manage Environment
Rancher mendukung pengelompokan resource ke dalam berbagai environment. Di dalam setiap environment anda bisa membuat beberapa layanan infrastruktur yang terdiri dari stack, service dan host. Setiap environment ini bisa ditugaskan ke beberapa user yang telah kita definisikan di access control.

Kita bisa membuat environment “development, staging, production” dan setiap environment tersebut bisa ditugaskan kepada setiap user yang berbeda-beda sesuai tanggung jawabnya masing-masing di setiap environment.

Di dalam environment ini ini kita bisa membuat environment template dan memilih container orchestration yang tersedia yaitu Cattle, Kubernetes, Apache Mesos, Swarm dan Windows. Secara default kita menggunakan Cattle.

Host Infrastructure

Ada beberapa machine drivers yang bisa kita pilih. Salah satu fitur yang saya suka di rancher, kita bisa memilih custom host yaitu kita bisa setup host dengan VPS kita sendiri tanpa ketergantungan dengan beberapa cloud provider yang tersedia.

Sebelumnya saya menggunakan AWS ECS (Elastic Container Service), untuk setup cluster “diwajibkan” menggunakan Amazon EC2 tidak bisa menggunakan VPS lain, dan container registry lagi-lagi di wajibkan menggunakan ECR (Elastic Container Registry) 😔 , maklum supaya daganganya laku.

Registries

Beberapa Image registry yang di sediakan rancher yaitu dockerhub, Quay dan custom. Sebagai AWS Lover, saya biasa menyimpan image di ECR (Elastic Container Registry) dan rancher support pulling image dari ECR. cool!!

Catalog

Rancher menyediakan beberapa application template yang siap kita gunakan, memudahkan kita untuk deploy stack yang kompleks. Sebagai contoh saya ingin install wordpress, di bagian Catalog kita pilih “WordPress”.

3 Service dalam 1 stack sedang disiapkan, yaitu load balancer, wordpress site, mariaDB Database. Dengan adanya application template ini kita bisa mempersingkat proses deployment karena tidak perlu membuat DockerFile dari awal.

Berikut ini saya simpulkan beberapa point yang menurut saya rancher sangat bagus diimplementasikan di perusahaan startup untuk membantu team DevOps dalam melakukan proses deployment web application.

  1. User friendly and easy to use
  2. Hosting by yourself, open source and totally free!!
  3. Load balancing and health check included
  4. Rolling upgrades, blue/green upgrades
  5. Cross cloud compatible
  6. Support container orchestration with Kubernetes and Swarm
  7. Support multiple image registry
  8. Application catalog with stack templates
  9. Scalable

Pada tulisan selanjutnya saya akan memberikan tutorial bagaimana setup host di AWS (Amazon Web Service) dan membuat stack di rancher.