Server 命令行
概述
spire-server 提供丰富的命令行接口用于管理和操作 SPIRE Server。
全局选项
spire-server [全局选项] <命令> [命令选项]
选项 |
描述 |
|---|---|
|
Server socket 路径 |
|
输出格式: pretty, json |
服务命令
run
启动 SPIRE Server:
spire-server run -config /path/to/server.conf
选项 |
描述 |
|---|---|
|
配置文件路径 |
|
覆盖日志级别 |
|
展开环境变量 |
validate
验证配置文件:
spire-server validate -config /path/to/server.conf
healthcheck
检查 Server 健康状态:
spire-server healthcheck -socketPath /tmp/spire-server/private/api.sock
条目管理
entry create
创建注册条目:
# 基本用法
spire-server entry create \
-spiffeID spiffe://example.org/myworkload \
-parentID spiffe://example.org/myagent \
-selector unix:uid:1000
# 带 TTL
spire-server entry create \
-spiffeID spiffe://example.org/myworkload \
-parentID spiffe://example.org/myagent \
-selector k8s:ns:default \
-selector k8s:sa:myapp \
-ttl 3600
# 带 DNS 名称
spire-server entry create \
-spiffeID spiffe://example.org/myworkload \
-parentID spiffe://example.org/myagent \
-selector unix:uid:1000 \
-dns myservice.example.org
# 带联邦信任域
spire-server entry create \
-spiffeID spiffe://example.org/myworkload \
-parentID spiffe://example.org/myagent \
-selector unix:uid:1000 \
-federatesWith spiffe://partner.org
选项 |
描述 |
|---|---|
|
工作负载的 SPIFFE ID |
|
父条目的 SPIFFE ID |
|
选择器(可多次使用) |
|
SVID TTL(秒) |
|
DNS 名称(可多次使用) |
|
联邦信任域 |
|
标记为管理员 |
|
标记为下游 |
|
存储 SVID |
entry show
显示注册条目:
# 显示所有条目
spire-server entry show
# 按 SPIFFE ID 过滤
spire-server entry show -spiffeID spiffe://example.org/myworkload
# 按父 ID 过滤
spire-server entry show -parentID spiffe://example.org/myagent
# 按选择器过滤
spire-server entry show -selector unix:uid:1000
# JSON 输出
spire-server entry show -output json
entry update
更新注册条目:
spire-server entry update \
-entryID <entry-id> \
-spiffeID spiffe://example.org/newid \
-selector unix:uid:2000
entry delete
删除注册条目:
spire-server entry delete -entryID <entry-id>
entry count
统计注册条目:
spire-server entry count
Token 管理
token generate
生成 Join Token:
# 基本用法
spire-server token generate -spiffeID spiffe://example.org/myagent
# 自定义 TTL(秒)
spire-server token generate -spiffeID spiffe://example.org/myagent -ttl 600
# JSON 输出
spire-server token generate -spiffeID spiffe://example.org/myagent -output json
Bundle 管理
bundle show
显示信任包:
# 显示本地信任包
spire-server bundle show
# JSON 格式
spire-server bundle show -format spiffe
bundle set
设置联邦信任包:
spire-server bundle set \
-id spiffe://partner.org \
-path /path/to/partner-bundle.json
bundle list
列出所有信任包:
spire-server bundle list
bundle delete
删除联邦信任包:
spire-server bundle delete -id spiffe://partner.org
Agent 管理
agent list
列出所有 Agent:
spire-server agent list
agent show
显示 Agent 详情:
spire-server agent show -spiffeID spiffe://example.org/myagent
agent evict
驱逐 Agent:
spire-server agent evict -spiffeID spiffe://example.org/myagent
agent ban
禁止 Agent:
spire-server agent ban -spiffeID spiffe://example.org/myagent
agent count
统计 Agent 数量:
spire-server agent count
实用命令
x509 mint
手动颁发 X.509-SVID:
spire-server x509 mint \
-spiffeID spiffe://example.org/myworkload \
-ttl 3600 \
-write /path/to/output
jwt mint
手动颁发 JWT-SVID:
spire-server jwt mint \
-spiffeID spiffe://example.org/myworkload \
-audience https://api.example.org \
-ttl 300
输出格式
大多数命令支持 -output 选项:
pretty: 人类可读格式(默认)json: JSON 格式
# JSON 输出
spire-server entry show -output json | jq .
# 结合 jq 过滤
spire-server entry show -output json | jq '.entries[] | select(.spiffeId | contains("web"))'
脚本示例
批量创建条目
#!/bin/bash
SERVICES=("web" "api" "worker")
for service in "${SERVICES[@]}"; do
spire-server entry create \
-spiffeID "spiffe://example.org/${service}" \
-parentID "spiffe://example.org/node" \
-selector "k8s:ns:production" \
-selector "k8s:sa:${service}"
done
导出和导入条目
# 导出
spire-server entry show -output json > entries.json
# 导入(需要自定义脚本)
cat entries.json | jq -c '.entries[]' | while read entry; do
spiffe_id=$(echo "$entry" | jq -r '.spiffeId')
parent_id=$(echo "$entry" | jq -r '.parentId')
selectors=$(echo "$entry" | jq -r '.selectors[] | "-selector \(.type):\(.value)"' | tr '\n' ' ')
eval "spire-server entry create -spiffeID $spiffe_id -parentID $parent_id $selectors"
done
下一步
了解 Server API 以编程方式与 Server 交互。