Introduction
Secara default, argocd hanya punya akun admin dan menggunakan initial password setelah instalasi. Disini kita akan membuat akun untuk argocd dan memberikan RBAC (Role Based Access Control) pada setiap akun tersebut.
Argo CD RBAC dapat memberikan permission seperti dibawah ini.
- Users – Memberikan setiap user dengan spesifik permissions pada ArgoCD.
- Groups – Menggunakan ini kita bisa menambahkan banyak user ke grup dan memberikan permission yang sama ke group yang digunakan.
- Argo CD Resources – Memberikan permission ke ArgoCD resource seperti applications, projects, dan lain lain.
- Actions on Argo CD – Membolehkan user untuk melakukan spesifik aksi pada ArgoCD seperti membuat application atau delete.
Reqruitment
- Kubernetes Cluster
- Helm (kita akan menggunakan values.yaml sebagai acuan untuk mengubah konfigurasi argocd)
- ArgoCD
Configuration
Pada post sebelumnya kita sudah melakukan instalasi argocd pada kubernetes cluster, jika belum ada bisa akses di link berikut.
https://cygnenoir.net/install-argorcd-on-kubernetes/
Update helm values
Update helm values yang sebelumnya kita buat pada tutorial diatas.
server:
service:
type: LoadBalancer
loadBalancerIP: "10.100.19.91"
configs:
cm:
kustomize.buildOptions: "--enable-helm"
users.session.duration: "24h"
exec.enabled: true
#### ADD BELOW #####
accounts.user01: login
rbac:
policy.csv: |
p, role:admin-k8s, applications, *, */*, allow
p, role:admin-k8s, clusters, get, *, allow
p, role:admin-k8s, clusters, update, *, allow
p, role:admin-k8s, projects, *, *, allow
p, role:admin-k8s, repositories, *, *, allow
p, role:admin-k8s, accounts, *, *, allow
p, role:admin-k8s, logs, get, *, allow
p, role:admin-k8s, exec, create, */*, allow
g, user01, role:admin-k8s
Sekarang saya akan berikan sedikit penjelasan,
account.user01 | Menambahkan user01 dan bisa melakukan akses login |
rbac.policy.svc | Kita akan melakukan konfigurasi RBAC untuk user yang kita buat |
Untuk policy,
p, <role/user/group>, <resource>, <action>, <object>, <effect>
<role/user/group> | Identitas untuk siapa policy akan diberikan |
<resource> | Type resource yang akan diberikan |
<action> | Action yang akan diberikan |
<object> | Object yang akan diberikan |
<effect> | Effek yang akan diberikan |
Resource\Action | get | create | update | delete | sync | action | override | invoke |
---|---|---|---|---|---|---|---|---|
applications | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
applicationsets | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
clusters | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
projects | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
repositories | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
accounts | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
certificates | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
gpgkeys | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
logs | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
exec | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
extensions | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
Karena kita menggunakan group,
g, <user>, <role>
Untuk referensi tentang RBAC bisa dilihat di link berikut https://argo-cd.readthedocs.io/en/stable/operator-manual/rbac/
Upgrade menggunakan helm
helm upgrade argocd -n argocd argo/argo-cd -f values.yaml
Change Password for user01
Kita sudah membuat user baru, jika kita ingin melakukan update password pada user tersebut, kita harus menggunakan cli menggunakan command argocd.
curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
sudo install -m 555 argocd-linux-amd64 /usr/local/bin/argocd
rm argocd-linux-amd64
Login ke argocd menggunakan user admin, kemudian masukan password yang sudah diberikan untuk admin (initial password).
argocd login 10.100.19.91 --username admin --insecure
Setelah itu, kita rubah password user01, nanti kita ditanya untuk masukan password logged admin, dan kita membuat password baru untuk user01.
argocd account update-password --account user01

Disable Account Admin
Setelah kita sudah membuat akun admin, direkomendasikan untuk disable akun default admin.
Ubah values.yaml
server:
service:
type: LoadBalancer
loadBalancerIP: "10.100.19.91"
configs:
cm:
kustomize.buildOptions: "--enable-helm"
users.session.duration: "24h"
exec.enabled: true
admin.enabled: false ### ADD HERE
accounts.user01: login
rbac:
policy.csv: |
p, role:admin-k8s, applications, *, */*, allow
p, role:admin-k8s, clusters, get, *, allow
p, role:admin-k8s, clusters, update, *, allow
p, role:admin-k8s, projects, *, *, allow
p, role:admin-k8s, repositories, *, *, allow
p, role:admin-k8s, accounts, *, *, allow
p, role:admin-k8s, logs, get, *, allow
p, role:admin-k8s, exec, create, */*, allow
g, user01, role:admin-k8s
Upgrade menggunakan helm command
helm upgrade argocd -n argocd argo/argo-cd -f values.yaml
Test login ke argocd

Untuk login sudah berhasil.