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을 구성하려면 다음 단계를 따르십시오.

  1. Argo CD CR(사용자 정의 리소스)에서 .spec.sso.dex 매개변수를 제거하여 Dex 구성을 삭제하고 CR을 저장합니다.

    dex:
        openShiftOAuth: true
        resources:
          limits:
            cpu:
            memory:
          requests:
            cpu:
            memory:
  2. Argo CD CR에서 provider 매개변수의 값을 keycloak 으로 설정합니다.
  3. 다음 단계 중 하나를 수행하여 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을 구성해야 합니다.

절차

  1. 로그인할 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
  2. 사용자 이름과 암호를 환경 변수로 저장하는 Keycloak Pod 이름을 가져옵니다.

    $ oc -n argocd get pods
    
    NAME                      READY   STATUS           RESTARTS   AGE
    keycloak-1-2sjcl           1/1    Running            0        45m
    1. Keycloak 사용자 이름을 가져옵니다.

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_USERNAME
      
      SSO_ADMIN_USERNAME=Cqid54Ih
    2. Keycloak 암호를 가져옵니다.

      $ oc -n argocd exec keycloak-1-2sjcl -- "env" | grep SSO_ADMIN_PASSWORD
      
      SSO_ADMIN_PASSWORD=GVXxHifH
  3. 로그인 페이지에서 LOG IN VIA KEYCLOAK 를 클릭합니다.

    참고

    Keycloak 인스턴스가 준비된 후 LOGIN VIA KEYCLOAK 옵션만 표시됩니다.

  4. OpenShift로 로그인을 클릭합니다.

    참고

    kubeadmin 을 사용하여 로그인할 수 없습니다.

  5. 로그인할 OpenShift 자격 증명을 입력합니다.
  6. 선택 사항: 기본적으로 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 영역에서 생성된 추가 구성이 삭제됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.