OpenUnison 연동

OpenUnison 연동

이 문서는 OpenUnison과 Argo CD를 통합하여 single sign-on을 지원하고, OpenUnison 포털에 "배지(badge)"를 추가해 Kubernetes와 Argo CD 양쪽에 대한 단일 접근 지점을 만드는 방법을 안내합니다. Argo CD 웹 인터페이스와 CLI를 모두 사용하고 OpenUnison 1.0.20+를 실행한다고 가정합니다.

출처: 문서

본문

OpenUnison

OpenUnison과 Argo CD 통합

이 지침은 OpenUnison과 Argo CD를 통합해 single sign-on을 지원하고, OpenUnison 포털에 "배지"를 추가해 Kubernetes와 Argo CD 양쪽에 대한 단일 접근 지점을 만드는 단계를 안내합니다. 이 지침은 Argo CD 웹 인터페이스와 CLI를 모두 사용하고 OpenUnison 1.0.20+를 실행한다고 가정합니다.

OpenUnison Trust 생성

아래 Trust 객체를 업데이트하고 openunison 네임스페이스에 추가하세요. 변경할 것은 argocd.apps.domain.com을 Argo CD URL의 호스트 이름으로 바꾸는 것뿐입니다. CLI가 작동하려면 localhost URL이 필요합니다. CLI가 클라이언트 시크릿과는 작동하지 않으므로 Argo CD에는 클라이언트 시크릿을 사용하지 않습니다.

apiVersion: openunison.tremolo.io/v1
kind: Trust
metadata:
  name: argocd
  namespace: openunison
spec:
  accessTokenSkewMillis: 120000
  accessTokenTimeToLive: 1200000
  authChainName: login-service
  clientId: argocd
  codeLastMileKeyName: lastmile-oidc
  codeTokenSkewMilis: 60000
  publicEndpoint: true
  redirectURI:
  - https://argocd.apps.domain.com/auth/callback
  - http://localhost:8085/auth/callback
  signedUserInfo: true
  verifyRedirect: true

OpenUnison에 "배지" 생성

PortalUrl 객체의 yaml을 다운로드하고 url을 Argo CD 인스턴스를 가리키도록 업데이트하세요. 업데이트된 PortalUrl을 클러스터의 openunison 네임스페이스에 추가하세요.

Argo CD에서 SSO 구성

다음으로 argocd 네임스페이스의 argocd-cm ConfigMap을 업데이트하세요. 아래와 같이 urloidc.config 섹션을 추가하세요. issuer는 OpenUnison의 호스트로 업데이트하세요.

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
data:
  url: https://argocd.apps.domain.com
  oidc.config: |-
    name: OpenUnison
    issuer: https://k8sou.apps.192-168-2-144.nip.io/auth/idp/k8sIdp
    clientID: argocd
    requestedScopes: ["openid", "profile", "email", "groups"]

모두 올바르게 되었다면 OpenUnison 인스턴스에 로그인했을 때 Argo CD용 배지가 보입니다. 그 배지를 클릭하면 Argo CD가 새 창에서 이미 로그인된 상태로 열립니다! 또한 argocd cli 도구를 실행하면 OpenUnison에 로그인하기 위해 브라우저가 열립니다.

Argo CD 정책 구성

OpenUnison은 그룹을 groups 클레임에 넣습니다. 이 클레임들은 Argo CD 포털의 user-info 섹션을 클릭하면 표시됩니다. LDAP, Active Directory, 또는 Active Directory Federation Services를 사용한다면 그룹은 전체 고유 이름(Distinguished Name, DN)으로 Argo CD에 제공됩니다. DN에는 쉼표(,)가 포함되므로 정책에서 그룹 이름을 인용 부호로 감싸야 합니다. 예를 들어 CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com을 관리자로 할당하려면 다음과 같습니다:

apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-rbac-cm
  namespace: argocd
data:
  policy.csv: |
    g, "CN=k8s_login_cluster_admins,CN=Users,DC=ent2k12,DC=domain,DC=com", role:admin

더 알아보기 (Learn more)