Management User Access Control Kubernetes with Rancher & Keycloak
Mas bro, minta tolong run migrate aplikasinya dong !
Yak, itu salah satu ungkapan yang sering terjadi ketika seorang Developer memerlukan migrasi di suatu aplikasi dan meminta menjalankannya kepada DevOps/SRE. Hal ini menjadi latar belakang saya membuat tulisan ini, ketika seorang Developer belum mempunyai akses ke Cluster Kubernetes.
Rancher
Rancher adalah platform manajemen container open source. Ini memungkinkan kita untuk menjalankan dan mengelola Docker dan Kubernetes dengan mudah baik on premiese ataupun public cloud (GCP, AWS dll).
Keycloak
Keycloak adalah aplikasi open source yang memungkinkan SSO (Single Sign On) dengan identitas dan Access Management yang ditujukan untuk aplikasi dan layanan modern (wikipedia).
Prerequisite
- Cluster Kubernetes
- Rancher
- Keycloak
Use Case
Use case yang kita coba aplikasikan yaitu Developer A harus bisa mengakses Namespace A, Developer B mengakses Namespace B dalam satu cluster. Case diatas bisa digunakan untuk Developer yang di assign ke setiap Tribe/Squad nya masing-masing.
Berikut langkah-langkah konfigurasi User Access Control di Rancher:
- Pastikan Cluster Kubernetes sudah terkoneksi dengan Rancher
2. Masuk ke Keycloak Admin Console dan Create Client
Untuk referensi konfigurasi Client bisa melihat dokumentasi dari Rancher: https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/authentication-config/configure-keycloak-oidc
3. Create Role pada Client Rancher
- Editor Webhook untuk user yang mengakses namespace digiteam-webhook
- Editor Superapp untuk user yang mengakses namespace superapp
4. Create Group dan Assign client roles Rancher sesuai aksesnya masing-masing. Editor Superapp => superapp
5. Add member developer sesuai akses Project/Namespace
6. Setup Keycloak di Rancher dengan masuk menu Users & Authentication kemudian pilih Auth Provider dan pilih Keyclaok OIDC. Isi Client ID dan Secret sesuai dengan yang kita create sebelumnya di keycloak.
7. Create Project Namespace sesuai user yang akan di assign. Contoh: superapp-developer di dalamnya terdapat namespace superapp.
8. Add member dan tambahkan group rancher-editor-superapp dan digiteam
9. Test Login akun yang di assign ke project/namespace
- Akun superapp@gmail.com hanya bisa akses ke Project/namespace superapp
- Akun digiteam@digitalservice.id hanya bisa akses ke Project/namespace digiteam-webhook
Kesimpulan
Dengan Rancher Developer akan fokus terhadap pengembangan aplikasi, dan jika ada kebutuhan untuk menjalankan command tertentu di container yang sudah terdeploy atau melihat log aplikasi, developer bisa lebih flexible tanpa perlu komunikasi dengan DevOps.
Administrator Cluster dapat mudah mengelola autentikasi setiap team/developer yang dibutuhkan.
Terimakasih telah membaca artikel ini. Jika temen-temen memiliki pertanyaan atau masalah, temen-temen dapat meninggalkannya di bagian komentar di bawah.