Skip to content

本文为 SPIRE 官方文档 plugin_agent_nodeattestor_k8s_psat 的中文译本,以英文原文为准。 🔗 穿越源码分析:K8S Agent 详解 · k8s_psat

Agent 插件:NodeAttestor "k8s_psat"

必须与服务端 k8s_psat 插件配合使用

k8s_psat 插件用于认证运行在 Kubernetes 内部的节点。Agent 读取并向 Server 提供已签名的投影服务账号令牌(projected service account token,PSAT)。除服务账号数据外,PSAT 还在其声明(claims)中嵌入了 Pod 名称和 UID。这使得 SPIRE 能够为 Agent 创建更细粒度的认证策略。

服务端 k8s_psat 插件会代表 Agent 生成如下形式的 SPIFFE ID:

xml
spiffe://<trust_domain>/spire/agent/k8s_psat/<cluster>/<node_UID>

主配置接受以下取值:

配置项说明默认值
cluster集群名称。它必须与 Server 插件中配置的某个集群相对应。
token_path投影服务账号令牌在磁盘上的路径"/var/run/secrets/tokens/spire-agent"

一个使用默认令牌路径的示例配置:

hcl
    NodeAttestor "k8s_psat" {
        plugin_data {
            cluster = "MyCluster"
        }
    }

其对应的 k8s 卷(volume)定义:

yaml
volumes:
    - name: spire-agent
      projected:
        sources:
        - serviceAccountToken:
            path: spire-agent
            expirationSeconds: 600
            audience: spire-server

以及卷挂载(volume mount):

yaml
volumeMounts:
    - mountPath: /var/run/secrets/tokens
      name: spire-agent

SPIRE 示例仓库中提供了该认证器的完整示例。