1.8.10. ハブクラスターの KubeAPIServer 証明書のカスタマイズ
マネージドクラスターは、Red Hat OpenShift Container Platform KubeAPIServer の外部ロードバランサーとの相互接続を介して、ハブクラスターと通信します。デフォルトの OpenShift Container Platform KubeAPIServer 証明書は、OpenShift Container Platform のインストール時に、内部の OpenShift Container Platform クラスター認証局 (CA) によって発行されます。必要に応じて、証明書を追加または変更できます。
API サーバー証明書を変更すると、マネージドクラスターとハブクラスター間の通信に影響を与える可能性があります。製品をインストールする前に名前付き証明書を追加すると、マネージドクラスターがオフライン状態になる可能性がある問題を回避できます。
次のリストには、証明書の更新が必要となる場合の例がいくつか含まれています。
-
外部ロードバランサーのデフォルトの API サーバー証明書を独自の証明書に置き換える必要がある。OpenShift Container Platform ドキュメントの API サーバー証明書の追加 のガイダンスに従い、ホスト名
api.<cluster_name>.<base_domain>の名前付き証明書を追加して、外部ロードバランサーのデフォルトの API サーバー証明書を置き換えることができます。証明書を置き換えると、マネージドクラスターの一部がオフライン状態に移行する可能性があります。証明書のアップグレード後にクラスターがオフライン状態になった場合は、証明書を変更した後のインポート済みクラスターのオフラインでのトラブルシューティング のトラブルシューティング手順に従って問題を解決してください。
注記: 製品をインストールする前に名前付き証明書を追加すると、クラスターがオフライン状態に移行するのを回避できます。
-
外部ロードバランサーの名前付き証明書の有効期限が切れているため、証明書を置き換える必要がある。中間証明書の数に関係なく、古い証明書と新しい証明書の両方が同じルート CA 証明書を共有する場合は、OpenShift Container Platform ドキュメントの API サーバー証明書の追加 のガイダンスに従って、新しい証明書の新しいシークレットを作成できます。次に、ホスト名
api.<cluster_name>.<base_domain>のサービス証明書参照をAPIServerカスタムリソース内の新しいシークレットに更新します。それ以外の場合、古い証明書と新しい証明書に異なるルート CA 証明書がある場合は、次の手順を実行して証明書を置き換えます。
手順
次の例のような
APIServerカスタムリソースを見つけます。apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: old-cert-secret既存および新しい証明書の内容を含む
openshift-confignamespace に新しいシークレットを作成します。次のコマンドを実行して、古い証明書を新しい証明書にコピーします。
cp old.crt combined.crt次のコマンドを実行して、新しい証明書の内容を古い証明書のコピーに追加します。
cat new.crt >> combined.crt- 次のコマンドを実行して、結合された証明書を適用して、シークレットを作成します。
oc create secret tls combined-certs-secret --cert=combined.crt --key=old.key -n openshift-configAPIServerリソースを更新して、結合された証明書をservingCertificateとして参照します。APIServerリソースは次のファイルのようになります。apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: combined-cert-secret- 約 15 分後、新しい証明書と古い証明書の両方を含む CA バンドルがマネージドクラスターに伝播されます。
次のコマンドを入力して、新しい証明書情報のみを含む
new-cert-secretという名前の別のシークレットをopenshift-confignamespace に作成します。oc create secret tls new-cert-secret --cert=new.crt --key=new.key -n openshift-config {code}new-cert-secretを参照するようにservingCertificateの名前を変更して、APIServerリソースを更新します。リソースは以下の例のようになります。apiVersion: config.openshift.io/v1 kind: APIServer metadata: name: cluster spec: audit: profile: Default servingCerts: namedCertificates: - names: - api.mycluster.example.com servingCertificate: name: new-cert-secret
約 15 分後、以前の証明書は CA バンドルから削除され、変更はマネージドクラスターに自動的に伝播されます。
注記: マネージドクラスターは、ホスト名 api.<cluster_name>.<base_domain> を使用してハブクラスターにアクセスする必要があります。他のホスト名で設定された名前付き証明書は使用できません。