Post

ActiveMQ

ActiveMQ

ActiveMQ

Purpose

Apache ActiveMQ (Classic) — a message broker supporting JMS/OpenWire, AMQP, STOMP, and MQTT — running as a single-replica Deployment in the default namespace of the k3s cluster.

Deployment

ItemValue
Imageapache/activemq-classic:latest
Namespacedefault
Replicas1 (strategy: Recreate)
Service typeLoadBalancer (MetalLB, 192.168.1.34)
Storage2 PVCs, local-path storage class
IngressTraefik IngressRoute, TLS via shared local-example-com-tls cert

The Deployment has reloader.stakater.com/auto: "true" set so config/secret changes trigger a pod restart automatically (see the Reloader post).

Ports

NameContainer PortProtocolPurpose
web8161TCPAdmin web console
openwire61616TCPJMS / OpenWire
amqp5672TCPAMQP
stomp61613TCPSTOMP
mqtt1883 → 1884 (service)TCPMQTT

The Service remaps MQTT to port 1884 externally (port: 1884targetPort: 1883) since port 1883 is already used by the separate Mosquitto MQTT broker on this cluster.

Storage

An initContainer (seed-conf) copies the image’s default /opt/apache-activemq/conf into the activemq-conf PVC on first boot only, if the volume is empty — this lets the broker config persist across pod restarts/reschedules while still shipping with sane defaults.

PVCSizeMount
activemq-data5Gi/opt/apache-activemq/data
activemq-conf256Mi/opt/apache-activemq/conf

Ingress

Routed via Traefik IngressRoute at:

  • activemq.prod-k3s.iot-proxmox.net (with default-headers middleware)
  • www.activemq.prod-k3s.iot-proxmox.net

Both route to the web (admin console) port, 8161.

Resources

 RequestsLimits
CPU100m1
Memory384Mi768Mi
This post is licensed under CC BY 4.0 by the author.