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.
Use the list
subcommand.
$ pulsar-admin tenants list my-tenant-1 my-tenant-2
{@inject: endpoint|GET|/admin/v2/tenants|operation/getTenants?version=[[pulsar:version_number]]}
admin.tenants().getTenants();
You can create a new tenant.
Use the create
subcommand:
$ pulsar-admin tenants create my-tenant
When creating a tenant, you can assign admin roles using the -r
/--admin-roles
flag. You can specify multiple roles as a comma-separated list. Here are some examples:
$ pulsar-admin tenants create my-tenant \ --admin-roles role1,role2,role3 $ pulsar-admin tenants create my-tenant \ -r role1
{@inject: endpoint|POST|/admin/v2/tenants/:tenant|operation/createTenant?version=[[pulsar:version_number]]}
admin.tenants().createTenant(tenantName, tenantInfo);
You can fetch the configuration for an existing tenant at any time.
Use the get
subcommand and specify the name of the tenant. Here's an example:
$ pulsar-admin tenants get my-tenant { "adminRoles": [ "admin1", "admin2" ], "allowedClusters": [ "cl1", "cl2" ] }
{@inject: endpoint|GET|/admin/v2/tenants/:cluster|operation/getTenant?version=[[pulsar:version_number]]}
admin.tenants().getTenantInfo(tenantName);
Tenants can be deleted from a Pulsar instance.
Use the delete
subcommand and specify the name of the tenant.
$ pulsar-admin tenants delete my-tenant
{@inject: endpoint|DELETE|/admin/v2/tenants/:cluster|operation/deleteTenant?version=[[pulsar:version_number]]}
admin.Tenants().deleteTenant(tenantName);
You can update a tenant's configuration.
Use the update
subcommand.
$ pulsar-admin tenants update my-tenant
{@inject: endpoint|DELETE|/admin/v2/tenants/:cluster|operation/updateTenant?version=[[pulsar:version_number]]}
admin.tenants().updateTenant(tenantName, tenantInfo);