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

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

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

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

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

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

注記

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

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

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

本書は、CodeReady Workspaces のインストール前や、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 をデプロイします。デプロイしない場合は、CodeReady Workspaces コンポーネントのロールアウトが完了するまで待機します。実行中のワークスペースがある場合は、変更を有効にするためにそれらを再起動する必要があります。