9.10. Red Hat OpenShift の cert-manager Operator と Istio-CSR の統合
Red Hat OpenShift における cert-manager Operator の istio-CSR 統合は、テクノロジープレビュー機能のみです。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Red Hat OpenShift の cert-manager Operator は、Red Hat OpenShift Service Mesh または Istio でワークロードとコントロールプレーンコンポーネントを保護するための強化されたサポートを提供します。これには、cert-manager 発行者を使用して署名、配信、および更新である相互 TLS (mTLS)を有効にする証明書のサポートが含まれます。Red Hat OpenShift 管理の Istio-CSR エージェントに cert-manager Operator を使用して、Istio ワークロードおよびコントロールプレーンコンポーネントのセキュリティーを保護することができます。
この Istio-CSR 統合により、Istio は Red Hat OpenShift の cert-manager Operator から証明書を取得し、セキュリティーおよび証明書の管理を単純化できるようになりました。
9.10.1. Red Hat OpenShift の cert-manager Operator を使用した Istio-CSR エージェントのインストール
9.10.1.1. Istio-CSR 機能の有効化
以下の手順を使用して、Red Hat OpenShift の cert-manager Operator で 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.10.1.2. Istio-CSR エージェントのルート CA 発行者の作成
この手順を使用して、Istio-CSR エージェントのルート CA 発行者を作成します。
ACME 発行者はサポートされていない他の発行者を除き、サポートされている他の発行者を使用できます。詳細は、"cert-manager Operator for Red Hat OpenShift issuer providers" を参照してください。
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
検証
次のコマンドを実行して、Issuer が作成され、使用できる状態であることを確認します。
$ oc get issuer istio-ca -n <istio_project_name>
出力例
NAME READY AGE istio-ca True 3m
9.10.1.3. IstioCSR
カスタムリソースの作成
この手順を使用して、Red Hat OpenShift の cert-manager Operator を使用して 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
カスタムリソースを作成して、Istio ワークロードおよびコントロールプレーンの証明書署名要求を処理するために、Red Hat OpenShift の cert-manager Operator によって管理される Istio-CSR エージェントを有効にします。注記一度にサポートされる
IstioCSR
カスタムリソース(CR)は 1 つだけです。複数のIstioCSR
CR が作成されると、1 つだけアクティブになります。IstioCSR
のstatus
サブリソースを使用して、リソースが処理されていないかどうかを確認します。-
複数の
IstioCSR
CR が同時に作成される場合、何も処理されません。 -
複数の
IstioCSR
CR が順次作成される場合、最初の CR のみが処理されます。 -
新規要求が拒否されるのを防ぐには、未処理の
IstioCSR
CR を削除します。 -
Operator は、
IstioCSR
用に作成されたオブジェクトを自動的に削除しません。アクティブな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>
以下のコマンドを実行して、Red Hat OpenShift Pod の cert-manager Operator がエラーを報告していないことを確認します。
$ oc -n cert-manager-operator logs <cert_manager_operator_pod_name>
9.10.2. Red Hat OpenShift の cert-manager Operator が管理する 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.10.3. Istio-CSR 機能が有効にされている Red Hat OpenShift の cert-manager Operator のアップグレード
Istio-CSR TechPreview フィーチャーゲートが有効になっている場合、Operator はアップグレードできません。次に利用可能なバージョンに使用するには、Red Hat OpenShift の cert-manager Operator をアンインストールし、すべての Istio-CSR リソースを削除してから再インストールする必要があります。