id | title | sidebar_label | description |
---|---|---|---|
admin-api-tenants |
Managing Tenants |
Tenants |
Learn how to manage tenants using Pulsar CLI and admin APIs. |
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
:::tip
This page only shows some frequently used operations.
-
For the latest and complete information about
Pulsar admin
, including commands, flags, descriptions, and more, see Pulsar admin docs. -
For the latest and complete information about
REST API
, including parameters, responses, samples, and more, see {@inject: rest:REST:/} API doc. -
For the latest and complete information about
Java admin API
, including classes, methods, descriptions, and more, see Java admin API doc.
:::
Tenants, like namespaces, can be managed using the admin API. There are currently two configurable aspects of tenants:
- Admin roles
- Allowed clusters
You can list all of the tenants associated with an instance.
<Tabs groupId="api-choice"
defaultValue="pulsar-admin"
values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="pulsar-admin">
Use the [`list`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/tenants?id=list) subcommand.
```shell
pulsar-admin tenants list
```
Output:
```
my-tenant-1
my-tenant-2
```
</TabItem>
<TabItem value="REST API">
[](swagger:/admin/v2/TenantsBase_getTenants)
</TabItem>
<TabItem value="Java">
```java
admin.tenants().getTenants();
```
</TabItem>
</Tabs>
You can create a new tenant.
<Tabs groupId="api-choice"
defaultValue="pulsar-admin"
values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="pulsar-admin">
Use the [`create`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/tenants?id=create) subcommand:
```shell
pulsar-admin tenants create my-tenant
```
When creating a tenant, you can optionally assign admin roles using the `-r`/`--admin-roles`
flag, and clusters using the `-c`/`--allowed-clusters` flag. You can specify multiple values
as a comma-separated list. Here are some examples:
```shell
pulsar-admin tenants create my-tenant \
--admin-roles role1,role2,role3 \
--allowed-clusters cluster1
```
```shell
pulsar-admin tenants create my-tenant \
-r role1 \
-c cluster1
```
</TabItem>
<TabItem value="REST API">
[](swagger:/admin/v2/TenantsBase_createTenant)
</TabItem>
<TabItem value="Java">
```java
admin.tenants().createTenant(tenantName, tenantInfo);
```
</TabItem>
</Tabs>
You can fetch the configuration for an existing tenant at any time.
<Tabs groupId="api-choice"
defaultValue="pulsar-admin"
values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="pulsar-admin">
Use the [`get`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/tenants?id=get) subcommand and specify the name of the tenant. Here's an example:
```shell
pulsar-admin tenants get my-tenant
```
```json
{
"adminRoles": [
"admin1",
"admin2"
],
"allowedClusters": [
"cl1",
"cl2"
]
}
```
</TabItem>
<TabItem value="REST API">
[](swagger:/admin/v2/TenantsBase_getTenantAdmin)
</TabItem>
<TabItem value="Java">
```java
admin.tenants().getTenantInfo(tenantName);
```
</TabItem>
</Tabs>
Tenants can be deleted from a Pulsar instance.
<Tabs groupId="api-choice"
defaultValue="pulsar-admin"
values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="pulsar-admin">
Use the [`delete`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/tenants?id=delete) subcommand and specify the name of the tenant.
```shell
pulsar-admin tenants delete my-tenant
```
</TabItem>
<TabItem value="REST API">
[](swagger:/admin/v2/TenantsBase_deleteTenant)
</TabItem>
<TabItem value="Java">
```java
admin.Tenants().deleteTenant(tenantName);
```
</TabItem>
</Tabs>
You can update a tenant's configuration.
<Tabs groupId="api-choice"
defaultValue="pulsar-admin"
values={[{"label":"pulsar-admin","value":"pulsar-admin"},{"label":"REST API","value":"REST API"},{"label":"Java","value":"Java"}]}>
<TabItem value="pulsar-admin">
Use the [`update`](pathname:///reference/#/@pulsar:version_reference@/pulsar-admin/tenants?id=update) subcommand.
```shell
pulsar-admin tenants update my-tenant \
--admin-roles role1,role2 \
--allowed-clusters cluster1,cluster2
```
</TabItem>
<TabItem value="REST API">
[](swagger:/admin/v2/TenantsBase_updateTenant)
</TabItem>
<TabItem value="Java">
```java
admin.tenants().updateTenant(tenantName, tenantInfo);
```
</TabItem>
</Tabs>