第3章 証明書の設定
3.1. デフォルトの Ingress 証明書の置き換え
3.1.1. デフォルトの Ingress 証明書について
					デフォルトで、OpenShift Container Platform は Ingress Operator を使用して内部 CA を作成し、.apps サブドメインの下にあるアプリケーションに有効なワイルドカード証明書を発行します。Web コンソールと CLI のどちらもこの証明書を使用します。
				
					内部インフラストラクチャー CA 証明書は自己署名型です。一部のセキュリティーまたは PKI チームにとってこのプロセスは適切とみなされない可能性がありますが、ここで想定されるリスクは最小限度のものです。これらの証明書を暗黙的に信頼するクライアントがクラスター内の他のコンポーネントになります。デフォルトのワイルドカード証明書を、コンテナーユーザー空間で提供される CA バンドルにすでに含まれているパブリック CA に置き換えることで、外部クライアントは .apps サブドメインで実行されるアプリケーションに安全に接続できます。
				
3.1.2. デフォルトの Ingress 証明書の置き換え
					.apps サブドメインにあるすべてのアプリケーションのデフォルトの Ingress 証明書を置き換えることができます。証明書を置き換えると、Web コンソールや CLI を含むすべてのアプリケーションで、指定した証明書による暗号化が提供されます。
				
前提条件
- 
							完全修飾 .appsサブドメインおよびその対応するプライベートキーのワイルドカード証明書が必要です。それぞれが個別の PEM 形式のファイルである必要があります。
- プライベートキーの暗号化は解除されている必要があります。キーが暗号化されている場合は、これを OpenShift Container Platform にインポートする前に復号化します。
- 
							証明書には、*.apps.<clustername>.<domain>を示すsubjectAltName拡張が含まれている必要があります。
- 証明書ファイルでは、チェーンに 1 つ以上の証明書を含めることができます。ファイルには、ワイルドカード証明書を最初の証明書としてリストし、その後に他の中間証明書をリストし、最後にルート CA 証明書をリストする必要があります。
- ルート CA 証明書を追加の PEM 形式のファイルにコピーします。
- 
							-----END CERTIFICATE-----を含むすべての証明書が、その行の後に 1 つの改行で終了していることを確認します。
手順
- ワイルドカード証明書の署名に使用されるルート CA 証明書のみを含む config map を作成します。 - oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \ -n openshift-config- $ oc create configmap custom-ca \ --from-file=ca-bundle.crt=</path/to/example-ca.crt> \- 1 - -n openshift-config- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- </path/to/example-ca.crt>は、ローカルファイルシステム上のルート CA 証明書ファイルへのパスです。たとえば、- /etc/pki/ca-trust/source/anchorsです。
 
- 新たに作成された設定マップでクラスター全体のプロキシー設定を更新します。 - oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'- $ oc patch proxy/cluster \ --type=merge \ --patch='{"spec":{"trustedCA":{"name":"custom-ca"}}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- クラスターの信頼された CA のみを更新する場合は、MCO によって - /etc/pki/ca-trust/source/anchors/openshift-config-user-ca-bundle.crtファイルが更新され、Machine Config Controller (MCC) によって信頼された CA の更新が各ノードに適用されます。そのため、ノードの再起動は不要です。ただし、これらの変更に伴い、Machine Config Daemon (MCD) によって各ノード上の重要なサービス (kubelet や CRI-O など) が再起動されます。これらのサービスの再起動により、サービスが完全に再起動されるまで、各ノードは一時的に- NotReady状態になります。- openshift-config-user-ca-bundle.crtファイル内の他のパラメーター (- noproxyなど) を変更すると、MCO によってクラスター内の各ノードが再起動されます。
- ワイルドカード証明書チェーンおよびキーが含まれるシークレットを作成します。 - oc create secret tls <secret> \ --cert=</path/to/cert.crt> \ --key=</path/to/cert.key> \ -n openshift-ingress- $ oc create secret tls <secret> \- 1 - --cert=</path/to/cert.crt> \- 2 - --key=</path/to/cert.key> \- 3 - -n openshift-ingress- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Ingress コントローラー設定を、新規に作成されたシークレットで更新します。 - oc patch ingresscontroller.operator default \ --type=merge -p \ '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \ -n openshift-ingress-operator- $ oc patch ingresscontroller.operator default \ --type=merge -p \ '{"spec":{"defaultCertificate": {"name": "<secret>"}}}' \- 1 - -n openshift-ingress-operator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <secret>を、直前の手順でシークレットに使用された名前に置き換えます。
 重要- ローリング更新を実行するために Ingress Operator をトリガーするには、シークレットの名前を更新する必要があります。kubelet はボリュームマウント内のシークレットへの変更を自動的に伝播するため、シークレットの内容を更新してもローリング更新はトリガーされません。詳細は、この Red Hat Knowledgebase Solution を参照してください。