4.11. Keycloak을 사용하여 Argo CD에 대한 SSO 구성
Red Hat OpenShift GitOps Operator가 설치되면 Argo CD에서 admin
권한이 있는 사용자를 자동으로 생성합니다. 클러스터 관리자는 Argo CD를 사용하여 SSO(Single Sign-On)를 구성할 수 있습니다.
사전 요구 사항
- Red Hat SSO가 클러스터에 설치되어 있습니다.
- Red Hat OpenShift GitOps Operator가 클러스터에 설치되어 있습니다.
- Argo CD가 클러스터에 설치되어 있습니다.
4.11.1. Keycloak에서 새 클라이언트 구성
DEX는 기본적으로 Operator에서 생성한 모든 Argo CD 인스턴스에 대해 설치됩니다. 그러나 Dex 구성을 삭제하고 대신 Keycloak을 추가하여 OpenShift 인증 정보를 사용하여 Argo CD에 로그인할 수 있습니다. Keycloak은 Argo CD와 OpenShift 간의 ID 브로커 역할을 합니다.
절차
Keycloak을 구성하려면 다음 단계를 따르십시오.
Argo CD CR(사용자 정의 리소스)에서
.spec.sso.dex
매개변수를 제거하여 Dex 구성을 삭제하고 CR을 저장합니다.dex: openShiftOAuth: true resources: limits: cpu: memory: requests: cpu: memory:
-
Argo CD CR에서
provider
매개변수의 값을keycloak
으로 설정합니다. 다음 단계 중 하나를 수행하여 Keycloak을 구성합니다.
보안 연결의 경우 다음 예와 같이
rootCA
매개변수 값을 설정합니다.apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: sso: provider: keycloak keycloak: rootCA: "<PEM-encoded-root-certificate>" 1 server: route: enabled: true
- 1
- Keycloak의 TLS 인증서를 확인하는 데 사용되는 사용자 정의 인증서입니다.
Operator는
.spec.keycloak.rootCA
매개변수의 변경 사항을 조정하고argocd-cm
구성 맵에서 PEM 인코딩 루트 인증서로oidc.config
매개변수를 업데이트합니다.비보안 연결의 경우
rootCA
매개변수 값을 비워 두고 아래와 같이oidc.tls.insecure.skip.verify
매개변수를 사용합니다.apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: extraConfig: oidc.tls.insecure.skip.verify: "true" sso: provider: keycloak keycloak: rootCA: ""
Keycloak 인스턴스는 설치하고 실행하는 데-6분 정도 걸립니다.
4.11.2. Keycloak에 로그인
Keycloak 콘솔에 로그인하여 ID 또는 역할을 관리하고 다양한 역할에 할당된 권한을 정의합니다.
사전 요구 사항
- Dex의 기본 구성이 제거됩니다.
- Keycloak SSO 공급자를 사용하도록 Argo CD CR을 구성해야 합니다.
절차
로그인할 Keycloak 경로 URL을 가져옵니다.
$ oc -n argocd get route keycloak NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD keycloak keycloak-default.apps.ci-ln-******.origin-ci-int-aws.dev.**.com keycloak <all> reencrypt None
사용자 이름과 암호를 환경 변수로 저장하는 Keycloak Pod 이름을 가져옵니다.
$ oc -n argocd get pods NAME READY STATUS RESTARTS AGE keycloak-1-2sjcl 1/1 Running 0 45m
Keycloak 사용자 이름을 가져옵니다.
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME SSO_ADMIN_USERNAME=Cqid54Ih
Keycloak 암호를 가져옵니다.
$ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD SSO_ADMIN_PASSWORD=GVXxHifH
로그인 페이지에서 LOG IN VIA KEYCLOAK 를 클릭합니다.
참고Keycloak 인스턴스가 준비된 후 LOGIN VIA KEYCLOAK 옵션만 표시됩니다.
OpenShift로 로그인을 클릭합니다.
참고kubeadmin
을 사용하여 로그인할 수 없습니다.- 로그인할 OpenShift 자격 증명을 입력합니다.
선택 사항: 기본적으로 Argo CD에 로그인한 모든 사용자에게 읽기 전용 액세스 권한이 있습니다.
argocd-rbac-cm
구성 맵을 업데이트하여 사용자 수준 액세스를 관리할 수 있습니다.policy.csv: <name>, <email>, role:admin
4.11.3. Keycloak 설치 제거
Argo CD CR(사용자 정의 리소스) 파일에서 SSO
필드를 제거하여 Keycloak 리소스 및 관련 구성을 삭제할 수 있습니다. SSO
필드를 제거한 후 파일의 값은 다음과 유사합니다.
apiVersion: argoproj.io/v1alpha1 kind: ArgoCD metadata: name: example-argocd labels: example: basic spec: server: route: enabled: true
이 방법을 사용하여 생성한 Keycloak 애플리케이션은 현재 영구적이지 않습니다. 서버를 다시 시작하면 Argo CD Keycloak 영역에서 생성된 추가 구성이 삭제됩니다.