Simple Web Interface for Apache Pulsar
There are several ways to use pulsar-express
:
Development
section)docker run -it -p 3000:3000 bbonnin/pulsar-express
docker run -it -p 3000:3000 -e PE_CONNECTION_URL=http://host.docker.internal:8080 bbonnin/pulsar-express
--network=host
to the command line (but, it's only working on Linux...)npm
# Install it globally
$ npm install pulsar-express -g
$ pulsar-express
╭────────────────╮
│ PULSAR EXPRESS │
╰────────────────╯
=> Open http://localhost:3000
$ PORT=8000 pulsar-express
╭────────────────╮
│ PULSAR EXPRESS │
╰────────────────╯
=> Open http://localhost:8000
If you want to configure connections (to be available to all users), you can:
* Create a json file with the connections:
```json
[
{ "name": "test cluster",
"url": "http://test-cluster-host:8080" },
{ "name": "integration cluster",
"url": "http://int-cluster-host:8080",
"token": "<YOUR_TOKEN>" },
{ "name": "prod cluster",
"url": "http://prod-cluster-host:8080",
"fctWorkerUrl": "http://prod-fct-worker-cluster-host:6750",
"token": "<YOUR_TOKEN>" },
]
PE_CONFIG_FILE
export PE_CONFIG_FILE=/path/to/my/config.json
export PE_CONNECTION_URL=http://pulsar-host:8080
export PE_CONNECTION_NAME=my-pulsar
export PE_CONNECTION_TOKEN=
From there, you can connect with your browser to the url above !
![Pulsar express home](docs/home.png)
## Quick start
> If you haven't defined a connection, the first step is to go the `Connections` page and add a new connection. These connections are stored on client side (localstorage of your browser)
![Pulsar express connections](docs/connections.png)
### Overview
In this page, you can see some basic informations about your clusters.
![Pulsar express overview](docs/overview.png)
### Clusters
![Pulsar express clusters](docs/clusters.png)
### Tenants
![Pulsar express clusters](docs/tenants.png)
### Namespaces
![Pulsar express clusters](docs/namespaces.png)
### Topics
![Pulsar express topics](docs/topics.png)
![Pulsar express topics](docs/topic.png)
### Functions
![Pulsar express functions](docs/functions.png)
![Pulsar express function](docs/function.png)
## Security
To enable security in Pulsar, please read [https://pulsar.apache.org/docs/en/security-overview/](the docs).
For example, with token authentication with a secret key (more details, [https://pulsar.apache.org/docs/en/security-token-admin/](here)),
* Create a secret key:
```bash
pulsar tokens create-secret-key --output my-secret.key --base64
Create a token for pulsar-express
pulsar tokens create --secret-key file:///path/to/my-secret.key \
--subject pulsar-express
Configure your broker (conf/broker.conf
or conf/standalone.conf
)
authenticationEnabled=true
authorizationEnabled=true
authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderToken
superUserRoles=pulsar-express
tokenSecretKey=file:///path/to/my-secret.key
Configure your workers (conf/functions_worker.yml
)
clientAuthenticationPlugin: "org.apache.pulsar.client.impl.auth.AuthenticationToken"
clientAuthenticationParameters: "token:<YOUR_TOKEN>"
authenticationEnabled: true authorizationEnabled: true authenticationProviders:
curl localhost:8080/admin/v2/clusters -H "Authorization: Bearer <YOUR_TOKEN>"
["standalone"]
## Development
This app has been developed with [Nuxt.js](https://nuxtjs.org).
``` bash
# install dependencies
$ npm install
# serve with hot reload at localhost:3000
$ npm run dev
# build for production and launch server
$ npm run build
$ npm start
For detailed explanation on how things work, checkout Nuxt.js docs.
For Docker:
npm run docker-build
npm run docker-run
docker tag pulsar-express USER/pulsar-express:VERSION
docker push USER/pulsar-express:VERSION
Change the base URL (work in progress, it's a quick fix):
export PE_BASE_URL=pulsar-express
npm run docker-build
(or docker build --build-arg BASE_URL=${PE_BASE_URL} -t pulsar-express .
)docker run -it -p 3000:3000 -e PE_CONNECTION_URL=http://host.docker.internal:8080 -e PE_BASE_URL=${PE_BASE_URL} pulsar-express
When running the image, do not forget to set PE_BASE_URL !
A lot of things of course :), but the main step is to change the architecture and add a backend instead of making the queries from the browser. This backend could provide api, cache, better management of configuration, ...
Icons: https://icones8.fr/
Pulsar Express is a single only tool which is using daily to manage and maintain a Pulsar cluster of over ten nodes in production environment at https://doopage.com.