Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

12.3.9.2. 手動によるルーター証明書の再デプロイ

ルーター証明書を手動で再デプロイするには、新規ルーター証明書を router-certs という名前のシークレットに追加してから、ルーターを再デプロイする必要があります。

  1. これ以降の手順では default プロジェクトに切り替えます。

    $ oc project default
  2. 最初にレジストリーを OpenShift Container Platform 3.1 以前で作成した場合は、環境変数が証明書を保存するために使用されている場合があります (この方法は現在は推奨されていません。 代わりにサービス提供証明書シークレットをご使用ください)。

    1. 以下のコマンドを実行し、OPENSHIFT_CA_DATAOPENSHIFT_CERT_DATA、および OPENSHIFT_KEY_DATA 環境変数を探します。

      $ oc set env dc/router --list
    2. それらの変数が存在する場合は、以下の 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 -
    3. それらの変数が存在する場合は、以下のコマンドを実行してそれらを削除します。

      $ oc set env dc/router OPENSHIFT_CA_DATA- OPENSHIFT_CERT_DATA- OPENSHIFT_KEY_DATA- OPENSHIFT_MASTER-
  3. 証明書を取得します。

    • 外部の認証局 (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 という名前の対応するプライベートキー。
  4. 生成された証明書を連結する新規ファイルを作成します。

    $ cat router.crt /etc/origin/master/ca.crt router.key > router.pem
    注記

    この手順は、OpenShift CA が署名した証明書を使用している場合にのみ有効です。カスタム証明書を使用する場合は、/etc/origin/master/ca.crt の代わりに、正しい CA チェーンが含まれるファイルを使用する必要があります。

  5. 新規シークレットを生成する前に、現在のシークレットをバックアップします。

    $ oc get -o yaml --export secret router-certs > ~/old-router-certs-secret.yaml
  6. 新規の証明書およびキーを保持する新規シークレットを作成し、既存のシークレットの内容を置き換えます。

    $ oc create secret tls router-certs --cert=router.pem \ 1
        --key=router.key -o json --dry-run | \
        oc replace -f -
    1
    router.pem は、生成した証明書の連結を含むファイルです。
  7. ルーターを再デプロイします。

    $ oc rollout latest dc/router

    ルーターの初回デプロイ時に、アノテーションが router-metrics-tls という名前の サービス提供証明書シークレット を自動的に作成するルーターのサービスに追加されます。

    router-metrics-tls 証明書を手動で再デプロイするため、そのサービス提供証明書の再作成をトリガーできます。 これは、シークレットを削除し、アノテーションを削除してからルーターサービスに再度追加し、router-metrics-tls シークレットを再デプロイして実行できます。

  8. 以下のアノテーションを router サービスから削除します。

    $ oc annotate service router \
        service.alpha.openshift.io/serving-cert-secret-name- \
        service.alpha.openshift.io/serving-cert-signed-by-
  9. 既存の router-metrics-tls シークレットを削除します。

    $ oc delete secret router-metrics-tls
  10. アノテーションを再度追加します。

    $ oc annotate service router \
        service.alpha.openshift.io/serving-cert-secret-name=router-metrics-tls