3.2. API サーバー証明書の追加
クラスター外のクライアントが API サーバーの証明書を検証できるようにするには、デフォルトの API サーバー証明書を、クライアントが信頼する認証局 (CA) が発行した証明書に置き換えることができます。
デフォルトでは、API サーバー証明書は OpenShift Container Platform クラスターの内部 CA によって発行されます。その結果、クラスター外のクライアントは API サーバーの証明書を検証できなくなります。
Hosted Control Plane クラスターでは、Kubernetes API サーバーに必要な数のカスタム証明書を追加できます。ただし、ワーカーノードがコントロールプレーンとの通信に使用するエンドポイントの証明書は追加しないでください。詳細は、ホステッドクラスターでカスタム API サーバー証明書を設定する を参照してください。
3.2.1. 証明書という名前の API サーバーを初めて追加します リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの API サーバー証明書は、OpenShift Container Platform クラスター内部の認証局 (CA) によって発行されます。リバースプロキシーやロードバランサーを使用する場合など、クライアントから要求された完全修飾ドメイン名 (FQDN) に基づいて、API サーバーが返す代替証明書を追加できます。
証明書という名前のカスタム API サーバーを初めて追加すると 、kube-apiserver-operator が API サーバー Pod の新しいリビジョンをロールアウトするようになります。ノードの再起動は不要です。
前提条件
- FQDN とそれに対応するプライベートキーの証明書が必要です。それぞれが個別の PEM 形式のファイルである必要があります。
- プライベートキーの暗号化は解除されている必要があります。
-
証明書には、FQDN を示す
subjectAltName拡張が含まれる必要があります。 - 証明書ファイルでは、チェーンに 1 つ以上の証明書を含めることができます。API サーバーの FQDN に対応する証明書は、ファイル内の最初の証明書である必要があり、その後に中間証明書が続き、最後にルート CA 証明書が続きます。
内部ロードバランサーに名前付きの証明書を指定しないようにしてください (ホスト名 api-int.<cluster_name>.<base_domain>)。これを指定すると、クラスターの状態は動作の低下した状態になります。
手順
kubeadminユーザーとして CLI にログインしてください。$ oc login -u kubeadmin -p <password> https://<fqdn>:6443各項目の説明:
<password>- クラスター管理者パスワードを指定します。
<fqdn>- 内部クラスター API エンドポイントの完全修飾ドメイン名を指定します。
openshift-config名前空間に、証明書チェーンと秘密鍵を含むシークレットを作成します。$ oc create secret tls <secret_name> \ --cert=<path_to_certificate_file> \ --key=<path_to_private_key_file> \ -n openshift-config各項目の説明:
<secret_name>- 暗号鍵ペアを格納する新しい秘密リソースの名前を指定します。
< 証明書ファイルへのパス >- カスタム証明書チェーンファイルへの絶対ローカルパスを指定します。
< 秘密鍵ファイルへのパス >- 証明書に関連付けられた暗号化されていない秘密鍵ファイルへの絶対ローカルパスを指定します。
API サーバーを更新して、作成したシークレットリソースを参照するようにします。
$ oc patch apiserver cluster --type=merge -p ' { "spec": { "servingCerts": { "namedCertificates": [ { "names": ["<fqdn>"], "servingCertificate": { "name": "<secret_name>" } } ] } } }'各項目の説明:
<fqdn>- API サーバーがこのカスタム証明書を提供する、完全修飾ドメイン名を指定します。ポート番号は含めないでください。
<secret_name>- 前の手順で作成したシークレットの名前を指定します。
オペレーターの状態を確認して、Kubernetes API サーバーの新しいリビジョンが展開されたことを確認します。
$ oc get clusteroperators kube-apiserver注記API サーバーオペレーターがカスタム証明書で設定された新しい Pod リビジョンをデプロイしている間、
PROGRESSINGステータス列はTrueに変わります。展開作業中は、プロセスを中断したり、追加の設定更新を適用したりしないでください。ステータスがFalseに戻り、AVAILABLE がTrue と表示されるまで続行しないでください。