IaC/CI CD Tool

ArgoCD SSO 구성 가이드(GCP Oauth)

Somaz 2024. 4. 14. 15:32
728x90
반응형

Overview

ArgoCD SSO(GCP Oauth)를 구성해본다.


 

1. OAuth 2.0 클라이언트 ID 생성

Console

  1. Google Cloud Console에 로그인하고 프로젝트를 선택한다.
  2. API 및 서비스 > 사용자 인증 정보로 이동한다.
  3. 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택한다.
  4. OAuth 동의 화면 생성 - 내부(조직 내 사용자) or 외부(Google 계정이 있는 모든 사용자)
  5. 앱 등록 수정 - OAuth 동의 화면 - 범위 - 테스트 사용자 - 요약
  6. OAuth 클라이언트 생성
  7. 애플리케이션 유형으로 웹 애플리케이션을 선택한다.
  8. 승인된 리디렉션 URI에 Argo CD의 OAuth 리디렉션 URI를 입력한다. 일반적으로 이는 https://<argocd-server-url>/api/dex/callback 형식이다.
  9. 사용자 인증 정보를 생성한 후, 생성된 클라이언트 ID와 클라이언트 보안 비밀을 기록해둔다.
# 클라이언트 ID
7xxxxxx-fxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com

# 클라이언트 보안 비밀번호
Gxxxx-oxxxxxxxxxxxxxxxxxxxxxxxx

 

CLI

gcloud config set project [YOUR_PROJECT_ID]
gcloud alpha iam oauth-clients create \\
  --project=[YOUR_PROJECT_ID] \\
  --display-name="My OAuth Client" \\
  --redirect-uris="https://[YOUR_ARGOCD_SERVER_URL]/auth/callback"

 

 

2. Argo CD 구성 업데이트

Argo CD의 argocd-cm ConfigMap과 argocd-secret Secret을 업데이트하여, Google OAuth 설정을 추가한다. Kubernetes 클러스터에서 다음 명령어를 사용하여 ConfigMap과 Secret을 수정한다.

 

업데이트 전 백업

k get cm -n argocd argocd-cm -o yaml | k neat >> argocd-cm.yaml
k get secrets -n argocd argocd-secret -o yaml | k neat >> argocd-secret.yaml

 

 

ConfigMap 업데이트 (argocd-cm / argocd-rbac-cm)

 

`argocd-cm`

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
data:
  url: https://<argocd-server-url>
  dex.config: |
    connectors:
      - type: oidc
        id: google
        name: Google
        config:
          issuer: https://accounts.google.com
          clientID: <YOUR-CLIENT-ID>
          clientSecret: $google-client-secret
          redirectURI: https://<argocd-server-url>/auth/callback
          hostedDomains:
            - <your-domain.com>
kubectl patch cm argocd-cm -n argocd --type merge -p '{
  \"data: {
    \"url\": \"https://<argocd-server-url>",\
    \"dex.config\": \"connectors:\\n  - type: oidc\\n    id: google\\n    name: Google\\n    config:\\n      issuer: https://accounts.google.com\\n      clientID: ${google_client_id}\\n      clientSecret: ${google_client_secret}\\n     redirectURI: https://{argocd-server-url}/api/dex/callback\\n\"
  }
}'

 

`argocd-rbac-cm`

apiVersion: v1
data:
  policy.csv: |
    p, role:org-admin, applications, *, */*, allow
    p, role:org-admin, clusters, get, *, allow
    p, role:org-admin, repositories, get, *, allow
    p, role:org-admin, repositories, create, *, allow
    p, role:org-admin, repositories, update, *, allow
    p, role:org-admin, repositories, delete, *, allow
    p, role:org-admin, projects, get, *, allow
    p, role:org-admin, projects, create, *, allow
    p, role:org-admin, projects, update, *, allow
    p, role:org-admin, projects, delete, *, allow
    p, role:org-admin, logs, get, *, allow
    p, role:org-admin, exec, create, */*, allow
    g, somaz@example.com, role:org-admin
  policy.default: role:readonly
  scopes: '[groups, email]'
kind: ConfigMap
metadata:
  labels:
    app.kubernetes.io/name: argocd-rbac-cm
    app.kubernetes.io/part-of: argocd
  name: argocd-rbac-cm
  namespace: argocd

 

3. Argo CD 재시작

설정 변경사항을 적용하기 위해 Argo CD 서버와 Dex 서버를 재시작한다.

k get deployments.apps -n argocd
NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
argocd-applicationset-controller   1/1     1            1           300d
argocd-dex-server                  1/1     1            1           300d
argocd-notifications-controller    1/1     1            1           300d
argocd-redis                       1/1     1            1           300d
argocd-repo-server                 1/1     1            1           300d
argocd-server                      1/1     1            1           300d

k rollout restart deploy -n argocd argocd-server
k rollout restart deploy -n argocd argocd-dex-server

 

 

4. 로그인 테스트

Google Workspace SSO를 통한 로그인이 올바르게 구성되었는지 Argo CD에 접속하여 테스트한다.

이 과정은 기본적인 흐름을 설명한 것으로, 실제 환경에서는 도메인 설정, 보안 정책, 네트워크 구성 등 추가적인 고려사항이 있을 수 있다. 또한, Google Cloud Console과 Argo CD의 설정 옵션이 시간에 따라 변할 수 있으므로, 최신 문서를 참조하는 것이 중요하다.

 

 


OAuth Authentication Process

 

SAML Authentication Process

 

 

OpenID Connect Authentication Process

 

 

 


Reference

https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/google/

728x90
반응형