728x90
반응형
Overview
ArgoCD SSO(GCP Oauth)를 구성해본다.
1. OAuth 2.0 클라이언트 ID 생성
Console
- Google Cloud Console에 로그인하고 프로젝트를 선택한다.
- API 및 서비스 > 사용자 인증 정보로 이동한다.
- 사용자 인증 정보 만들기를 클릭하고 OAuth 클라이언트 ID를 선택한다.
- OAuth 동의 화면 생성 - 내부(조직 내 사용자) or 외부(Google 계정이 있는 모든 사용자)
- 앱 등록 수정 - OAuth 동의 화면 - 범위 - 테스트 사용자 - 요약
- OAuth 클라이언트 생성
- 애플리케이션 유형으로 웹 애플리케이션을 선택한다.
- 승인된 리디렉션 URI에 Argo CD의 OAuth 리디렉션 URI를 입력한다. 일반적으로 이는 https://<argocd-server-url>/api/dex/callback 형식이다.
- 사용자 인증 정보를 생성한 후, 생성된 클라이언트 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
반응형
'IaC > CI CD Tool' 카테고리의 다른 글
6. Gitlab CI Build(with GCP Artifact Registry, Harbor) (0) | 2024.06.24 |
---|---|
7. Github Action Build and Push(with GCP Artifact Registry) (0) | 2024.06.19 |
6. Github Action (With Using Concurrency) (0) | 2024.03.20 |
5. Github Action (With Using jobs in a workflow & Choosing the runner for a job) (0) | 2024.03.15 |
4. Github Action (With Matrix Strategy) (2) | 2024.03.12 |