9.7. cert-manager Operator for Red Hat OpenShift と Istio-CSR の統合
cert-manager Operator for Red Hat OpenShift と Istio-CSR の統合は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
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.7.1. cert-manager Operator for Red Hat OpenShift を介した Istio-CSR エージェントのインストール
9.7.1.1. Istio-CSR 機能の有効化
cert-manager Operator for Red Hat OpenShift で Istio-CSR 機能を有効にするには、この手順を使用します。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。
手順
次のコマンドを実行して、cert-manager Operator for Red Hat OpenShift のデプロイメントを更新し、config map を使用します。
$ oc -n cert-manager-operator patch subscription openshift-cert-manager-operator --type='merge' -p '{"spec":{"config":{"env":[{"name":"UNSUPPORTED_ADDON_FEATURES","value":"IstioCSR=true"}]}}}'
検証
次のコマンドを実行して、デプロイメントのロールアウトが完了したことを確認します。
$ oc rollout status deployment/cert-manager-operator-controller-manager -n cert-manager-operator
出力例
deployment "cert-manager-operator-controller-manager" successfully rolled out
9.7.1.2. Istio-CSR エージェントのルート CA 発行者の作成
Istio-CSR エージェントのルート CA 発行者を作成するには、この手順を使用します。
サポートされている他の発行者も使用できます。ただし、ACME はサポートされていません。詳細は、「cert-manager Operator for Red Hat OpenShift の発行者プロバイダー」を参照してください。
Issuer
およびCertificate
オブジェクトを定義する YAML ファイル (例:issuer.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 --- kind: Issuer metadata: name: istio-ca namespace: <istio_project_name> 4 spec: ca: secretName: istio-ca
検証
次のコマンドを実行して、発行者が作成され、使用できる状態になっていることを確認します。
$ oc get issuer istio-ca -n <istio_project_name>
出力例
NAME READY AGE istio-ca True 3m
9.7.1.3. 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) が設定されます。
手順
次のコマンドを実行して、Istio-CSR をインストールするための新しいプロジェクトを作成します。既存のプロジェクトを使用して、このステップをスキップすることもできます。
$ oc new-project <istio_csr_project_name>
IstioCSR
カスタムリソースを作成して、cert-manager Operator for Red Hat OpenShift によって管理される Istio-CSR エージェントを有効にし、Istio ワークロードとコントロールプレーンの証明書署名要求を処理できるようにします。注記一度にサポートされる
IstioCSR
カスタムリソース (CR) は 1 つだけです。複数のIstioCSR
CR が作成された場合、アクティブになるのは 1 つだけです。IstioCSR
のstatus
サブリソースを使用して、リソースが未処理かどうかを確認してください。-
複数の
IstioCSR
CR が同時に作成された場合、いずれも処理されません。 -
複数の
IstioCSR
CR が連続して作成された場合、最初の CR のみが処理されます。 -
新しい要求が拒否されないように、未処理の
IstioCSR
CR を削除します。 -
IstioCSR
用に作成されたオブジェクトが、Operator によって自動的に削除されることはありません。アクティブなIstioCSR
リソースが削除され、以前のデプロイメントを削除せずに別の namespace に新しいリソースが作成されると、複数のistio-csr
デプロイメントがアクティブなままになる可能性があります。この動作は推奨されておらず、サポートされていません。
IstioCSR
オブジェクトを定義する YAML ファイル (例:istiocsr.yaml
) を作成します。IstioCSR.yaml
ファイルの例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-system
次のコマンドを実行して、
IstioCSR
カスタムリソースを作成します。$ oc create -f IstioCSR.yaml
-
複数の
検証
次のコマンドを実行して、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
次のコマンドを実行して、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.7.2. 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
関連リソースを削除します。
重要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"
次のコマンドを実行して、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>
次のコマンドを実行して、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 -n <istio_csr_project_name> delete <resource_type>/<resource_name>
関連するリソースがすべて削除されるまで、このプロセスを繰り返します。
9.7.3. Istio-CSR 機能が有効な cert-manager Operator for Red Hat OpenShift のアップグレード
Istio-CSR TechPreview フィーチャーゲートが有効になっている場合、Operator をアップグレードすることはできません。次の利用可能なバージョンを使用するには、cert-manager Operator for Red Hat OpenShift をアンインストールし、すべての Istio-CSR リソースを削除してから再インストールする必要があります。