10.5.3. SPIRE Agent のデプロイ
SpireAgent カスタムリソースを使用して、ノード上の SPIRE Agent DaemonSet を 設定します。これは、エージェントがワークロードを検証し、OpenShift Container Platform クラスター全体でアイデンティティーアテステーションを管理する方法を定義します。
前提条件
-
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: socketPath: "/run/spire/agent-sockets" logLevel: "info" logFormat: "text" nodeAttestor: k8sPSATEnabled: "true" workloadAttestors: k8sEnabled: "true" workloadAttestorsVerification: type: "auto" hostCertBasePath: "/etc/kubernetes" hostCertFileName: "kubelet-ca.crt" disableContainerSelectors: "false" useNewContainerLocator: "true"ここでは、以下のようになります。
metadata.name-
値が
クラスターでなければならないことを指定します。 spec.socketPath-
SPIRE エージェントソケットが作成されるホスト上のディレクトリーを指定します。このディレクトリーは、
hostPathボリュームを介して SPIFFE CSI ドライバーと共有されます。ワークロードがソケットにアクセスするには、SpiffeCSIDriver.spec.agentSocketPathと一致する必要があります。絶対パスを指定する必要があります。最大長は 256 文字です。 spec.logLevel-
SPIRE サーバーのログレベルを指定します。有効なオプションは、
debug、info、warn、errorです。 spec.logFormat-
SPIRE サーバーのログ記録フォーマットを指定します。有効なオプションは、
textとjsonです。 spec.nodeAttestor.k8sPSATEnabled-
Kubernetes の Projected Service Account Token (PSAT) ノードアテステーションが有効になっているかどうかを指定します。有効化されている場合、SPIRE エージェントはノード認証時に K8s PSAT を使用して SPIRE サーバーに自身のアイデンティティーをアテステーションします。有効なオプションは
trueとfalseです。 spec.workloadAttestors.k8sEnabled-
Kubernetes ワークロードアテスターが有効になっているかどうかを指定します。SPIRE エージェントが有効になっている場合、KubernetesPod 情報とサービスアカウントトークンを使用してワークロードのアイデンティティーを検証できます。有効なオプションは
trueとfalseです。 spec.workloadAttestors.workloadAttestorsVerification.type-
kubelet の証明書検証モードを指定します。有効なオプションは
、auto、hostCert、skip です。 spec.workloadAttestors.workloadAttestorsVerification.hostCertBasePath-
kubelet CA 証明書が格納されているディレクトリーを指定します。タイプが
hostCertの場合は必須です。タイプがautoの場合はオプションです (指定しない場合は/etc/kubernetes がデフォルトになります)。 spec.workloadAttestors.workloadAttestorsVerification.hostCertFileName-
kubelet の CA 証明書のファイル名を指定します。
hostCertBasePathと組み合わせると、完全なパスが形成されます。タイプがhostCertの場合は必須です。タイプがautoの場合はオプションです。指定がない場合は、デフォルトでkubelet-ca.crtが使用されます。 spec.workloadAttestors.disableContainerSelectors-
Kubernetes ワークロードアテスターでコンテナーセレクターを無効にするかどうかを指定します。Istio で
holdApplicationUntilProxyStartsを使用する場合は、trueに設定してください。有効なオプションはtrueとfalseです。 spec.workloadAttestors.useNewContainerLocator-
cgroups v2 をサポートする新しいコンテナーロケーターアルゴリズムを有効にすることを指定します。有効なオプションは
trueとfalseです。
以下のコマンドを実行して設定を適用します。
$ oc apply -f SpireAgent.yaml
検証
次のコマンドを実行して、SPIRE Agent のデーモンセットが準備完了状態であり、利用可能であることを確認します。
$ 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 Agent 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