7.7. GitLab ID 공급자 구성

GitLab.com 또는 기타 GitLab 인스턴스를 ID 공급자로 사용하여 gitlab ID 공급자를 구성합니다.

7.7.1. OpenShift Container Platform의 ID 공급자 정보

기본적으로는 kubeadmin 사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.

참고

/, :, %를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.

7.7.2. GitLab 인증 정보

GitLab 인증을 구성하면 사용자가 GitLab 인증 정보를 사용하여 OpenShift Container Platform에 로그인할 수 있습니다.

GitLab 버전 7.7.0~11.0을 사용하는 경우 OAuth 통합을 사용하여 연결합니다. GitLab 버전 11.1 이상을 사용하는 경우 OAuth 대신 OpenID Connect(OIDC)를 사용하여 연결할 수 있습니다.

7.7.3. 시크릿 생성

ID 공급자는 openshift-config 네임스페이스에서 OpenShift Container Platform Secret 오브젝트를 사용하여 클라이언트 시크릿, 클라이언트 인증서 및 키를 포함합니다.

절차

  • 다음 명령을 사용하여 문자열이 포함된 Secret 오브젝트를 생성합니다.

    $ oc create secret generic <secret_name> --from-literal=clientSecret=<secret> -n openshift-config
    작은 정보

    다음 YAML을 적용하여 시크릿을 생성할 수도 있습니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: <secret_name>
      namespace: openshift-config
    type: Opaque
    data:
      clientSecret: <base64_encoded_client_secret>
  • 다음 명령을 사용하여 인증서 파일과 같은 파일 내용이 포함된 Secret 오브젝트를 정의할 수 있습니다.

    $ oc create secret generic <secret_name> --from-file=<path_to_file> -n openshift-config

7.7.4. 구성 맵 생성

ID 공급자는 openshift-config 네임스페이스에서 OpenShift Container Platform ConfigMap 오브젝트를 사용하여 인증 기관 번들을 포함합니다. 이들은 주로 ID 공급자에 필요한 인증서 번들을 포함하는 데 사용됩니다.

참고

이 절차는 GitHub Enterprise에만 필요합니다.

절차

  • 다음 명령을 사용하여 인증 기관을 포함하는 OpenShift Container Platform ConfigMap 오브젝트를 정의합니다. 인증 기관은ConfigMap 오브젝트의 ca.crt 키에 저장해야 합니다.

    $ oc create configmap ca-config-map --from-file=ca.crt=/path/to/ca -n openshift-config
    작은 정보

    다음 YAML을 적용하여 구성 맵을 만들 수 있습니다.

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ca-config-map
      namespace: openshift-config
    data:
      ca.crt: |
        <CA_certificate_PEM>

7.7.5. GitLab CR 샘플

다음 CR(사용자 정의 리소스)에는 GitLab ID 공급자에 대한 매개변수 및 허용 가능한 값이 표시되어 있습니다.

GitLab CR

apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
  name: cluster
spec:
  identityProviders:
  - name: gitlabidp 1
    mappingMethod: claim 2
    type: GitLab
    gitlab:
      clientID: {...} 3
      clientSecret: 4
        name: gitlab-secret
      url: https://gitlab.com 5
      ca: 6
        name: ca-config-map

1
이 공급자 이름은 GitLab 숫자 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다. 콜백 URL을 빌드하는 데에도 사용됩니다.
2
이 공급자의 ID와 User 오브젝트 간 매핑 설정 방법을 제어합니다.
3
등록된 GitLab OAuth 애플리케이션의 클라이언트 ID. 애플리케이션은 https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>의 콜백 URL을 사용하여 구성해야 합니다.
4
OpenShift Container Platform Secret 오브젝트에 대한 참조로, GitLab에서 발행한 클라이언트 시크릿이 포함됩니다.
5
GitLab 공급자의 호스트 URL. https://gitlab.com/ 또는 기타 자체 호스팅 GitLab 인스턴스일 수 있습니다.
6
선택 사항: OpenShift Container Platform ConfigMap 오브젝트에 대한 참조로, 구성된 URL에 대한 서버 인증서의 유효성을 검증하는 데 사용할 PEM 인코딩 인증 기관 번들이 포함됩니다.

추가 리소스

  • 모든 ID 공급자에 공통되는 mappingMethod와 같은 매개변수에 대한 자세한 내용은 ID 공급자 매개변수를 참조하십시오.

7.7.6. 클러스터에 ID 공급자 추가

클러스터를 설치한 후에는 사용자가 인증할 수 있도록 ID 공급자를 추가하십시오.

사전 요구 사항

  • OpenShift Container Platform 클러스터를 생성합니다.
  • ID 공급자의 CR(사용자 정의 리소스)을 만듭니다.
  • 관리자로 로그인해야 합니다.

절차

  1. 정의된 CR을 적용합니다.

    $ oc apply -f </path/to/CR>
    참고

    CR이 없으면 oc apply 에서 새 CR을 생성하고 다음 경고를 트리거할 수 있습니다. 경고: oc apply는 oc create --save-config 또는 oc apply에서 생성한 리소스에 사용해야 합니다. 이 경우 이 경고를 무시해도 됩니다.

  2. 암호를 입력하라는 메시지가 표시되면 암호를 입력하여 ID 공급자의 사용자로 클러스터에 로그인합니다.

    $ oc login -u <username>
  3. 사용자가 로그인했는지 확인하고 사용자 이름을 표시합니다.

    $ oc whoami