Pulsar admin interface

Pulsar 管理界面允许你管理 Pulsar 实例中的所有重要实体,例如租户(Tenant)、主题(Topic)和命名空间(Namespace)。

你可以通过以下方式和管理界面交互:

  • pulsar-admin 命令行工具,它在 Pulsar 安装目录的 bin 文件夹中。

    1. bin/pulsar-admin

    重要

    有关 Pulsar admin 的最新完整信息,包括命令、标志、描述和更多信息,详见 Pulsar admin doc

  • 通过HTTP请求调用由 Pulsar Broker 提供的管理API REST 对于某些RESTful风格接口,他们可能因307 Temporary Redirect被重定向到可以提供服务的所有者的Broker上,因此HTTP调用发起方需要能够处理307 Temporary Redirect返回。 如果你使用 curl 命令行,则应该指定 -L 来允许处理重定向。

    重要

    关于 REST API 最新最完整的信息,包括参数、响应、示例等等,可参阅 REST API 文档。

  • Java客户端接口。

    重要

    有关 Java admin API 的最新完整信息,包括类、方法、描述等,请参阅 Java admin API 文档

The REST API is the admin interface. 实际上,pulsar-admin 命令行工具和Java客户端都使用的是REST接口来完成工作。 如果你想要实现自定义的管理客户端,那么你也应该调用REST接口。

管理设置

如果你在 Pulsar 实例中启用了身份验证,那么三种管理界面(pulsar-admin 命令行工具、REST REST接口和Java管理API)都需要进行一些特殊设置。

pulsar-admin

REST API

Java

如果你启用了身份验证,你需要提供认证配置才能使用 pulsar-admin 工具。 默认情况下,pulsar-admin 的配置文件在 conf/client.conf 文件中。 以下是可用参数:

配置项说明默认值
webServiceUrl群集的 web URL。http://localhost:8080/
brokerServiceUrl集群的Pulsar 协议地址。pulsar://localhost:6650/
authPlugin身份认证插件。
authParams群集的身份认证参数, 逗号分隔的字符串。
useTls是否在群集中强制执行 TLS 验证。false
tlsAllowInsecureConnection从客户端接受不受信任的 TLS 证书。false
tlsTrustCertsFilePath受信任的 TLS 证书文件的路径。

你可以在此document 找到由 Pulsar Broker 对外暴露的REST接口。

要使用 Java 管理 API, 请实例化一个 PulsarAdmin 对象, 指定 Pulsar Broker 的URL和 PulsarAdminBuilder 。 以下是使用 localhost 完成的最小示例:

  1. String url = "http://localhost:8080";// Pass auth-plugin class fully-qualified name if Pulsar-security enabledString authPluginClassName = "com.org.MyAuthPluginClass";// Pass auth-param if auth-plugin class requires itString authParams = "param1=value1";boolean useTls = false;boolean tlsAllowInsecureConnection = false;String tlsTrustCertsFilePath = null;PulsarAdmin admin = PulsarAdmin.builder().authentication(authPluginClassName,authParams).serviceHttpUrl(url).tlsTrustCertsFilePath(tlsTrustCertsFilePath).allowTlsInsecureConnection(tlsAllowInsecureConnection).build();

If you use multiple brokers, you can use multi-host like Pulsar service. For example,

  1. String url = "http://localhost:8080,localhost:8081,localhost:8082";// Pass auth-plugin class fully-qualified name if Pulsar-security enabledString authPluginClassName = "com.org.MyAuthPluginClass";// Pass auth-param if auth-plugin class requires itString authParams = "param1=value1";boolean useTls = false;boolean tlsAllowInsecureConnection = false;String tlsTrustCertsFilePath = null;PulsarAdmin admin = PulsarAdmin.builder().authentication(authPluginClassName,authParams).serviceHttpUrl(url).tlsTrustCertsFilePath(tlsTrustCertsFilePath).allowTlsInsecureConnection(tlsAllowInsecureConnection).build();

Kubernetes 运行 Pulsar 时如何定义资源名称

如果你在 Kubernetes 上运行 Pulsar 的 Function 或者连接器,不论你使用何种管理界面,你都需要遵循 Kubernetes 的命名约定来为 Pulsar 的资源命名。

Kubernetes 需要一个遵循 RFC 1123 定义的DNS子域名的名称。 Pulsar 支持比 Kubernetes 命名约定更多的合法字符。 如果你创建的 Pulsar 资源名称包括了不被 Kubernetes 支持的特殊字符(例如 Pulsar 命名空间名称中包括冒号),Kubernetes 的运行时(Runtime)将会按照 RFC 1123 合规表格将这些 Pulsar 对象名成转换成 Kubernetes 的资源标签。 依次操作后,你可以使用 Kubernetes 的运行时运行 Function 或者连接器。 将 Pulsar 对象名称转换为 Kubernetes 资源标签的规则如下:

  • 截短到 63 个字符

  • 用横线(-)替换下列字符:

    • 非字母和数字的字符

    • 下划线(_)

    • 点(.)

  • 用0替换起始和结尾的非字母和数字的字符

提示

  • 如果您在将 Pulsar 对象名称转换为 Kubernetes 资源标签时遇到错误(例如,如果您的 Pulsar 对象名称太长可能会发生命名冲突)或想要自定义转换规则,请参阅customize Kubernetes 运行时

  • 关于如何配置 Kubernetes 运行时,参见 这里