Management User Access Control Kubernetes with Rancher & Keycloak

Feri Ahmad
JDS Engineering
Published in
4 min readMar 12, 2023

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:

  1. Pastikan Cluster Kubernetes sudah terkoneksi dengan Rancher
Cluster k8s yang sudah terkoneksi ke 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

Create Client Keycloak

3. Create Role pada Client Rancher

  • Editor Webhook untuk user yang mengakses namespace digiteam-webhook
  • Editor Superapp untuk user yang mengakses namespace superapp
Role Digiteam
Role Superapp

4. Create Group dan Assign client roles Rancher sesuai aksesnya masing-masing. Editor Superapp => superapp

Create Group di keycloak

5. Add member developer sesuai akses Project/Namespace

add member superapp ke group
add member digiteam ke group

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.

Config Keycloak OIDC di Rancher

7. Create Project Namespace sesuai user yang akan di assign. Contoh: superapp-developer di dalamnya terdapat namespace superapp.

create project

8. Add member dan tambahkan group rancher-editor-superapp dan digiteam

add member superapp
add member digiteam

9. Test Login akun yang di assign ke project/namespace

  • Akun superapp@gmail.com hanya bisa akses ke Project/namespace superapp
test access superapp
  • Akun digiteam@digitalservice.id hanya bisa akses ke Project/namespace digiteam-webhook
test access digiteam

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.

--

--