ArgoCD 를 SSO 로 로그인하게끔 하여 직접 아이디/비밀번호를 기억하지 않아도 되게끔 하였다. 그리고 GitHub 으로 RBAC 을 적용하여 그룹별로 접근권한을 달리해줄 수 있도록 하였다.
ArgoCD 를 외부에 등록해놓아야 한다. (안해도 되는지를 모름..ㅎㅎ)
나는 아래 링크로 ArgoCD 를 외부에 공개해놓았다.
github 에 로그인한다.
아래 링크를 클릭한다.
OAuth App 를 생성한다.
아래와 같이 등록한다.
Homepage URL : <host> <---- (이건 아무거나 해도 될 것 같음).
Authorization callback URL : <host>/api/dex/callback

그 다음, Client ID, Client secrets 의 값을 보관해둔다.

argoCD 의 ConfigMap 인 argocd-cm 을 수정한다.
# $ kubectl edit cm argocd-cm
apiVersion: v1
kind: ConfigMap
data:
...
  dex.config: |
    connectors:
      - type: github
        id: github
        name: GitHub
        config:
          clientID: <이전에 저장해둔 clientID 값>
          clientSecret: <이전에 저장해둔 clientSecret 값>
  # url: <argoCD host 명>
  url: https://argocd.entto.shop
...
argocd-cm의GitHub상세 설정 설명은 아래에서 확인할 수 있다.
https://github.com/dexidp/website/blob/main/content/docs/connectors/github.md
argoCD 의 ConfigMap 인 argocd-rbac-cm 을 수정한다.scopes, policy.csv 에 값을 추가한다. apiVersion: v1
data:
...
  scopes: '[groups, email]'  # <--- 기본값은 [groups] 이다.
  policy.csv: |
    p, role:admin, applications, *, */*, allow
    p, role:admin, clusters, *, *, allow
    p, role:admin, projects, *, *, allow
    p, role:admin, repositories, *, *, allow
    p, role:admin, certificates, *, *, allow
    p, role:admin, gpgkeys, *, *, allow
    p, role:admin, accounts, *, *, allow
    g, sororiri@gmail.com, role:admin  <---------------- 자신의 이메일을 넣는다.
...
여기까지 하면 자동으로 ArgoCD 서버에 해당 설정이 반영이 된다.
argoCD 에 GitHub 로 로그인한다.
나의 경우 최초 로그인할 때에는 로그인이 안되고 계속 로그인 페이지로 이동되었다. 한 6~7번 누르면 다음 페이지로 이동한다.

아래처럼 나오는데 수락한다.

그럼 정상적으로 접속이 되는 것을 확인할 수 있다.

조직(organization) 를 만든다.Team 을 만든다. (나는 Devops 라고 만들었다.)
argoCD 의 ConfigMap 인 argocd-cm 을 수정한다.loadAllGroups: true 를 추가한다.loadAllGroups: true 을 추가하면 사용자의 그룹정보를 권한 설정(RBAC) 할 때에 사용할 수 있게 된다.# $ kubectl edit cm argocd-cm
apiVersion: v1
kind: ConfigMap
data:
...
  dex.config: |
    connectors:
      - type: github
        id: github
        name: GitHub
        config:
        ...
          loadAllGroups: true <----- 새로 추가한다.
        ...
...
만약 특정 그룹만 로그인을 허용하게 하고 싶다면 dex.config 에 orgs 를 추가한다.
argoCD 의 ConfigMap 인 argocd-rbac-cm 을 수정한다.role:admin 을 추가하고 싶다면,policy.csv 에 g, <조직명>:<팀명>, role:admin 을 추가한다.apiVersion: v1
data:
...
  policy.csv: |
    ...
    p, role:admin, accounts, *, *, allow
    ...
    # g, <조직명>:<팀명>, role:admin
    g, memomou:Devops, role:admin
...
원하는 유저를 자신의 팀에 추가한다.

해당 유저가 ArgoCD  에 로그인하여 정상적으로 동작하는 지 확인한다.
SSO 로그인 이 안되는 경우, 아래처럼 dex-server 파드 를 디버깅하여 원인을 분석할 수 있다.
dex-server 는 argoCD 의 SSO 인증 에 관여하는 서버이다.
$ kubectl get po -n argocd | grep dex
> argocd-dex-server-7df65fb4f4-qt9ps
dex-server 의 로그를 확인한다. 해당 로그들을 보고$ kubectl logs -n argocd -f argocd-dex-server-7df65fb4f4-qt9ps
> ...
time="2024-10-17T20:49:20Z" level=info msg="login successful: connector \"github\", username=\"2sangyun\", preferred_username=\"SangYunLeee\", email=\"sororiri@gmail.com\", groups=[\"memomou\" \"memomou:Devops\"]"
...
이상으로 적용 방법 공유를 마칩니다.