지금 다니고 있는 회사에서는 이메일 계정을 구글로 관리하고 있다. 이번에 EKS 마이그레이션 이후 ArgoCD를 도입할 예정이라 Google Workspace 계정을 통해 ArgoCD 인증을 할 수 있도록 연동해봤다. ArgoCD 공식문서에 Google을 포함한 다양한 Identity Provider와의 연동 방법 가이드가 나와있어서 다른 인증 방법으로 연동하는 방법은 링크를 참고하면 된다(링크).
1. 구글 계정에 로그인한 후, Create Project를 통해서 Project를 생성한다(Project 생성이 이미 되어있다면 OAuth Consent 링크로 바로 이동).
2. 왼쪽 Navigation 메뉴에서 APIs & Services > Credentials를 클릭한다.
3. Create credentials를 클릭 후, OAuth client ID를 선택한다.
4. Configure consent screen을 클릭한다.
5. Get started 클릭 후, Project configuration 화면에서 App name을 설정한 후(나는 argocd 앱을 연동할거라 argocd로 설정했다.), User support email을 선택한다.
6. 테스트 환경이기 때문에 Audience는 External로 설정했다. 일반 유저 접근을 허용하려면 External로 선택하고, 같은 조직 내의 유저만 접근을 허용하려면 Internal로 설정하면 된다.
7. 프로젝트 관련된 연락을 받을 수 있는 Contact Information 이메일을 입력한다. 이 이메일은 은 최소 하나 이상 입력해야한다.
8. Google API 서비스 이용약관에 동의한 후, Create 버튼을 클릭하면 된다.
9. Authorized domains에 ArgoCD앱에 로그인을 허용할 이메일 도메인을 입력한다(이메일 주소가 example@google.com이라면 google.com을 입력).
10. 왼쪽 탭의 Data Access에서 Add or Remove Scopes를 클릭한다. 전달 받을 정보 범위를 선택한 후 Update 버튼을 클릭한 후, Save 버튼을 클릭하여 전달 받을 정보의 범위를 지정한다. 나는 유저 이메일과 프로필 정보만 전달 받으면 되기 때문에 .../auth/userinfo.email, .../auth/userinfo.profile Scope을 선택했다.
11. Clients 탭에서 Create Client를 클릭한다.
12. Authorized Javascript origins에는 연결하고자 하는 앱의 도메인 주소를 입력하면 된다. Authorized redirect URI에는 방금 입력한 오리진의 URL에 /api/dex/callback 경로를 추가해 입력하면 된다(예를 들어 오리진이 https://argocd.example.com이라면 https://argocd.example.com/api/dex/callback을 입력하면 된다).
13. 생성된 Client의 우측에 있는 다운로드 버튼을 클릭한 후, Download JSON을 클릭하여 Client 정보를 저장해둔다.
14. ArgoCD는 dex서버를 이용해 외부 identity provider에 인증을 위임하도록 구성되어있다(OIDC, SAML, LDAP 등 지원). dex 서버에 Google OAuth2.0 클라이언트 정보를 넘기기 위해서 argocd-cm을 수정하도록 한다.
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
data:
url: <https://argocd.example.com>
dex.config: |
connectors:
- config:
issuer: <https://accounts.google.com>
clientID: <다운로드 받은 Google OAuth2.0 Client 정보 파일에서의 clientID>
clientSecret: <다운로드 받은 Google OAuth2.0 Client 정보 파일에서의 clientSecret>
type: oidc
id: google
name: Google
15. argocd-server와 dex-server를 재시작한다.
kubectl -n argocd rollout restart deployment argocd-dex-server
kubectl -n argocd rollout restart deployment argocd-server
16. dex 서버에 Google 인증정보가 등록되면, 아래와 같이 UI에 구글 로그인 버튼이 자동으로 생성된다.
'DevOps' 카테고리의 다른 글
[ArgoCD]Karpenter helm 차트 배포 시 looks like "oci://public.ecr.aws/karpenter" is not a valid chart repository or cannot be reached 에러 (0) | 2025.02.27 |
---|---|
[Terraform]Route53 레코드 추가 시 CloudFront, ALB등 AWS 리소스의 Hosted zone ID 확인 (0) | 2025.02.26 |
[ArgoCD]관리자 패스워드 업데이트 및 분실 시 재설정 방법 (0) | 2025.02.19 |
MacOS에서 direnv 설정하기 (0) | 2025.01.23 |
[IntelliJ].idea폴더란? (1) | 2024.12.09 |