Skip to content

本文为 SPIRE 官方文档 multiple_instances.md 的中文译本,以英文原文为准。 🔗 穿越源码分析:高可用

运行多个 SPIRE 实例

Systemd(以及其他 init 系统)可以借助模板单元(template unit)运行同一服务的多个实例。为了更方便地指向某个特定的 spire-agentspire-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@.servicespire-server@.service)的使用。