2

在尝试使用 生成的 Docker Compose 文件设置 Prefect 0.14.15 以跨多个代理执行流时prefect server config,我惊讶地发现 Prefect 的服务器需要租户才能连接代理。我调查发现 Prefect 的文档提供了有关其create-tenantlist-tenants CLI 操作的使用语法的信息。但是,我已经通过链接页面广泛查看了 - 以及 Prefect 的其余文档和随附的教程 - 任何提及租户的内容,并且只找到以下简短提及:

经过身份验证后,基于用户的 API 密钥可用于为用户所属的任何租户生成短期 JWT 身份验证令牌。这些 API 密钥继承用户在该租户中拥有的任何权限,从而允许完整的 API 访问。

什么是 Prefect 的租户?它似乎并不特定于 Prefect 的混合执行模型。那么,在 Prefect Flow 执行之前和执行期间,它如何适应服务器、代理和客户端之间的交互?说用户“属于”或“属于”租户是什么意思?通过要求它向服务器注册代理来完成什么?

4

1 回答 1

5

租户在 Prefect Server 中的意义远低于 Prefect Cloud,但由于 Cloud 是基于开源服务器代码构建的,因此这个想法仍然存在。

租户是所有其他对象存在的顶级对象。租户中的用户无法访问另一个租户中的任何内容。在 Cloud 中,严格执行此权限以限制用户的访问范围。在 Server 中,您只需要一个租户即可开始使用系统,因为大多数对象都将链接回一个租户。prefect server start通常,如果您使用 Prefect CLI或您可以在 Prefect Server Helm 图表中切换自动创建,则会在启动期间为您创建一个默认租户。

当代理注册到服务器时,我们将有关该代理的详细信息存储在数据库的“代理”表中。在 Server 中,您的代理与默认租户相关联。在 Cloud 中,您的代理与用于启动代理的 API 密钥所属的租户相关联。

当您运行流程时,客户端必须与服务器通信以报告流程的状态。与代理一样,此流程运行与租户相关联。在 Cloud 中,它继承了代理的 API Key。在 Server 中,我们将继续使用默认租户。

tldr; 租户是用户所属的 Prefect Cloud Teams 的基础,用于授予权限。在 Prefect Server 中,您只需要拥有一个即可;创建它并忘记它(或使用我们为您创建它的标准工具)。

于 2021-05-28T14:49:12.167 回答