The Pulsar admin interface
Pulsar管理接口允许你管理一个Pulsar实例的所有重要实体,比如tenants,topics,和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 handle307 Temporary Redirect
. If you are usingcurl
, you should specify-L
to handle redirections.pulsar-admin
CLI工具,它在Pulsar安装目录的bin
文件夹中:$ bin/pulsar-admin
For the complete commands and descriptions of
pulsar-admin
, see here.Java客户端接口。
REST API是管理接口
实际上,
pulsar-admin
CLI工具和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/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 broker 和 ClientConfiguration 指定一个URL。 下面是一个使用 localhost
的最小示例:
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,
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 运行时,参见 这里。
`