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:
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"> {@inject: endpoint|GET|/admin/v2/tenants|operation/getTenants?version=@pulsar:version_number@} </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"> {@inject: endpoint|PUT|/admin/v2/tenants/:tenant|operation/createTenant?version=@pulsar:version_number@} </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"> {@inject: endpoint|GET|/admin/v2/tenants/:tenant|operation/getTenant?version=@pulsar:version_number@} </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"> {@inject: endpoint|DELETE|/admin/v2/tenants/:tenant|operation/deleteTenant?version=@pulsar:version_number@} </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"> {@inject: endpoint|POST|/admin/v2/tenants/:tenant|operation/updateTenant?version=@pulsar:version_number@} </TabItem> <TabItem value="Java"> ```java admin.tenants().updateTenant(tenantName, tenantInfo); ``` </TabItem> </Tabs>