12.3.9.2. 手動によるルーター証明書の再デプロイ
ルーター証明書を手動で再デプロイするには、新規ルーター証明書を router-certs
という名前のシークレットに追加してから、ルーターを再デプロイする必要があります。
これ以降の手順では
default
プロジェクトに切り替えます。$ oc project default
最初にレジストリーを OpenShift Container Platform 3.1 以前で作成した場合は、環境変数が証明書を保存するために使用されている場合があります (この方法は現在は推奨されていません。 代わりにサービス提供証明書シークレットをご使用ください)。
以下のコマンドを実行し、
OPENSHIFT_CA_DATA
、OPENSHIFT_CERT_DATA
、およびOPENSHIFT_KEY_DATA
環境変数を探します。$ oc set env dc/router --list
それらの変数が存在する場合は、以下の
ClusterRoleBinding
を作成します。$ cat <<EOF | apiVersion: v1 groupNames: null kind: ClusterRoleBinding metadata: creationTimestamp: null name: router-router-role roleRef: kind: ClusterRole name: system:router subjects: - kind: ServiceAccount name: router namespace: default userNames: - system:serviceaccount:default:router EOF oc create -f -
それらの変数が存在する場合は、以下のコマンドを実行してそれらを削除します。
$ oc set env dc/router OPENSHIFT_CA_DATA- OPENSHIFT_CERT_DATA- OPENSHIFT_KEY_DATA- OPENSHIFT_MASTER-
証明書を取得します。
- 外部の認証局 (CA) を使用して証明書に署名する場合、以下の内部プロセスに従って、新規の証明書を作成し、これを OpenShift Container Platform に指定します。
内部 OpenShift Container Platform CA を使用して証明書に署名する場合は、以下のコマンドを実行します。
重要以下のコマンドは、内部で署名される証明書を生成します。これは、OpenShift Container Platform CA を信頼するクライアントによってのみ信頼されます。
$ cd /root $ mkdir cert ; cd cert $ oc adm ca create-server-cert \ --signer-cert=/etc/origin/master/ca.crt \ --signer-key=/etc/origin/master/ca.key \ --signer-serial=/etc/origin/master/ca.serial.txt \ --hostnames='*.hostnames.for.the.certificate' \ --cert=router.crt \ --key=router.key \
これらのコマンドは以下のファイルを生成します。
- router.crt という名前の新規の証明書
- 署名する CA 証明書チェーン /etc/origin/master/ca.crt のコピーです。このチェーンには中間の CA を使用する場合に複数の証明書が含まれる場合があります。
- router.key という名前の対応するプライベートキー。
生成された証明書を連結する新規ファイルを作成します。
$ cat router.crt /etc/origin/master/ca.crt router.key > router.pem
注記この手順は、OpenShift CA が署名した証明書を使用している場合にのみ有効です。カスタム証明書を使用する場合は、
/etc/origin/master/ca.crt
の代わりに、正しい CA チェーンが含まれるファイルを使用する必要があります。新規シークレットを生成する前に、現在のシークレットをバックアップします。
$ oc get -o yaml --export secret router-certs > ~/old-router-certs-secret.yaml
新規の証明書およびキーを保持する新規シークレットを作成し、既存のシークレットの内容を置き換えます。
$ oc create secret tls router-certs --cert=router.pem \ 1 --key=router.key -o json --dry-run | \ oc replace -f -
- 1
- router.pem は、生成した証明書の連結を含むファイルです。
ルーターを再デプロイします。
$ oc rollout latest dc/router
ルーターの初回デプロイ時に、アノテーションが
router-metrics-tls
という名前の サービス提供証明書シークレット を自動的に作成するルーターのサービスに追加されます。router-metrics-tls
証明書を手動で再デプロイするため、そのサービス提供証明書の再作成をトリガーできます。 これは、シークレットを削除し、アノテーションを削除してからルーターサービスに再度追加し、router-metrics-tls
シークレットを再デプロイして実行できます。以下のアノテーションを
router
サービスから削除します。$ oc annotate service router \ service.alpha.openshift.io/serving-cert-secret-name- \ service.alpha.openshift.io/serving-cert-signed-by-
既存の
router-metrics-tls
シークレットを削除します。$ oc delete secret router-metrics-tls
アノテーションを再度追加します。
$ oc annotate service router \ service.alpha.openshift.io/serving-cert-secret-name=router-metrics-tls