The Pulsar admin interface

Pulsar管理接口允许你管理一个Pulsar实例的所有重要实体,比如tenantstopics,和namespaces

目前你可以通过以下方式使用管理接口:

  • 使用HTTP调用Pulsar broker提供的管理 REST API。 For some restful apis, they might be redirected to topic owner brokers for serving with 307 Temporary Redirect, hence the HTTP callers should handle 307 Temporary Redirect. If you are using curl, you should specify -L to handle redirections.

  • pulsar-admin CLI工具,它在Pulsar安装目录的bin文件夹中:

    1. $ bin/pulsar-admin

    For the complete commands and descriptions of pulsar-admin, see here.

  • Java客户端接口。

REST API是管理接口

实际上,pulsar-adminCLI工具和Java客户端都是用 REST API。 如果你想实现自己的管理接口客户端,你也应该使用REST API。 文档可以在下方找到:

在本文档中,将展示三个可用接口中的每一个的示例。

管理设置

Pulsar的三种接口REST [`pulsar-admin<0>CLI工具,java管理API,REST API 中的每一种—-需要一些特殊的设置,如果你在Pulsar 实例中开启了身份认证

pulsar-admin

REST API

Java

如果启用了 身份验证, 则需要提供一个授权配置以使用 `pulsar-admin 工具。 默认情况下,pulsar-admin的配置文件在conf/client.conf](/docs/zh-CN/2.7.1/reference-configuration#client)文件中。 以下是可用参数:``

配置项说明默认值
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 API的文档。

`

``

要使用 Java 管理 API,需实例化一个 PulsarAdmin 对象,为 Pulsar brokerClientConfiguration 指定一个URL。 下面是一个使用 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 have multiple brokers to use, 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替换起始和结尾的非字母和数字的字符

Tip

  • 如果你在将 Pulsar 对象名称转换为 Kubernetes 资源标签或想要自定义翻译规则时出现错误,请查看 自定义 Kubernetes 运行时

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

`