Nomploy Nomad Packs

← All packs

pulsar v0.1.0

Messaging

Apache Pulsar — a cloud-native distributed messaging and streaming platform (pub/sub + queuing) with multi-tenancy, geo-replication and tiered storage. Deployed as a single host-networked Nomad service (standalone: broker + BookKeeper + metadata in one container).

nomad-pack run pulsar --registry nomploy
…or one line (add registry + run)
curl -fsSL https://packs.nomploy.com/install.sh | sh -s -- pulsar

Needs nomad-pack on PATH. The script only adds the nomploy registry and runs this pack.

1 task broker 6650http 8080 image apachepulsar/pulsar:latest tracks :latest image bumped today
Variables 10
values.hcl

Save as values.hcl, edit, then run:

nomad-pack run pulsar -f values.hcl --registry nomploy
# The name of the Nomad job.
job_name = "pulsar"

# The Nomad namespace to deploy into.
namespace = "default"

# The datacenters to deploy to.
datacenters = ["*"]

# The Apache Pulsar container image. Pin a tag in production.
image = "apachepulsar/pulsar:latest"

# Host port for the Pulsar binary protocol (pulsar://).
broker_port = 6650

# Host port for the admin / REST HTTP service.
http_port = 8080

# JVM memory flags for the standalone process. Raise for real workloads.
pulsar_mem = "-Xms1g -Xmx1g -XX:MaxDirectMemorySize=512m"

# Named volume for Pulsar data (BookKeeper + metadata) (/pulsar/data).
data_volume = "pulsar_data"

# Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
constraints = []

# The task resources.
resources = {
    cpu    = 1500
    memory = 2560
  }
NameTypeDefaultDescription
job_name string
"pulsar"
The name of the Nomad job.
namespace string
"default"
The Nomad namespace to deploy into.
datacenters list
["*"]
The datacenters to deploy to.
image string
"apachepulsar/pulsar:latest"
The Apache Pulsar container image. Pin a tag in production.
broker_port number
6650
Host port for the Pulsar binary protocol (pulsar://).
http_port number
8080
Host port for the admin / REST HTTP service.
pulsar_mem string
"-Xms1g -Xmx1g -XX:MaxDirectMemorySize=512m"
JVM memory flags for the standalone process. Raise for real workloads.
data_volume string
"pulsar_data"
Named volume for Pulsar data (BookKeeper + metadata) (/pulsar/data).
constraints list
[]
Placement constraints. On a nomploy cluster: attribute = "$${meta.nomploy_control_plane}", operator = "=", value = "true".
resources object
{
    cpu    = 1500
    memory = 2560
  }
The task resources.
Readme

pulsar

Apache Pulsar is a cloud-native, distributed messaging and streaming platform. It unifies pub/sub and queuing, with multi-tenancy, geo-replication, tiered storage, per-message acknowledgement and Pulsar Functions — a powerful alternative to Kafka or RabbitMQ for event-driven systems.

This pack runs Pulsar in standalone mode (broker + BookKeeper + metadata in one container) as a single host-networked Nomad service — ideal for a single node.

Deploy

nomad-pack run pulsar --registry=nomploy

Clients connect to pulsar://<node-ip>:6650; the admin/REST API is on http://<node-ip>:8080.

Configuration

Variable Default Description
image apachepulsar/pulsar:latest Container image (pin a tag in production).
broker_port 6650 Binary protocol (pulsar://).
http_port 8080 Admin / REST HTTP service.
pulsar_mem -Xms1g -Xmx1g -XX:MaxDirectMemorySize=512m JVM memory flags — raise for load.
data_volume pulsar_data Volume for BookKeeper + metadata (/pulsar/data).
resources 1500 MHz / 2560 MB CPU and memory for the task.

Standalone mode suits a single node. Data persists in data_volume. For a production cluster, deploy ZooKeeper/metadata, BookKeeper and brokers as separate jobs, and keep pulsar_mem within the task's memory limit.