Argo CD Github SSO 적용

young·2024년 11월 20일

DevOps 운영

목록 보기
5/20

Github OAuth APP 생성

  • Application Name
    • 사용하고 싶은 app 이름
  • Homepage URL
    • Argo CD 홈페이지 주소
  • Authorization callback URL
    • Homepage URL/api/dex/callback을 붙여서 사용

Git Organization 생성

  • RBAC 생성을 위해서 사용
  • Team을 생성하면 조금 더 디테일한 RBAC 설정 가능

Argo CD DEX server 설정

  • argocd-cm에서 설정 혹은 helm 설치하면서 적용
data:
  dex.config: |
    connectors:
      - type: github
        id: github      # 원하는 ID
        name: github    # 여러 개의 SSO 사용시 화면에 출력되는 이름
        config:
          hostname:     # Github 주소(없어도 무방)
          clientID:     # OAuth APP의 clientID
          clientSecret: # OAuth APP의 client secret
          orgs:
          - name:       # Github에 설정한 organization 이름
  insecureSkipVerify: "true"
  url: "<Argo CD URL>"

RBAC 설정

  • argocd-rbac-cm에서 설정
p, role:<role name>, <resource>, <action>, <project name>:<object>, <allow/deny>

적용하며 발생한 오류

DEX server에서 dex.config 항목이 적용이 안되는 문제

yaml 파일의 띄어쓰기 문제였던 것으로 보임

해결방법

  • dex.config 설정을 지우고 새로 작성하니 제대로 적용 되었음

LOGIN IN VIA GITHUB을 누르니 로그인이 안되는 문제

dex server나 argocd server가 새로 설정된 SSO callback을 못 받는 것으로 보임

해결 방법 1

dex server의 log를 확인했을 때, config connector: github이라는 로그가 뜨는 경우

  1. dex server pod 재기동
    • deployment로 설정되어 있기 때문에 pod를 삭제하면 새로운 pod가 자동적으로 생성됨
    • 다시 로그인 해보기
  2. ①의 방법을 진행했는데 안 될 경우 → argocd server 재기동

해결 방법 2

dex server가 죽었다 다시 떴는데 아무런 로그가 뜨지 않는 경우

  1. url 부분을 넣었는 지 확인
    • argocd-server-pod에서 dex redirect를 default로 하는데, 이러면 argocd-server 내부에서 connection failed 반복
  2. insecureSkipVerify: "true" 넣었는 지 확인
    • 발급한 인증서를 각 서버들에 ca로 박아서 사용하지 않고 ALB 인증서를 사용하여 TLS/SSL 인증 처리를 하는 경우 dex server로 redirect할 때(argocd-server-pod에 로그 적재) anonymous TLS access 거부와 같은 에러로 로그인 거부

해결 방법 3

The redirect-uri is not associated with this application.과 같은 로그가 뜨는 경우

Github OAuth APP 생성때 각 Argo CD마다 callback URL을 설정해놓기 때문에 Argo CD의 Homepage URL이 다르면 그거에 맞는 clientIDclientSecret을 설정해줘야 함

0개의 댓글