7.6. GitHub 또는 GitHub Enterprise ID 공급자 구성
GitHub 또는 GitHub Enterprise의 OAuth 인증 서버에 대해 사용자 이름 및 암호의 유효성을 확인하도록 github
ID 공급자를 구성합니다. OAuth를 사용하면 OpenShift Container Platform과 GitHub 또는 GitHub Enterprise 간의 토큰 교환 flow가 용이해집니다.
GitHub 통합을 사용하여 GitHub 또는 GitHub Enterprise에 연결할 수 있습니다. GitHub Enterprise 통합의 경우 인스턴스의 호스트 이름
을 제공해야 하며, 서버에 대한 요청에 사용할 ca
인증서 번들을 선택적으로 제공할 수 있습니다.
다음 단계는 별도로 명시하지 않는 한 GitHub 및 GitHub Enterprise에 모두 적용됩니다.
7.6.1. OpenShift Container Platform의 ID 공급자 정보
기본적으로는 kubeadmin
사용자만 클러스터에 있습니다. ID 공급자를 지정하려면 해당 ID 공급자를 설명하는 CR(사용자 정의 리소스)을 생성하여 클러스터에 추가해야 합니다.
/
, :
, %
를 포함하는 OpenShift Container Platform 사용자 이름은 지원되지 않습니다.
7.6.2. GitHub 인증 정보
GitHub 인증을 구성하면 사용자가 GitHub 자격 증명을 사용하여 OpenShift Container Platform에 로그인할 수 있습니다. GitHub 사용자 ID가 있는 사람이 OpenShift Container Platform 클러스터에 로그인하지 못하도록 특정 GitHub 조직의 사용자만 액세스할 수 있도록 제한할 수 있습니다.
7.6.3. GitHub 애플리케이션 등록
GitHub 또는 GitHub Enterprise를 ID 공급자로 사용하려면 사용할 애플리케이션을 등록해야 합니다.
절차
GitHub에 애플리케이션을 등록합니다.
-
GitHub의 경우 Settings
Developer settings OAuth Apps Register a new OAuth application을 클릭합니다. -
GitHub Enterprise의 경우 GitHub Enterprise 홈페이지로 이동한 다음 Settings
Developer settings Register a new application을 클릭합니다.
-
GitHub의 경우 Settings
-
애플리케이션 이름(예:
My OpenShift Install)
을 입력합니다. -
https://oauth-openshift.apps.<cluster-name>.<cluster-domain>
과 같은 홈페이지 URL을 입력합니다. - 선택 사항: 애플리케이션 설명을 입력합니다.
권한 부여 콜백 URL을 입력합니다. URL 끝에는 ID 공급자
name
이 있습니다.https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>
예를 들면 다음과 같습니다.
https://oauth-openshift.apps.openshift-cluster.example.com/oauth2callback/github
- Register application을 클릭합니다. GitHub에서 클라이언트 ID와 클라이언트 시크릿을 제공합니다. ID 공급자 구성을 완료하려면 이러한 값이 필요합니다.
7.6.4. 시크릿 생성
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.6.5. 구성 맵 생성
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.6.6. GitHub CR 샘플
다음 CR(사용자 정의 리소스)에는 GitHub ID 공급자에 대한 매개변수 및 허용 가능한 값이 표시되어 있습니다.
GitHub CR
apiVersion: config.openshift.io/v1 kind: OAuth metadata: name: cluster spec: identityProviders: - name: githubidp 1 mappingMethod: claim 2 type: GitHub github: ca: 3 name: ca-config-map clientID: {...} 4 clientSecret: 5 name: github-secret hostname: ... 6 organizations: 7 - myorganization1 - myorganization2 teams: 8 - myorganization1/team-a - myorganization2/team-b
- 1
- 이 공급자 이름은 GitHub 숫자 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다. 콜백 URL을 빌드하는 데에도 사용됩니다.
- 2
- 이 공급자의 ID와
User
오브젝트 간 매핑 설정 방법을 제어합니다. - 3
- 선택 사항: OpenShift Container Platform
ConfigMap
오브젝트에 대한 참조로, 구성된 URL에 대한 서버 인증서의 유효성 확인에 사용할 PEM 인코딩 인증 기관 번들이 포함됩니다. 공개적으로 신뢰할 수 없는 루트 인증서가 있는 GitHub Enterprise에서만 사용됩니다. - 4
- 등록된 GitHub OAuth 애플리케이션의 클라이언트 ID. 애플리케이션은
https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>
의 콜백 URL을 사용하여 구성해야 합니다. - 5
- OpenShift Container Platform
Secret
오브젝트에 대한 참조로, GitHub에서 발행한 클라이언트 시크릿이 포함됩니다. - 6
- GitHub Enterprise의 경우 인스턴스의 호스트 이름(예
: example.com
)을 제공해야 합니다. 이 값은/setup/settings
파일의 GitHub Enterprisehostname
값과 일치해야 하며 포트 번호를 포함할 수 없습니다. 이 값을 설정하지 않으면teams
또는organizations
을 정의해야 합니다. GitHub의 경우 이 매개변수를 생략합니다. - 7
- 조직 목록.
hostname
필드가 설정되어 있지 않거나mappingMethod
가lookup
으로 설정되어 있는 경우에는organizations
또는teams
필드를 설정해야 합니다.teams
필드와 함께 사용할 수 없습니다. - 8
- 팀 목록.
hostname
필드가 설정되어 있지 않거나mappingMethod
가lookup
으로 설정되어 있는 경우에는teams
또는organizations
필드를 설정해야 합니다.organizations
필드와 함께 사용할 수 없습니다.
organizations
또는 teams
가 지정된 경우 나열된 조직 중 하나 이상에 속하는 GitHub 사용자만 로그인할 수 있습니다. clientID
에 구성된 GitHub OAuth 애플리케이션이 조직의 소유가 아닌 경우 조직 소유자가 이 옵션을 사용하려면 타사 액세스 권한을 부여해야 합니다. 이러한 작업은 조직 관리자가 GitHub를 처음 로그인하는 동안 또는 GitHub 조직 설정에서 수행할 수 있습니다.
추가 리소스
-
모든 ID 공급자에 공통된
mappingMethod
와 같은 매개변수에 대한 자세한 내용은 ID 공급자 매개변수를 참조하십시오.
7.6.7. 클러스터에 ID 공급자 추가
클러스터를 설치한 후에는 사용자가 인증할 수 있도록 ID 공급자를 추가하십시오.
사전 요구 사항
- OpenShift Container Platform 클러스터를 생성합니다.
- ID 공급자의 CR(사용자 정의 리소스)을 만듭니다.
- 관리자로 로그인해야 합니다.
절차
정의된 CR을 적용합니다.
$ oc apply -f </path/to/CR>
참고CR이 존재하지 않는 경우
oc apply
를 통해 새 CR을 생성하고 다음 경고를 트리거할 수 있습니다.Warning: oc apply should be used on resources created by either oc create --save-config or oc apply
. 이 경우 이 경고를 무시해도 됩니다.OAuth 서버에서 토큰을 가져옵니다.
kubeadmin
사용자가 제거된 경우oc login
명령을 실행하면 토큰을 검색할 수 있는 웹 페이지에 액세스하는 방법에 대한 지침이 제공됩니다.웹 콘솔에서 (?) Help
Command Line Tools Copy Login Command로 이동하여 이 페이지에 액세스할 수도 있습니다. 클러스터에 로그인하여 인증을 위해 토큰을 전달합니다.
$ oc login --token=<token>
참고이 ID 공급자는 사용자 이름과 암호를 사용한 로그인을 지원하지 않습니다.
사용자가 로그인했는지 확인하고 사용자 이름을 표시합니다.
$ oc whoami