10.5. Zero Trust Workload Identity Manager のオペランドのデプロイ
Zero Trust Workload Identity Manager はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、以下のリンクを参照してください。
それぞれのカスタムリソース (CR) を作成することにより、次のオペランドをデプロイできます。インストールを正常に実行するには、次の順序でオペランドをデプロイする必要があります。
- SPIRE Server
- SPIRE Agent
- SPIFFE CSI ドライバー
- SPIRE OIDC ディスカバリープロバイダー
10.5.1. SPIRE サーバーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
SpireServer カスタムリソース (CR) を設定して、SPIRE サーバーをデプロイおよび設定できます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 クラスターに Zero Trust Workload Identity Manager をインストールした。
SpireServerCR を作成します。SpireServerCR を定義する YAML ファイル (例:SpireServer.yaml) を作成します。SpireServer.yamlの例apiVersion: operator.openshift.io/v1alpha1 kind: SpireServer metadata: name: cluster spec: trustDomain: <trust_domain>1 clusterName: <cluster_name>2 caSubject: commonName: example.org3 country: "US"4 organization: "RH"5 persistence: type: pvc6 size: "5Gi"7 accessMode: ReadWriteOnce8 datastore: databaseType: sqlite3 connectionString: "/run/spire/data/datastore.sqlite3" maxOpenConns: 1009 maxIdleConns: 210 connMaxLifetime: 360011 jwtIssuer: <jwt_issuer_domain>12 - 1
- SPIFFE 識別子に使用する信頼ドメイン。
- 2
- クラスターの名前。
- 3
- SPIRE サーバー CA のコモンネーム。
- 4
- SPIRE サーバー CA の国。
- 5
- SPIRE サーバー CA の組織。
- 6
- 永続化のために使用するボリュームのタイプ。有効なオプションは
pvcとhostPathです。 - 7
- 永続化のために使用するボリュームのサイズ。
- 8
- 永続化のために使用するアクセスモード。有効なオプションは
ReadWriteOnce、ReadWriteOncePod、ReadWriteManyです。 - 9
- 開いているデータベース接続の最大数。
- 10
- プール内のアイドル接続の最大数。
- 11
- 接続を再利用できる最大時間。時間を無制限に指定するには、値を
0に設定します。 - 12
- JSON Web Token (JWT) 発行者ドメイン。デフォルト値は、
oidc-discovery.$trustDomainで指定された値に設定されます。
以下のコマンドを実行して設定を適用します。
$ oc apply -f SpireServer.yaml
検証
次のコマンドを実行して、SPIRE サーバーのステートフルセットが準備完了状態であり、利用可能であることを確認します。
$ oc get statefulset -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME READY AGE spire-server 1/1 65s次のコマンドを実行して、SPIRE サーバー Pod のステータスが
Runningであることを確認します。$ oc get po -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME READY STATUS RESTARTS AGE spire-server-0 2/2 Running 1 (108s ago) 111s次のコマンドを実行して、永続ボリューム要求 (PVC) がバインドされていることを確認します。
$ oc get pvc -l app.kubernetes.io/name=server -n zero-trust-workload-identity-manager出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTECLASS AGE spire-data-spire-server-0 Bound pvc-27a36535-18a1-4fde-ab6d-e7ee7d3c2744 5Gi RW0 gp3-csi <unset> 22m
10.5.2. SPIRE エージェントのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
SpireAgent カスタムリソース (CR) を設定して、SPIRE エージェントをデプロイおよび設定できます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - クラスターに Zero Trust Workload Identity Manager をインストールした。
手順
SpireAgentCR を作成します。SpireAgentCR を定義する YAML ファイル (例:SpireAgent.yaml) を作成します。SpireAgent.yamlの例apiVersion: operator.openshift.io/v1alpha1 kind: SpireAgent metadata: name: cluster spec: trustDomain: <trust_domain>1 clusterName: <cluster_name>2 nodeAttestor: k8sPSATEnabled: "true"3 workloadAttestors: k8sEnabled: "true"4 workloadAttestorsVerification: type: "auto"5 - 1
- SPIFFE 識別子に使用する信頼ドメイン。
- 2
- クラスターの名前。
- 3
- Projected Service Account Token (PSAT) Kubernetes ノードアテスターを有効または無効にします。有効なオプションは
trueとfalseです。 - 4
- Kubernetes ワークロードアテスターを有効または無効にします。有効なオプションは
trueとfalseです。 - 5
- kubelet に対して実行する検証のタイプ。有効なオプションは
auto、hostCert、apiServerCA、skipです。autoオプションは、hostCertの使用を試みてから、apiServerCAにフォールバックします。
以下のコマンドを実行して設定を適用します。
$ oc apply -f SpireAgent.yaml
検証
次のコマンドを実行して、SPIRE エージェントのデーモンセットが準備完了状態であり、利用可能であることを確認します。
$ oc get daemonset -l app.kubernetes.io/name=agent -n zero-trust-workload-identity-manager出力例
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE spire-agent 3 3 3 3 3 <none> 10m次のコマンドを実行して、SPIRE エージェント Pod のステータスが
Runningであることを確認します。$ oc get po -l app.kubernetes.io/name=agent -n zero-trust-workload-identity-manager出力例
NAME READY STATUS RESTARTS AGE spire-agent-dp4jb 1/1 Running 0 12m spire-agent-nvwjm 1/1 Running 0 12m spire-agent-vtvlk 1/1 Running 0 12m
10.5.3. SPIFFE Container Storage Interface ドライバーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
SpiffeCSIDriver カスタムリソース (CR) を設定して、SPIRE エージェントをデプロイおよび設定できます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - クラスターに Zero Trust Workload Identity Manager をインストールした。
手順
SpiffeCSIDriverCR を作成します。SpiffeCSIDriverCR オブジェクトを定義する YAML ファイル (例:SpiffeCSIDriver.yaml) を作成します。SpiffeCSIDriver.yamlの例apiVersion: operator.openshift.io/v1alpha1 kind: SpiffeCSIDriver metadata: name: cluster spec: agentSocketPath: '/run/spire/agent-sockets/spire-agent.sock'1 - 1
- SPIRE エージェントへの UNIX ソケットパス。
以下のコマンドを実行して設定を適用します。
$ oc apply -f SpiffeCSIDriver.yaml
検証
次のコマンドを実行して、SPIFFE CSI ドライバーのデーモンセットが準備完了状態であり、利用可能であることを確認します。
$ oc get daemonset -l app.kubernetes.io/name=spiffe-csi-driver -n zero-trust-workload-identity-manager出力例
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE spire-spiffe-csi-driver 3 3 3 3 3 <none> 114s次のコマンドを実行して、SPIFFE Container Storage Interface (CSI) ドライバー Pod のステータスが
Runningであることを確認します。$ oc get po -l app.kubernetes.io/name=spiffe-csi-driver -n zero-trust-workload-identity-manager出力例
NAME READY STATUS RESTARTS AGE spire-spiffe-csi-driver-gpwcp 2/2 Running 0 2m37s spire-spiffe-csi-driver-rrbrd 2/2 Running 0 2m37s spire-spiffe-csi-driver-w6s6q 2/2 Running 0 2m37s
10.5.4. SPIRE OpenID Connect ディスカバリープロバイダーのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
SpireOIDCDiscoveryProvider カスタムリソース (CR) を設定して、SPIRE OpenID Connect (OIDC) ディスカバリープロバイダーをデプロイおよび設定できます。
前提条件
-
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 - クラスターに Zero Trust Workload Identity Manager をインストールした。
手順
SpireOIDCDiscoveryProviderCR を作成します。SpireOIDCDiscoveryProviderCR を定義する YAML ファイル (例:SpireOIDCDiscoveryProvider.yaml) を作成します。SpireOIDCDiscoveryProvider.yamlの例apiVersion: operator.openshift.io/v1alpha1 kind: SpireOIDCDiscoveryProvider metadata: name: cluster spec: trustDomain: <trust_domain>1 agentSocketName: 'spire-agent.sock'2 jwtIssuer: <jwt_issuer_domain>3 以下のコマンドを実行して設定を適用します。
$ oc apply -f SpireOIDCDiscoveryProvider.yaml
検証
次のコマンドを実行して、OIDC Discovery Provider のデプロイメントが準備完了状態であり、利用可能であることを確認します。
$ oc get deployment -l app.kubernetes.io/name=spiffe-oidc-discovery-provider -n zero-trust-workload-identity-manager出力例
NAME READY UP-TO-DATE AVAILABLE AGE spire-spiffe-oidc-discovery-provider 1/1 1 1 2m58s次のコマンドを実行して、OIDC Discovery Provider Pod のステータスが
Runningであることを確認します。$ oc get po -l app.kubernetes.io/name=spiffe-oidc-discovery-provider -n zero-trust-workload-identity-manager出力例
NAME READY STATUS RESTARTS AGE spire-spiffe-oidc-discovery-provider-64586d599f-lcc94 2/2 Running 0 7m15s