9.10. cert-manager Operator for Red Hat OpenShift と Istio-CSR の統合


cert-manager Operator for Red Hat OpenShift は、Red Hat OpenShift Service Mesh または Istio のワークロードとコントロールプレーンコンポーネントを保護するための強化されたサポートを提供します。これには、相互 TLS (mTLS) を有効にする証明書のサポートが含まれます。この証明書は cert-manager の発行者を使用して署名、配信、更新されます。cert-manager Operator for Red Hat OpenShift で管理される Istio-CSR エージェントを使用して、Istio ワークロードとコントロールプレーンコンポーネントを保護できます。

この Istio-CSR 統合により、Istio は cert-manager Operator for Red Hat OpenShift から証明書を取得できるようになります。これにより、セキュリティーと証明書管理が簡素化されます。

9.10.1. cert-manager Operator for Red Hat OpenShift を介した Istio-CSR エージェントのインストール

9.10.1.1. Istio-CSR エージェントのルート CA 発行者の作成

Istio-CSR エージェントのルート CA 発行者を作成するには、この手順を使用します。

注記

サポートされている他の発行者も使用できます。ただし、ACME はサポートされていません。詳細は、「cert-manager Operator for Red Hat OpenShift の発行者プロバイダー」を参照してください。

手順

  1. Issuer および Certificate オブジェクトを定義する YAML ファイルを作成します。

    issuer.yaml ファイルの例

    apiVersion: cert-manager.io/v1
    kind: Issuer 
    1
    
    metadata:
      name: selfsigned
      namespace: <istio_project_name> 
    2
    
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: istio-ca
      namespace: <istio_project_name>
    spec:
      isCA: true
      duration: 87600h # 10 years
      secretName: istio-ca
      commonName: istio-ca
      privateKey:
        algorithm: ECDSA
        size: 256
      subject:
        organizations:
          - cluster.local
          - cert-manager
      issuerRef:
        name: selfsigned
        kind: Issuer 
    3
    
        group: cert-manager.io
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer 
    4
    
    metadata:
      name: istio-ca
      namespace: <istio_project_name> 
    5
    
    spec:
      ca:
        secretName: istio-ca
    Copy to Clipboard Toggle word wrap

    1 3 4
    Issuer または ClusterIssuer を指定します。
    2 5
    Istio プロジェクトの名前を指定します。

検証

  • 次のコマンドを実行して、発行者が作成され、使用できる状態になっていることを確認します。

    $ oc get issuer istio-ca -n <istio_project_name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME       READY   AGE
    istio-ca   True    3m
    Copy to Clipboard Toggle word wrap

9.10.1.2. IstioCSR カスタムリソースの作成

cert-manager Operator for Red Hat OpenShift を介して Istio-CSR エージェントをインストールするには、この手順を使用します。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • Istio-CSR 機能を有効にした。
  • Istio-CSR エージェントの証明書を生成するために必要な Issuer または ClusterIssuer リソースを作成した。

    注記

    Issuer リソースを使用している場合は、Red Hat OpenShift Service Mesh または Istiod namespace に Issuer および Certificate リソースを作成してください。証明書要求が同じ namespace に生成され、それに応じてロールベースのアクセス制御 (RBAC) が設定されます。

手順

  1. 次のコマンドを実行して、Istio-CSR をインストールするための新しいプロジェクトを作成します。Istio-CSR をインストールするための既存のプロジェクトがある場合は、この手順をスキップしてください。

    $ oc new-project <istio_csr_project_name>
    Copy to Clipboard Toggle word wrap
  2. IstioCSR カスタムリソースを作成して、cert-manager Operator for Red Hat OpenShift によって管理される Istio-CSR エージェントを有効にし、Istio ワークロードとコントロールプレーンの証明書署名要求を処理できるようにします。

    注記

    一度にサポートされる IstioCSR カスタムリソース (CR) は 1 つだけです。複数の IstioCSR CR が作成された場合、アクティブになるのは 1 つだけです。IstioCSRstatus サブリソースを使用して、リソースが未処理かどうかを確認してください。

    • 複数の IstioCSR CR が同時に作成された場合、いずれも処理されません。
    • 複数の IstioCSR CR が連続して作成された場合、最初の CR のみが処理されます。
    • 新しい要求が拒否されないように、未処理の IstioCSR CR を削除します。
    • IstioCSR 用に作成されたオブジェクトが、Operator によって自動的に削除されることはありません。アクティブな IstioCSR リソースが削除され、以前のデプロイメントを削除せずに別の namespace に新しいリソースが作成されると、複数の istio-csr デプロイメントがアクティブなままになる可能性があります。この動作は推奨されておらず、サポートされていません。
    1. IstioCSR オブジェクトを定義する YAML ファイルを作成します。

      IstioCSR CR の例

      apiVersion: operator.openshift.io/v1alpha1
      kind: IstioCSR
      metadata:
        name: default
        namespace: <istio_csr_project_name>
      spec:
        istioCSRConfig:
          certManager:
            issuerRef:
              name: istio-ca  
      1
      
              kind: Issuer 
      2
      
              group: cert-manager.io
          istiodTLSConfig:
            trustDomain: cluster.local
          istio:
            namespace: <istio_project_name>
      Copy to Clipboard Toggle word wrap

      1
      Issuer または ClusterIssuer の名前を指定します。issuer.yaml ファイルで定義されている CA 発行者と同じ名前にする必要があります。
      2
      Issuer または ClusterIssuer の種類を指定します。issuer.yaml ファイルで定義されている CA 発行者と同じ種類である必要があります。
    2. 次のコマンドを実行して、IstioCSR カスタムリソースを作成します。

      $ oc create -f IstioCSR.yaml
      Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、Istio-CSR デプロイメントの準備ができていることを確認します。

    $ oc get deployment -n <istio_csr_project_name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
    cert-manager-istio-csr   1/1     1            1           24s
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、Istio-CSR の Pod が実行されていることを確認します。

    $ oc get pod -n <istio_csr_project_name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                                  	 READY   STATUS	  RESTARTS    AGE
    cert-manager-istio-csr-5c979f9b7c-bv57w  1/1     Running  0           45s
    Copy to Clipboard Toggle word wrap

    • 次のコマンドを実行して、Istio-CSR の Pod がログにエラーを報告していないことを確認します。

      $ oc -n <istio_csr_project_name> logs <istio_csr_pod_name>
      Copy to Clipboard Toggle word wrap
    • 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift の Pod がエラーを報告していないことを確認します。

      $ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>
      Copy to Clipboard Toggle word wrap

9.10.2. IstioCSR カスタムリソースのカスタマイズ

IstioCSR カスタムリソース (CR) を変更して、Istio ワークロードが cert-manager Operator とやり取りする方法を定義できます。

9.10.2.1. istio-csr コンポーネントのログレベルの設定

istio-csr コンポーネントのログレベルを設定して、ログメッセージの詳細度と形式を制御できます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • IstioCSR カスタムリソース (CR) を作成した。

手順

  1. 次のコマンドを実行して、IstioCSR CR を編集します。

    oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。
  2. spec.istioCSRConfig セクションでログレベルと形式を設定します。

    ログレベルを設定するための IstioCSR CR 設定のサンプル

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        logFormat: text 
    1
    
        logLevel: 2 
    2
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    ログの出力形式を指定します。このフィールドは text または json のいずれかに設定できます。
    2
    ログレベルを設定します。サポートされている値は、Kubernetes ロギングガイドラインで定義されているように、1 から 5 までの値です。デフォルト値は 1 です。
  3. 変更を適用するために、エディターを保存して閉じます。変更が適用されると、cert-manager Operator が istio-csr オペランドのログ設定を更新します。

9.10.2.2. CA バンドルを配布するための namespace セレクターの設定

Istio-CSR エージェントは、CA バンドルを含む istio-ca-root-cert ConfigMap 作成および更新します。この CA バンドルは、サービスメッシュ内のワークロードが Istio コントロールプレーンへの接続を検証するために使用します。namespace セレクターを設定すると、Istio-CSR エージェントがこの ConfigMap を作成する namespace を指定できます。セレクターを設定しない場合、Istio-CSR エージェントはすべての namespace に ConfigMap を作成します。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • IstioCSR カスタムリソース (CR) を作成した。

手順

  1. 次のコマンドを実行して、IstioCSR CR を編集します。

    oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。
  2. namespace セレクターを設定するには、spec.istioCSRConfig.istioDataPlaneNamespaceSelector セクションを設定します。

    namespace セレクターを含む IstioCSR CR 設定のサンプル

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        istioDataPlaneNamespaceSelector: maistra.io/member-of=istio-system 
    1
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    maistra.io/member-of=istio-system は、サービスメッシュ内の namespace を特定するためのラベルのキーと値に置き換えます。<key>=<value> 形式を使用してください。
    注記

    istio-csr コンポーネントは、設定されたセレクターと一致しない namespace 内の ConfigMap オブジェクトは削除または管理しません。IstioCSR CR をデプロイした後にセレクターを作成または更新する場合、または namespace からラベルを削除する場合は、競合を避けるためにこれらの ConfigMap オブジェクトを手動で削除する必要があります。

    次のコマンドを実行すると、セレクターに一致する namespace にない ConfigMap オブジェクトをリスト表示できます。この例では、セレクターは maistra.io/member-of=istio-system です。

    printf "%-25s %10s\n" "ConfigMap" "Namespace"; \
    for ns in $(oc get namespaces -l "maistra.io/member-of!=istio-system" -o=jsonpath='{.items[*].metadata.name}'); do \
      oc get configmaps -l "istio.io/config=true" -n $ns --no-headers -o jsonpath='{.items[*].metadata.name}{"\t"}{.items[*].metadata.namespace}{"\n"}' --ignore-not-found; \
    done
    Copy to Clipboard Toggle word wrap
  3. 変更を適用するために、エディターを保存して閉じます。変更が適用されると、cert-manager Operator for Red Hat OpenShift が istio-csr オペランドの namespace セレクター設定を更新します。

9.10.2.3. Istio サーバーの CA 証明書の設定

Istio ワークロードが Istio サーバー証明書を検証するために使用する CA バンドルを含む ConfigMap を設定できます。設定されていない場合、cert-manager Operator for Red Hat OpenShift が、設定されている発行者内と、Istio 証明書を含む Kubernetes シークレット内で CA 証明書を検索します。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • IstioCSR カスタムリソース (CR) を作成した。

手順

  1. 次のコマンドを実行して、IstioCSR CR を編集します。

    oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。
  2. spec.istioCSRConfig.certManager セクションを編集して CA バンドルを設定します。

    CA バンドル設定を含む IstioCSR CR のサンプル

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        certManager:
          istioCACertificate:
            key: <key_in_the_configmap> 
    1
    
            name: <configmap_name> 
    2
    
            namespace: <configmap_namespace> 
    3
    Copy to Clipboard Toggle word wrap

    1
    CA バンドルを含む ConfigMap 内のキー名を指定します。
    2
    ConfigMap の名前を指定します。このフィールドを更新する前に、参照される ConfigMap とキーが存在することを確認してください。
    3
    オプション: ConfigMap が存在する namespace を指定します。このフィールドを設定しなかった場合、IstioCSR CR をインストールした namespace で、cert-manager Operator for Red Hat OpenShift によって ConfigMap が検索されます。
    注記

    CA 証明書がローテーションされるたびに、最新の証明書を使用して ConfigMap を手動で更新する必要があります。

  3. 変更を適用するために、エディターを保存して閉じます。変更が適用されると、cert-manager Operator が istio-csr オペランドの CA バンドルを更新します。

Red Hat OpenShift の cert-manager Operator によって管理される Istio-CSR エージェントをアンインストールするには、この手順を使用します。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • Istio-CSR 機能を有効にした。
  • IstioCSR カスタムリソースを作成した。

手順

  1. 次のコマンドを実行して、IstioCSR カスタムリソースを削除します。

    $ oc -n <istio_csr_project_name> delete istiocsrs.operator.openshift.io default
    Copy to Clipboard Toggle word wrap
  2. 関連リソースを削除します。

    重要

    Red Hat OpenShift Service Mesh または Istio コンポーネントの停止を回避するために、次のリソースを削除する前に、Istio-CSR サービスまたは Istio 用に発行された証明書を参照しているコンポーネントがないことを確認してください。

    1. 次のコマンドを実行してクラスタースコープのリソースをリスト表示し、リスト表示されたリソースの名前を後で参照できるように保存します。

      $ oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、Istio-csr がデプロイされた namespace 内のリソースをリスト表示し、リスト表示されたリソースの名前を後で参照できるように保存します。

      $ oc get certificate,deployments,services,serviceaccounts -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、Red Hat OpenShift Service Mesh または Istio がデプロイされた namespace 内のリソースをリスト表示し、リスト表示されたリソースの名前を後で参照できるように保存します。

      $ oc get roles,rolebindings -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr" -n <istio_csr_project_name>
      Copy to Clipboard Toggle word wrap
    4. 前のステップでリスト表示された各リソースに対して、次のコマンドを実行してリソースを削除します。

      $ oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>
      Copy to Clipboard Toggle word wrap

      関連するリソースがすべて削除されるまで、このプロセスを繰り返します。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat