7.7. GitLab アイデンティティープロバイダーの設定
GitLab.com またはその他の GitLab インスタンスを ID プロバイダーとして使用して、gitlab
ID プロバイダーを設定します。
7.7.1. OpenShift Container Platform のアイデンティティープロバイダーについて
デフォルトでは、kubeadmin
ユーザーのみがクラスターに存在します。アイデンティティープロバイダーを指定するには、アイデンティティープロバイダーを記述し、これをクラスターに追加するカスタムリソースを作成する必要があります。
/
、:
、および %
を含む 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. シークレットの作成
アイデンティティープロバイダーは openshift-config
namespace で 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. config map の作成
アイデンティティープロバイダーは、openshift-config
namespace で OpenShift Container Platform ConfigMap
オブジェクトを使用し、認証局バンドルをこれに組み込みます。これらは、主にアイデンティティープロバイダーで必要な証明書バンドルを組み込むために使用されます。
この手順は、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 を適用して config map を作成できます。
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 アイデンティティープロバイダーのパラメーターおよび許可される値を示します。
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 に接頭辞として付加され、アイデンティティー名が作成されます。これはコールバック URL を作成するためにも使用されます。
- 2
- このプロバイダーのアイデンティティーと
User
オブジェクト間にマッピングが確立される方法を制御します。 - 3
- 登録済みの GitLab OAuth アプリケーション のクライアント ID です。アプリケーションは、
https://oauth-openshift.apps.<cluster-name>.<cluster-domain>/oauth2callback/<idp-provider-name>
のコールバック URL を使用して設定する必要があります。 - 4
- GitLab で発行されるクライアントシークレットが含まれる OpenShift Container Platform
Secret
オブジェクトへの参照。 - 5
- GitLab プロバイダーのホスト URL です。これは
https://gitlab.com/
か、他の GitLab の自己ホストインスタンスのいずれかになります。 - 6
- オプション: 設定済みの URL のサーバー証明書を検証するために使用する PEM エンコードされた認証局バンドルを含む OpenShift Container Platform
ConfigMap
オブジェクトへの参照。
関連情報
-
すべてのアイデンティティープロバイダーに共通するパラメーターの詳細は、アイデンティティープロバイダーのパラメーター (
mappingMethod
など) を参照してください。
7.7.6. アイデンティティープロバイダーのクラスターへの追加
クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。
前提条件
- OpenShift Container Platform クラスターを作成します。
- アイデンティティープロバイダーのカスタムリソース (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
この場合は、この警告を無視しても問題ありません。アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。
$ oc login -u <username>
ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。
$ oc whoami