4.14. 信頼できない TLS 証明書の CodeReady Workspaces へのインポート

CodeReady Workspaces コンポーネントの外部通信は、デフォルトでは TLS で暗号化されます。CodeReady Workspaces コンポーネントと、プロキシー、ソースコードリポジトリー、"RH-SSO Identity Provider" などの外部サービスとの通信では、TLS の使用が必要になる場合があります。これらの通信では、信頼できる認証局が署名する TLS 証明書を使用する必要があります。

注記

CodeReady Workspaces コンポーネントまたは外部サービスで使用される証明書が信頼できない CA によって署名される場合、CodeReady Workspaces インストールで CA 証明書をインポートする必要があるため、すべての CodeReady Workspaces コンポーネントがそれらを信頼できる CA によって署名されているものと見なす必要があります。

この追加が必要になる可能性のある典型的なケースは以下のとおりです。

  • 基礎となる OpenShift クラスターが信頼されていない CA によって署名される TLS 証明書を使用する場合
  • CodeReady Workspaces サーバーまたはワークスペースコンポーネントが、信頼できない CA で署名された TLS 証明書を使用する RH-SSO や Git サーバーなどの外部サービスに接続する場合

CodeReady Workspaces は、プロジェクトのラベルが付いた ConfigMaps を TLS 証明書のソースとして使用します。ConfigMap には、それぞれ証明書数の乱数を持つ任意の数のキーを指定できます。

注記

クラスターに、クラスター全体のプロキシー設定を使用して追加されたクラスター全体の信頼される CA 証明書が含まれる場合、CodeReady Workspaces Operator はそれらを検知し、それらをこの ConfigMap に自動的に挿入します。

  • CodeReady Workspaces は、ConfigMap に自動的に config.openshift.io/inject-trusted-cabundle="true" ラベルを付けます。
  • このアノテーションに基づいて、OpenShift は ConfigMap の ca-bundle.crt キー内にクラスター全体で信頼される CA 証明書を自動的に挿入します。
重要

一部の CodeReady Workspaces コンポーネントには、エンドポイントを信頼するための完全な証明書チェーンが必要です。クラスターが中間証明書で設定されている場合には、チェーン全体(自己署名ルートを含む)を CodeReady Workspaces に追加する必要があります。

4.14.1. 新規 CA 証明書の CodeReady Workspaces への追加

次の手順は、すでにインストールおよび実行されているインスタンスと、インストールされるインスタンスに適用されます。

注記

2.5.1 より前の CodeReady Workspaces バージョンを使用している場合は、本書で追加の TLS 証明書を適用する方法について参照してください。

前提条件

  • oc ツールが利用できる。
  • CodeReady Workspaces の namespace が存在する。

手順

  1. インポートする必要のある証明書をローカルファイルシステムに保存します。

    注意
    • 証明書ファイルは、通常、.pem、. crt.ca-bundle などの Base64 ASCII ファイルとして保存されます。ただし、それらにはバイナリーエンコード (例: .cer ファイル) を使用することもできます。証明書ファイルを保持するすべてのシークレットでは、バイナリーでエンコードされる証明書ではなく、Base64 ASCII 証明書を使用する必要があります。
    • CodeReady Workspaces はすでに予約済みのファイル名を使用して証明書を ConfigMap に自動的に挿入するため、以下の予約済みのファイル名を使用して証明書を保存しないようにしてください。

      • ca-bundle.crt
      • ca.crt
  2. 必要な TLS 証明書で新規 ConfigMap を作成します。

    $ oc create configmap custom-certs --from-file=<bundle-file-path> -n=openshift-workspaces

    複数のバンドルを適用するには、別の -from-file=<bundle-file-path> フラグを追加します。それ以外の場合は別の ConfigMap を作成します。

  3. app.kubernetes.io/part-of=che.eclipse.orgapp.kubernetes.io/component=ca-bundle の両方のラベルを使用して作成した ConfigMap にラベルを付けます。

    $ oc label configmap custom-certs app.kubernetes.io/part-of=che.eclipse.org app.kubernetes.io/component=ca-bundle -n <crw-namespace-name>
  4. CodeReady Workspaces がデプロイされていない場合はデプロイします。それ以外の場合は、CodeReady Workspaces コンポーネントのロールアウトが完了するまで待機します。実行中のワークスペースがある場合は、変更を有効にするためにそれらを再起動する必要があります。