현재 나는 argocd를 argo/argo-cd v6.7.8 helm을 통해 설치한 상태이다.
확실히 helm을 통해서 설치하는게 편한 것 같긴 하지만 방대한 양의 values.yaml을 해석하고 컨트롤 하는 것은 쉽지 않다..
기존에는 argocd에서 admin 계정을 통해서 사용하고 있었다.
admin 계정 설정에 대한 건 다른 분들이 설명해주신게 많아서 수월하게 설정했다.
다만 admin말고도 개발자들이 접근해서 볼 수 있는 view권한만 가진 계정이 필요했기에 이를 작업했다.
rbac 설정
values.yaml
rbac:
create: true
policy.csv: |
p, role:view, applications, get, */*, allow
p, role:view, clusters, get, *, allow
p, role:view, logs, get, *, allow
g, user, role:view
위 values.yaml에서 rabc에 권한을 설정해줘야하기에 policy.csv에 아래 명령어들을 작성하였다.
view라는 role에 applications, cluster, logs만 get할 수 있는 권한을 만들고
user라는 계정에 role을 넣게 되는 것을 직관적으로 볼 수 있었다.
수정했으면 helm을 업그레이드 해준다.
configmap 수정하여 계정 생성
이 부분이 제일 불편했는데 무슨 계정 하나 생성하는데 comfigmap을 수정해야하는….. 이런 불편함이…..
작업자체는 이렇다.
kubectl edit cm/argocd-cm -n argo-cd
data:
accounts.user: apiKey, login
accounts.user.enabled: "true"
user라는 accounts를 만들고 apiKey, login이 되게 설정하고 활성화시키는 것이다.
다만 이를 왜 configmap으로 해야하는지… 공식문서에 적혀있는 내용이라 더욱더 이해가 안간다.
argocd 재기동
위처럼 configmap을 수정했으니 argocd-server를 재기동하여 configmap을 다시 물린다.
두번쨰 이해 안가는 부분인 password설정을 위해 argocd-server pod에 들어간다…..
(GUI에서 없는것도 불편한데 이걸 굳이 이렇게…?)
$ argocd@argo-cd-argocd-server-84c7db9bf5-dvk2l:~$ argocd login {argocd-url}
해당 명령어를 치면 admin으로 로그인하라고 나온다.
패스워드에 넣고 로그인 후
$ argocd account list
NAME ENABLED CAPABILITIES
admin true login
viewer true apiKey, login
추가한 계정이 있는지 확인한다.
$ argocd account update-password --account viewer
viewer의 패스워드를 초기화한다....
이렇게 하면 패스워드가 설정되고, argocd에서 해당 계정으로 접속이 된다.
당연하게도 권한때문에 sync나 delete 등 액션은 안되고 applications, cluster, logs들만 볼 수 있다.
이러한 작업을 하면서 느꼈던점은…..
그냥 GUI로 만들어 줬으면 참 편했을 것 같다는 생각이…. 문득 든다….