13.3.10.2. 마스터에서 인증 구성
다음과 같은 사항이 있을 수 있습니다.
OpenShift Container Platform을 이미 설치한 다음 /etc/origin/master/master-config.yaml 파일을 새 디렉터리에 복사합니다. 예를 들면 다음과 같습니다.
$ cd /etc/origin/master $ mkdir githubconfig; cp master-config.yaml githubconfig
OpenShift Container Platform을 아직 설치하지 않은 다음 OpenShift Container Platform API 서버를 시작하여 (미래) OpenShift Container Platform 마스터의 호스트 이름과 start 명령으로 생성한 구성 파일을 저장할 디렉터리를 지정합니다.
$ openshift start master --public-master=<apiserver> --write-config=<directory>
예를 들면 다음과 같습니다.
$ openshift start master --public-master=https://myapiserver.com:8443 --write-config=githubconfig
참고Ansible을 사용하여 설치하는 경우
identityProvider
구성을 Ansible 플레이북에 추가해야 합니다. 다음 단계를 사용하여 Ansible을 사용하여 설치한 후 수동으로 구성을 수정하는 경우 설치 도구 또는 업그레이드를 다시 실행할 때마다 수정 사항이 손실됩니다.참고openshift start master
를 자체적으로 사용하면 호스트 이름을 자동으로 감지하지만 GitHub에서 애플리케이션을 등록할 때 지정한 정확한 호스트 이름으로 리디렉션할 수 있어야 합니다. 따라서 ID가 잘못된 주소로 리디렉션될 수 있으므로 자동으로 탐지할 수 없습니다. 대신 웹 브라우저가 OpenShift Container Platform 클러스터와 상호 작용하는 데 사용하는 호스트 이름을 지정해야 합니다.
새 master-config.yaml 파일의
identityProviders
스탠자를 편집하고GitHubIdentityProvider
구성 예제를 복사하여 기존 스탠자를 교체합니다.oauthConfig: ... identityProviders: - name: github 1 challenge: false 2 login: true 3 mappingMethod: claim 4 provider: apiVersion: v1 kind: GitHubIdentityProvider ca: ... 5 clientID: ... 6 clientSecret: ... 7 hostname: ... 8 organizations: 9 - myorganization1 - myorganization2 teams: 10 - myorganization1/team-a - myorganization2/team-b
- 1
- 이 공급자 이름은 GitHub 숫자 사용자 ID 앞에 접두어로 지정되어 ID 이름을 형성합니다. 콜백 URL을 빌드하는 데에도 사용됩니다.
- 2
GitHubIdentityProvider
는WWW-Authenticate 챌린지
를 보내는 데 사용할 수 없습니다.- 3
true인
경우 웹 콘솔과 같은 웹 클라이언트의 인증되지 않은 토큰 요청이 GitHub로 리디렉션되어 로그인합니다.- 4
- 위에서 설명한 대로 이 프로바이더의 ID와 사용자 오브젝트 간의 매핑 설정 방법을 제어합니다.
- 5
- GitHub Enterprise의 경우 CA는 서버에 요청할 때 사용할 수 있는 신뢰할 수 있는 인증 기관 번들입니다. 기본 시스템 루트 인증서를 사용하려면 이 매개변수를 생략합니다. GitHub의 경우 이 매개변수를 생략합니다.
- 6
- 등록된 GitHub OAuth 애플리케이션의 클라이언트 ID. 애플리케이션은
<master>/oauth2callback/<identityProviderName>
의 콜백 URL을 사용하여 구성해야 합니다. - 7
- GitHub에서 발행한 클라이언트 시크릿입니다. 이 값은 환경 변수, 외부 파일 또는 암호화된 파일에서 도 제공할 수 있습니다.
- 8
- GitHub Enterprise의 경우 인스턴스의 호스트 이름(예:
example.com
)을 제공해야 합니다. 이 값은 /setup/settings 파일의 GitHub Enterprise호스트 이름
값과 일치해야 하며 포트 번호를 포함할 수 없습니다. GitHub의 경우 이 매개변수를 생략합니다. - 9
- 조직 선택 목록. 지정된 경우 나열된 조직 중 하나 이상의 멤버인 GitHub 사용자만 로그인할 수 있습니다.
clientID
에 구성된 GitHub OAuth 애플리케이션이 조직의 소유가 아닌 경우 조직 소유자가 이 옵션을 사용하려면 타사 액세스 권한을 부여해야 합니다. 이러한 작업은 조직 관리자가 GitHub를 처음 로그인하는 동안 또는 GitHub 조직 설정에서 수행할 수 있습니다.teams
필드와 함께 사용할 수 없습니다. - 10
- 팀 선택 목록. 지정된 경우 나열된 팀 중 하나 이상의 멤버인 GitHub 사용자만 로그인할 수 있습니다.
clientID
에 구성된 GitHub OAuth 애플리케이션이 팀의 조직에서 소유하지 않는 경우 조직 소유자는 이 옵션을 사용하려면 타사 액세스 권한을 부여해야 합니다. 이러한 작업은 조직 관리자가 GitHub를 처음 로그인하는 동안 또는 GitHub 조직 설정에서 수행할 수 있습니다.organizations
필드와 함께 사용할 수 없습니다.
identityProviders
스탠자를 다음과 같이 수정합니다.GitHub에서 구성한 콜백 URL과 일치하도록 프로바이더
이름을
변경합니다.예를 들어 콜백 URL을
https://myapiserver.com:8443/oauth2callback/github/
로 정의한 경우이름은
github
여야 합니다.-
이전에 등록한 GitHub에서
clientID
를 클라이언트 ID로 변경합니다. -
clientSecret
을 이전에 등록한 GitHub에서 클라이언트 보안으로 변경합니다. -
인증
하기 위해
- 변경 사항을 저장하고 파일을 종료합니다.
방금 수정한 구성 파일을 지정하여 OpenShift Container Platform API 서버를 시작합니다.
$ openshift start master --config=<path/to/modified/config>/master-config.yaml
구성되고 나면 OpenShift Container Platform 웹 콘솔에 로그인하는 모든 사용자에게 GitHub 자격 증명을 사용하여 로그인하라는 메시지가 표시됩니다. 첫 번째 로그인 시 사용자는 GitHub에서 OpenShift Container Platform에서 사용자 이름, 암호 및 조직 멤버십을 사용할 수 있도록 애플리케이션 권한 부여를 클릭해야 합니다. 그런 다음 사용자는 다시 웹 콘솔로 리디렉션됩니다.