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. 設定マップの作成

アイデンティティープロバイダーは、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 を適用して設定マップを作成できます。

    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 オブジェクトへの参照。

関連情報

7.7.6. アイデンティティープロバイダーのクラスターへの追加

クラスターのインストール後に、アイデンティティープロバイダーをそのクラスターに追加し、ユーザーの認証を実行できるようにします。

前提条件

  • OpenShift Container Platform クラスターを作成します。
  • アイデンティティープロバイダーのカスタムリソース (CR) を作成します。
  • 管理者としてログインしている必要があります。

手順

  1. 定義された 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この場合は、この警告を無視しても問題ありません。

  2. アイデンティティープロバイダーのユーザーとしてクラスターにログインし、プロンプトが出されたらパスワードを入力します。

    $ oc login -u <username>
  3. ユーザーが正常にログインされていることを確認し、ユーザー名を表示します。

    $ oc whoami