本文为 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-agentSPIRE 示例仓库中提供了该认证器的完整示例。