本文为 SPIRE 官方文档 multiple_instances.md 的中文译本,以英文原文为准。 🔗 穿越源码分析:高可用
运行多个 SPIRE 实例
Systemd(以及其他 init 系统)可以借助模板单元(template unit)运行同一服务的多个实例。为了更方便地指向某个特定的 spire-agent 或 spire-server 实例,CLI 支持基于环境变量的套接字(socket)模板以及一个 -instance 标志。
环境变量
SPIRE_AGENT_PUBLIC_SOCKET_TEMPLATE—— agent 公有 / 工作负载套接字的模板,用%i表示实例名。SPIRE_SERVER_PRIVATE_SOCKET_TEMPLATE—— server 私有 API 套接字的模板,用%i表示实例名。
默认取值与优先级
当上述某个环境变量已设置、而 -instance 标志被省略时,CLI 会完全忽略这些变量。
示例
bash
export SPIRE_AGENT_PUBLIC_SOCKET_TEMPLATE=/var/run/spire/agent/sockets/%i/public/spiffe.sock
spire-agent -instance a api watch # uses instance "a"
export SPIRE_SERVER_PRIVATE_SOCKET_TEMPLATE=/var/run/spire/server/sockets/%i/private/api.sock
spire-server agent list -instance b # uses instance "b"说明
- 该特性旨在简化 systemd 模板单元(如
spire-agent@.service与spire-server@.service)的使用。