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 エージェントの証明書署名を有効にするには、cert-manager Operator for Red Hat OpenShift を使用してルート CA 発行者を設定します。Cert-manager Operator for Red Hat OpenShift を使用することで、信頼できるルートを確立し、ワークロード間の安全な通信を確保できます。

注記

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

手順

  1. 以下の設定例を参考に、発行者オブジェクト証明書 オブジェクトを定義する YAML ファイルを作成します。

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: selfsigned
      namespace: <istio_project_name>
    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
        group: cert-manager.io
    ---
    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: istio-ca
      namespace: <istio_project_name>
    spec:
      ca:
        secretName: istio-ca

    ここでは、以下のようになります。

    Issuer
    発行者 または クラスター発行者 を指定します。
    <istio_project_name>
    Istio プロジェクトの名前を指定します。

検証

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

    $ oc get issuer istio-ca -n <istio_project_name>

    出力例

    NAME       READY   AGE
    istio-ca   True    3m

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

通信を保護するには、cert-manager Operator for Red Hat OpenShift を介して IstioCSR カスタムリソースを作成し、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>
  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 ファイルを作成します。

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

      ここでは、以下のようになります。

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

      $ oc create -f IstioCSR.yaml

検証

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

    $ oc get deployment -n <istio_csr_project_name>

    出力例

    NAME                     READY   UP-TO-DATE   AVAILABLE   AGE
    cert-manager-istio-csr   1/1     1            1           24s

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

    $ oc get pod -n <istio_csr_project_name>

    出力例

    NAME                                  	 READY   STATUS	  RESTARTS    AGE
    cert-manager-istio-csr-5c979f9b7c-bv57w  1/1     Running  0           45s

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

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

      $ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>

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

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

前提条件

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

手順

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

    $ oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name> 
    1

    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。

  2. spec.istioCSRConfig セクションで、以下の設定例を使用してログレベルとフォーマットを設定します。

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        logFormat: text
        logLevel: 2
    # ...

    ここでは、以下のようになります。

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

9.10.1.4. 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>

    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。

  2. 名前空間セレクターを設定するには、spec.istioCSRConfig.istioDataPlaneNamespaceSelector セクションを設定します。以下の例を参照してください。

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        istioDataPlaneNamespaceSelector: maistra.io/member-of=istio-system
    # ...

    maistra.io/member-of=istio-system 名前空間セレクターは、サービスメッシュ内の名前空間を識別するラベルのキーと値を定義します。< キー >=< 値 > の 形式を使用してください。

    注記

    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
  3. 変更を適用するために、エディターを保存して閉じます。変更が適用されると、cert-manager Operator for Red Hat OpenShift が istio-csr オペランドの namespace セレクター設定を更新します。

9.10.1.5. 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>

    <istio_csr_project_name> は、IstioCSR CR を作成した namespace に置き換えます。

  2. spec.istioCSRConfig.certManager セクションを編集して、CA バンドルを設定します。以下の例を参照してください。

    apiVersion: operator.openshift.io/v1alpha1
    kind: IstioCSR
    ...
    spec:
      istioCSRConfig:
        certManager:
          istioCACertificate:
            key: <key_in_the_configmap>
            name: <configmap_name>
            namespace: <configmap_namespace>

    ここでは、以下のようになります。

    <configmap 内のキー >
    CA バンドルを含む ConfigMap 内のキー名を指定します。
    <configmap_name>
    ConfigMap の名前を指定します。このフィールドを更新する前に、参照される ConfigMap とキーが存在することを確認してください。
    <configmap_namespace>

    オプション: ConfigMap が 存在する名前空間を指定します。このフィールドを設定しなかった場合、IstioCSR CR をインストールした namespace で、cert-manager Operator for Red Hat OpenShift によって ConfigMap が検索されます。

    注記

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

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る