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 の発行者プロバイダー」を参照してください。
手順
IssuerおよびCertificateオブジェクトを定義する YAML ファイルを作成します。issuer.yamlファイルの例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、発行者が作成され、使用できる状態になっていることを確認します。
oc get issuer istio-ca -n <istio_project_name>
$ oc get issuer istio-ca -n <istio_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY AGE istio-ca True 3m
NAME READY AGE istio-ca True 3mCopy to Clipboard Copied! Toggle word wrap Toggle overflow
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 またはIstiodnamespace にIssuerおよびCertificateリソースを作成してください。証明書要求が同じ namespace に生成され、それに応じてロールベースのアクセス制御 (RBAC) が設定されます。
手順
次のコマンドを実行して、Istio-CSR をインストールするための新しいプロジェクトを作成します。Istio-CSR をインストールするための既存のプロジェクトがある場合は、この手順をスキップしてください。
oc new-project <istio_csr_project_name>
$ oc new-project <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow IstioCSRカスタムリソースを作成して、cert-manager Operator for Red Hat OpenShift によって管理される Istio-CSR エージェントを有効にし、Istio ワークロードとコントロールプレーンの証明書署名要求を処理できるようにします。注記一度にサポートされる
IstioCSRカスタムリソース (CR) は 1 つだけです。複数のIstioCSRCR が作成された場合、アクティブになるのは 1 つだけです。IstioCSRのstatusサブリソースを使用して、リソースが未処理かどうかを確認してください。-
複数の
IstioCSRCR が同時に作成された場合、いずれも処理されません。 -
複数の
IstioCSRCR が連続して作成された場合、最初の CR のみが処理されます。 -
新しい要求が拒否されないように、未処理の
IstioCSRCR を削除します。 -
IstioCSR用に作成されたオブジェクトが、Operator によって自動的に削除されることはありません。アクティブなIstioCSRリソースが削除され、以前のデプロイメントを削除せずに別の namespace に新しいリソースが作成されると、複数のistio-csrデプロイメントがアクティブなままになる可能性があります。この動作は推奨されておらず、サポートされていません。
IstioCSRオブジェクトを定義する YAML ファイルを作成します。IstioCSRCR の例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
IstioCSRカスタムリソースを作成します。oc create -f IstioCSR.yaml
$ oc create -f IstioCSR.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
複数の
検証
次のコマンドを実行して、Istio-CSR デプロイメントの準備ができていることを確認します。
oc get deployment -n <istio_csr_project_name>
$ oc get deployment -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY UP-TO-DATE AVAILABLE AGE cert-manager-istio-csr 1/1 1 1 24s
NAME READY UP-TO-DATE AVAILABLE AGE cert-manager-istio-csr 1/1 1 1 24sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Istio-CSR の Pod が実行されていることを確認します。
oc get pod -n <istio_csr_project_name>
$ oc get pod -n <istio_csr_project_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME READY STATUS RESTARTS AGE cert-manager-istio-csr-5c979f9b7c-bv57w 1/1 Running 0 45s
NAME READY STATUS RESTARTS AGE cert-manager-istio-csr-5c979f9b7c-bv57w 1/1 Running 0 45sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、Istio-CSR の Pod がログにエラーを報告していないことを確認します。
oc -n <istio_csr_project_name> logs <istio_csr_pod_name>
$ oc -n <istio_csr_project_name> logs <istio_csr_pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift の Pod がエラーを報告していないことを確認します。
oc -n cert-manager-operator logs <cert_manager_operator_pod_name>
$ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.10.2. IstioCSR カスタムリソースのカスタマイズ リンクのコピーリンクがクリップボードにコピーされました!
IstioCSR カスタムリソース (CR) を変更して、Istio ワークロードが cert-manager Operator とやり取りする方法を定義できます。
9.10.2.1. istio-csr コンポーネントのログレベルの設定 リンクのコピーリンクがクリップボードにコピーされました!
istio-csr コンポーネントのログレベルを設定して、ログメッセージの詳細度と形式を制御できます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 -
IstioCSRカスタムリソース (CR) を作成した。
手順
次のコマンドを実行して、
IstioCSRCR を編集します。oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<istio_csr_project_name>は、IstioCSRCR を作成した namespace に置き換えます。
spec.istioCSRConfigセクションでログレベルと形式を設定します。ログレベルを設定するための IstioCSR CR 設定のサンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するために、エディターを保存して閉じます。変更が適用されると、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) を作成した。
手順
次のコマンドを実行して、
IstioCSRCR を編集します。oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<istio_csr_project_name>は、IstioCSRCR を作成した namespace に置き換えます。
namespace セレクターを設定するには、
spec.istioCSRConfig.istioDataPlaneNamespaceSelectorセクションを設定します。namespace セレクターを含む IstioCSR CR 設定のサンプル
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
maistra.io/member-of=istio-systemは、サービスメッシュ内の namespace を特定するためのラベルのキーと値に置き換えます。<key>=<value>形式を使用してください。
注記istio-csr コンポーネントは、設定されたセレクターと一致しない namespace 内の
ConfigMapオブジェクトは削除または管理しません。IstioCSRCR をデプロイした後にセレクターを作成または更新する場合、または 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; \ doneprintf "%-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; \ doneCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を適用するために、エディターを保存して閉じます。変更が適用されると、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) を作成した。
手順
次のコマンドを実行して、
IstioCSRCR を編集します。oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>
oc edit istiocsrs.operator.openshift.io default -n <istio_csr_project_name>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<istio_csr_project_name>は、IstioCSRCR を作成した namespace に置き換えます。
spec.istioCSRConfig.certManagerセクションを編集して CA バンドルを設定します。CA バンドル設定を含む
IstioCSRCR のサンプルCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記CA 証明書がローテーションされるたびに、最新の証明書を使用して
ConfigMapを手動で更新する必要があります。-
変更を適用するために、エディターを保存して閉じます。変更が適用されると、cert-manager Operator が
istio-csrオペランドの CA バンドルを更新します。
9.10.3. cert-manager Operator for Red Hat OpenShift によって管理される Istio-CSR エージェントのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat OpenShift の cert-manager Operator によって管理される Istio-CSR エージェントをアンインストールするには、この手順を使用します。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - Istio-CSR 機能を有効にした。
-
IstioCSRカスタムリソースを作成した。
手順
次のコマンドを実行して、
IstioCSRカスタムリソースを削除します。oc -n <istio_csr_project_name> delete istiocsrs.operator.openshift.io default
$ oc -n <istio_csr_project_name> delete istiocsrs.operator.openshift.io defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 関連リソースを削除します。
重要Red Hat OpenShift Service Mesh または Istio コンポーネントの停止を回避するために、次のリソースを削除する前に、Istio-CSR サービスまたは Istio 用に発行された証明書を参照しているコンポーネントがないことを確認してください。
次のコマンドを実行してクラスタースコープのリソースをリスト表示し、リスト表示されたリソースの名前を後で参照できるように保存します。
oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"
$ oc get clusterrolebindings,clusterroles -l "app=cert-manager-istio-csr,app.kubernetes.io/name=cert-manager-istio-csr"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、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>
$ 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 Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、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>
$ 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 Copied! Toggle word wrap Toggle overflow 前のステップでリスト表示された各リソースに対して、次のコマンドを実行してリソースを削除します。
oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>
$ oc -n <istio_csr_project_name> delete <resource_type>/<resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 関連するリソースがすべて削除されるまで、このプロセスを繰り返します。