3.2. カスタム認証局の設定
カスタム証明局 (CA) を使用して外部で生成された証明書とドメイン名を設定するには、それらを MicroShift の /etc/microshift/config.yaml
設定ファイルに追加します。ホストオペレーティングシステムの信頼ルートも設定する必要があります。
外部で生成された kubeconfig
ファイルは /var/lib/microshift/resources/kubeadmin/<hostname>/kubeconfig
ディレクトリーに作成されます。外部で生成された設定に加えて localhost
を使用する必要がある場合は、元の kubeconfig
ファイルをデフォルトの場所に保持します。localhost
kubeconfig
ファイルは、自己署名認証局を使用します。
前提条件
-
OpenShift CLI (
oc
) がインストールされている。 - クラスター管理者のロールを持つユーザーとしてクラスターにアクセスできる。
- 認証局がカスタム証明書を発行している。
-
MicroShift の
/etc/microshift/config.yaml
設定ファイルが存在する。
手順
- 追加するカスタム証明書を MicroShift ホストの信頼ルートにコピーします。証明書と秘密鍵に MicroShift のみがアクセス可能であることを確認します。
必要なカスタム CA ごとに、次の例を使用して、
namedCertificates
というapiServer
セクションを/etc/microshift/config.yaml
MicroShift 設定ファイルに追加します。apiServer: namedCertificates: - certPath: ~/certs/api_fqdn_1.crt 1 keyPath: ~/certs/api_fqdn_1.key 2 - certPath: ~/certs/api_fqdn_2.crt keyPath: ~/certs/api_fqdn_2.key names: 3 - api_fqdn_1 - *.apps.external.com
次のコマンドを実行して、{microshift-service} を再起動し、証明書を適用します。
$ systemctl microshift restart
-
システムが再起動してカスタムサーバーが適用されるまで数分間待ちます。新しい
kubeconfig
ファイルは/var/lib/microshift/resources/kubeadmin/
ディレクトリーに生成されます。 -
kubeconfig
ファイルをクライアントにコピーします。IP アドレスにワイルドカードを指定した場合は、kubeconfig
を更新してサーバーのパブリック IP アドレスを削除し、その IP アドレスを使用する特定のワイルドカード範囲に置き換えます。 クライアントからは、次の手順を実行します。
次のコマンドを実行して、使用する
kubeconfig
を指定します。$ export KUBECONFIG=~/custom-kubeconfigs/kubeconfig 1
- 1
- コピーした
kubeconfig
ファイルの場所をパスとして使用します。
次のコマンドを使用して、証明書が適用されていることを確認します。
$ oc --certificate-authority ~/certs/ca.ca get node
出力例
oc get node NAME STATUS ROLES AGE VERSION dhcp-1-235-195.arm.example.com Ready control-plane,master,worker 76m v1.29.2
次のコマンドを実行して、新しい CA ファイルを $KUBECONFIG 環境変数に追加します。
$ oc config set clusters.microshift.certificate-authority /tmp/certificate-authority-data-new.crt
次のコマンドを実行して、新しい
kubeconfig
ファイルに新しい CA が含まれていることを確認します。$ oc config view --flatten
外部で生成された
kubeconfig
ファイルの例apiVersion: v1 clusters: - cluster: certificate-authority: /tmp/certificate-authority-data-new.crt 1 server: https://api.ci-ln-k0gim2b-76ef8.aws-2.ci.openshift.org:6443 name: ci-ln-k0gim2b-76ef8 contexts: - context: cluster: ci-ln-k0gim2b-76ef8 user: name: current-context: kind: Config preferences: {}
- 1
- 外部で生成された
kubeconfig
ファイルには、certificate-authority-data
セクションが存在しません。これは、以前使用したoc config set
コマンドで追加されます。
次のコマンドを実行して、カスタマイズされた API サーバー認証局の
subject
とissuer
を確認します。$ curl --cacert /tmp/caCert.pem https://${fqdn_name}:6443/healthz -v
出力例
Server certificate: subject: CN=kas-test-cert_server start date: Mar 12 11:39:46 2024 GMT expire date: Mar 12 11:39:46 2025 GMT subjectAltName: host "dhcp-1-235-3.arm.eng.rdu2.redhat.com" matched cert's "dhcp-1-235-3.arm.eng.rdu2.redhat.com" issuer: CN=kas-test-cert_ca SSL certificate verify ok.
重要生成された
kubeconfig
ファイル内のcertificate-authority-data
を新しいrootCA
に置き換えるか、certificate-authority-data
をオペレーティングシステムの信頼ルートに追加します。両方の方法を使用しないでください。オペレーティングシステムの信頼ルートで追加の CA を設定します。たとえば、クライアントシステム上の RHEL クライアントトラストストア内などです。詳細は、システム全体のトラストストア を参照してください。
- CA を含む設定で証明書バンドルを更新することを推奨します。
-
証明書バンドルを設定しない場合は、代わりに
oc login localhost:8443 --certificate-authority=/path/to/cert.crt
コマンドを使用することもできますが、この方法は推奨されません。