11.3.6. 独自の CA 証明書で使用される秘密鍵の置き換え


この手順では、Cluster Operator で証明書と鍵を生成する代わりに、使用している CA 証明書と秘密鍵を更新する方法を説明します。

対応する CA キーも変更する場合は、この手順のステップを実行します。それ以外の場合は、独自の CA 証明書を更新 する手順を実行します。

独自の証明書を使用している場合、Cluster Operator は自動的に更新されません。したがって、期限切れ間近の CA 証明書を交換するために、証明書の更新期間中にこの手順を実行することが重要になります。

この手順では、PEM 形式の CA 証明書の更新を説明します。

以下の手順を実行する前に、新規 CA 証明書の CN(コモンネーム)が現在の CA 証明書とは異なることを確認してください。たとえば、Cluster Operator が証明書を更新する場合には、バージョンの識別に v<version_number> サフィックスを追加します。更新ごとに別のサフィックスを追加して、独自の CA 証明書で同じ作業を行います。別のキーを使用して新しい CA 証明書を生成して、シークレット に保存されている現在の CA 証明書を保持します。

前提条件

手順

  1. Kafka カスタムリソースの調整を一時停止します。

    1. OpenShift でカスタムリソースにアノテーションを付け、pause-reconciliation アノテーションを true に設定します。

      oc annotate Kafka <name_of_custom_resource> strimzi.io/pause-reconciliation="true"
      Copy to Clipboard Toggle word wrap

      たとえば、my-cluster という名前の Kafka カスタムリソースの場合:

      oc annotate Kafka my-cluster strimzi.io/pause-reconciliation="true"
      Copy to Clipboard Toggle word wrap
    2. カスタムリソースの status 条件で、ReconciliationPaused への変更が表示されることを確認し ます。

      oc describe Kafka <name_of_custom_resource>
      Copy to Clipboard Toggle word wrap

      type 条件は、lastTransitionTimeReconciliationPaused に変わります。

  2. CA 証明書の Secret を更新します。

    1. 既存のシークレットを編集して新規 CA 証明書を追加し、証明書生成アノテーション値を更新します。

      oc edit secret <ca_certificate_secret_name>
      Copy to Clipboard Toggle word wrap

      <ca_certificate_secret_name>Secretの名前で、クラスタCA証明書の場合はKAFKA-CLUSTER-NAME-cluster-ca-certであり、クライアントCA証明書の場合は KAFKA-CLUSTER-NAME-clients-ca-cert となります。

      以下の例は、my-cluster という名前の Kafka クラスターに関連付けられたクラスター CA 証明書のシークレットを示しています。

      クラスター CA 証明書のシークレット設定例

      apiVersion: v1
      kind: Secret
      data:
        ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0F... 
      1
      
      metadata:
        annotations:
          strimzi.io/ca-cert-generation: "0" 
      2
      
        labels:
          strimzi.io/cluster: my-cluster
          strimzi.io/kind: Kafka
        name: my-cluster-cluster-ca-cert
        #...
      type: Opaque
      Copy to Clipboard Toggle word wrap

      1
      現在の base64 でエンコードされた CA 証明書
      2
      現在の CA 証明書生成アノテーションの値
    2. 保持する現在の CA 証明書の名前を変更します。

      data の配下にある現在の ca.crt プロパティー名を ca-<date>.crt に変更します。<date> は、証明書の有効期限を YEAR-MONTH-DAYTHOUR-MINUTE-SECONDZ の形式で指定します。例: ca-2022-01-26T17-32-00Z.crt:現在の CA 証明書を保持するため、プロパティーの値を残します。

    3. 新規 CA 証明書を base64 にエンコードします。

      cat <path_to_new_certificate> | base64
      Copy to Clipboard Toggle word wrap
    4. CA 証明書を更新します。

      data の下に新しい ca.crt プロパティーを作成し、上の手順から base64 でエンコードされた CA 証明書を ca.crt プロパティーの値としてコピーします。

    5. CA 証明書生成アノテーションの値を増やします。

      strimzi.io/ca-cert-generation アノテーションの値を1つ増分して更新します。たとえば、strimzi.io/ca-cert-generation=0strimzi.io/ca-cert-generation=1 に変更します。Secret にアノテーションがない場合、値は 0 として扱われるため、1 を指定してアノテーションを追加します。

      AMQ Streams が証明書を生成すると、証明書生成アノテーションは Cluster Operator によって自動的に増分されます。独自の CA 証明書を手動で更新するには、値を1増やしたアノテーションを設定します。Cluster Operator が Pod をロールアウトし、証明書を更新できるように、アノテーションには現在のシークレットよりも高い値を指定する必要があります。strimzi.io/ca-cert-generation は、各 CA 証明書の更新で値を1増やす必要があります。

    6. 新しい CA 証明書と証明書生成のアノテーション値でシークレットを保存します。

      新しい CA 証明書で更新されるシークレット設定の例

      apiVersion: v1
      kind: Secret
      data:
        ca.crt: GCa6LS3RTHeKFiFDGBOUDYFAZ0F... 
      1
      
        ca-2022-01-26T17-32-00Z.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0F... 
      2
      
      metadata:
        annotations:
          strimzi.io/ca-cert-generation: "1" 
      3
      
        labels:
          strimzi.io/cluster: my-cluster
          strimzi.io/kind: Kafka
        name: my-cluster-cluster-ca-cert
        #...
      type: Opaque
      Copy to Clipboard Toggle word wrap

      1
      新しい base64 でエンコードされた CA 証明書
      2
      古い base64 でエンコードされた CA 証明書
      3
      新しい CA 証明書生成アノテーションの値
  3. 新しい CA 証明書の署名に使用する CA キーの Secret を更新します。

    1. 既存のシークレットを編集して新規 CA キーを追加し、キー生成アノテーション値を更新します。

      oc edit secret <ca_key_name>
      Copy to Clipboard Toggle word wrap

      <ca_key_name> は CA キーの名前です。これは、クラスター CA キーの場合は <kafka_cluster_name>-cluster-ca、クライアント CA キーの場合は <kafka_cluster_name>-clients-ca です。

      以下の例は、my-cluster という名前の Kafka クラスターに関連付けられたクラスター CA キーのシークレットを示しています。

      クラスター CA キーのシークレット設定例

      apiVersion: v1
      kind: Secret
      data:
        ca.key: SA1cKF1GFDzOIiPOIUQBHDNFGDFS... 
      1
      
      metadata:
        annotations:
          strimzi.io/ca-key-generation: "0" 
      2
      
        labels:
          strimzi.io/cluster: my-cluster
          strimzi.io/kind: Kafka
        name: my-cluster-cluster-ca
        #...
      type: Opaque
      Copy to Clipboard Toggle word wrap

      1
      現在の base64 でエンコードされた CA キー
      2
      現在の CA キー生成アノテーションの値
    2. CA キーを base64 にエンコードします。

      cat <path_to_new_key> | base64
      Copy to Clipboard Toggle word wrap
    3. CA キーを更新します。

      前の手順の base64 でエンコードされた CA キーを data にある ca.key プロパティーの値としてコピーします。

    4. CA キー生成アノテーションの値を増やします。

      strimzi.io/ca-key-generation アノテーションの値を1つ増分して更新します。たとえば、strimzi.io/ca-key-generation=0strimzi.io/ca-key-generation=1 に変更します。Secret にアノテーションがない場合は 0 として扱われるため、1 の値を指定してアノテーションを追加します。

      AMQ Streams が証明書を生成すると、キー生成アノテーションは Cluster Operator によって自動的に増分されます。独自の CA 証明書を新しい CA キーと共に手動で更新するには、増分の値のアノテーションを設定します。Cluster Operator が Pod をロールアウトし、証明書およびキーを更新できるように、アノテーションには現在のシークレットよりも高い値が必要です。strimzi.io/ca-key-generation は、CA 証明書の更新ごとにインクリメントする必要があります。

  4. 新しい CA キーおよびキー生成アノテーション値でシークレットを保存します。

    新規 CA キーで更新されるシークレット設定の例

    apiVersion: v1
    kind: Secret
    data:
      ca.key: AB0cKF1GFDzOIiPOIUQWERZJQ0F... 
    1
    
    metadata:
      annotations:
        strimzi.io/ca-key-generation: "1" 
    2
    
      labels:
        strimzi.io/cluster: my-cluster
        strimzi.io/kind: Kafka
      name: my-cluster-cluster-ca
      #...
    type: Opaque
    Copy to Clipboard Toggle word wrap

    1
    新規の base64 でエンコードされた CA キー
    2
    新しい CA キー生成アノテーションの値
  5. 一時停止から再開します。

    Kafka カスタムリソースの調整を再開するには、pause-reconciliation アノテーションを false に設定します。

    oc annotate Kafka NAME-OF-CUSTOM-RESOURCE strimzi.io/pause-reconciliation="false"
    Copy to Clipboard Toggle word wrap

    pause-reconciliation アノテーションを削除してもこれを実行できます。

    oc annotate Kafka <name_of_custom_resource> strimzi.io/pause-reconciliation-
    Copy to Clipboard Toggle word wrap

次の調整時に、Cluster Operator は ZooKeeper、Kafka、およびその他のコンポーネントのローリングアップデートを実行して、新しい CA 証明書を信頼します。ローリングアップデートが完了すると、Cluster Operator は新しい CA キーで署名された新しいサーバー証明書を生成するために新しい証明書を起動します。

メンテナンス時間枠が設定されている場合には、Cluster Operator は次のメンテナンス時間枠内で最初の調整時に Pod をローリングします。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat