您可以使用 nsc 管理多个运营商(Operators)。运营商 可以被视为 nats-servers 的所有者,分为两类:本地和受管。关键区别在于,受管运营商是您没有其 nkey 的运营商。一个受管运营商的例子是 Synadia 的 NGS。
账户(Accounts)(由其 JWT 表示)由运营商签名。一些运营商可能会使用 JWT 的本地副本(即使用内存解析器),但大多数应使用内置在 'nats-server' 中的 NATS 账户解析器来管理其 JWT。Synadia 使用自制服务器软件来处理其 JWT,该服务器的工作方式与开源的账户服务器类似。
在处理基于服务器的运营商时,有一些特殊的命令:
nsc push 将账户 JWT 推送到服务器nsc pull 从服务器拉取账户 JWT对于受管运营商,这种推送/拉取行为已内置在 nsc 中。每次您编辑账户 JWT 时,nsc 都会将更改推送到受管运营商的服务器,并拉取签名后的响应。如果此操作失败,磁盘上的 JWT 可能与服务器上的值不匹配。您始终可以再次推送或拉取账户,而无需对其进行编辑。注意 - 推送仅在运营商 JWT 配置了账户服务器 URL 时才有效。
受管运营商不仅会使用其密钥对您的账户 JWT 进行签名,还可能编辑 JWT 以包含限制条件,从而约束您对其 NATS 服务器的访问权限。某些运营商还可能添加演示或标准导入。通常情况下,您可以移除这些内容,但运营商有权对所有账户编辑进行最终确认。与任何部署一样,受管运营商不会跟踪用户 JWT。
要开始使用受管运营商,您需要告知 nsc 有关该运营商的信息。有几种方法可以实现这一点。首先,您可以手动使用 add operator 命令告诉 nsc 下载运营商 JWT:
运营商应向您提供其 JWT(或详细信息)。添加受管运营商的第二种方法是使用 init 命令:
您可以使用现有运营商的名称,或者一个众所周知的运营商(目前仅支持 "synadia")。
一旦您添加了一个受管运营商,就可以正常地向其添加账户,需要注意的是,新账户如上所述会被推送和拉取。
要定义一个众所周知的运营商,您需要通过简单的环境变量形式 nsc_<operator name>_operator 告诉 nsc 您希望环境中的人们通过名称使用某个运营商。该环境变量的值应为获取运营商 JWT 的 URL。例如:
这将告诉 nsc 存在一个名为 zoom 的众所周知的运营商,其 JWT 位于 https://account-server-host/jwt/v1/operator。通过此定义,您现在可以使用 -u 标志并指定名称 "zoom",将该运营商添加到 nsc 存储目录中。
运营商 JWT 应设置其账户 JWT 服务器属性,以指向适当的 URL。对于我们的示例,这将是:
您还可以设置一个或多个服务 URL。这些 URL 允许 nsc tool 相关命令(例如 pub 和 sub)正常工作。例如: