Skip to main content
Version: v2026.1.0

Kubernetes Helm

ARender provides Helm charts for deploying to Kubernetes. The chart creates deployments for all ARender services, with support for autoscaling, persistent storage, ingress, and Hazelcast clustering.

Prerequisites​

  • Kubernetes 1.24+
  • Helm 3.x
  • A storage class supporting ReadWriteMany (for the shared tmp volume)
  • Access to the Uxopian Helm repository
  • Docker registry authentication: run docker login artifactory.arondor.cloud:5001 and create a Kubernetes image pull secret (see Installation)

Chart structure​

The arender parent chart (v0.4.0) contains two sub-charts:

  • rendition: deploys the Document Service Broker, converter, renderer, and text handler
  • viewer: deploys the UI application

Each sub-chart can also be installed standalone.

Registry authentication​

ARender images are hosted on a private registry. Authenticate before pulling images:

docker login artifactory.arondor.cloud:5001

For Kubernetes, create an image pull secret so that nodes can pull the images:

kubectl create secret docker-registry arender-registry \
--docker-server=artifactory.arondor.cloud:5001 \
--docker-username=<your-username> \
--docker-password=<your-password> \
--namespace arender

Then reference it in your Helm values:

values.yaml
global:
imagePullSecrets:
- name: arender-registry

Installation​

# Add the Helm repository
helm repo add arondor https://artifactory.arondor.cloud/artifactory/ARenderHelmVirtual --username <your_user> --password <your_password>
helm repo update

# Install with default values
helm install arender arender/arender \
--namespace arender \
--create-namespace

# Install with custom values
helm install arender arender/arender \
--namespace arender \
--create-namespace \
-f my-values.yaml

Key configuration values​

Global​

values.yaml
global:
imagePullSecrets: []
arenderVersion: "2026.0.0"

The arenderVersion sets the image tag for all ARender containers.

Rendition services​

values.yaml
rendition:
broker:
replicaCount: 1
autoscale:
enabled: false
maxReplicas: 3
cpuLimit: 80
image:
repository: artifactory.arondor.cloud:5001/arender-document-service-broker
pullPolicy: IfNotPresent
converter:
replicaCount: 1
autoscale:
enabled: false
maxReplicas: 3
cpuLimit: 80
image:
repository: artifactory.arondor.cloud:5001/arender-document-converter

handler:
replicaCount: 1
autoscale:
enabled: false
maxReplicas: 3
cpuLimit: 80
image:
repository: artifactory.arondor.cloud:5001/arender-document-text-handler

renderer:
replicaCount: 1
autoscale:
enabled: false
maxReplicas: 3
cpuLimit: 80
image:
repository: artifactory.arondor.cloud:5001/arender-document-renderer-pdfowl

Resources are not set by default. Set them according to your workload:

values.yaml
rendition:
broker:
resources:
limits:
cpu: 1000m
memory: 2048Mi
requests:
cpu: 500m
memory: 1024Mi
converter:
resources:
limits:
cpu: 4000m
memory: 2048Mi
requests:
cpu: 250m
memory: 1024Mi
handler:
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 250m
memory: 1Gi
renderer:
resources:
limits:
cpu: 1200m
memory: 2048Mi
requests:
cpu: 425m
memory: 1024Mi

Viewer​

values.yaml
viewer:
replicaCount: 1
autoscale:
enabled: false
maxReplicas: 1
cpuLimit: 80
image:
repository: artifactory.arondor.cloud:5001/arender-ui-springboot
rendition:
hosts: [] # List of rendition broker URLs
profiles:
- name: arender
content: ""

Storage​

values.yaml
rendition:
sharedTmpFolder:
create: true
claimName: ""
storage:
className: longhorn # Must support ReadWriteMany
size: 50Gi
accessModes: "ReadWriteMany"

Logging​

values.yaml
rendition:
logging:
default:
consoleOnly: false
logLevels:
business: info # trace, debug, info, warn, error
technical: warn
display:
date: true
podName: true
persistance:
enabled: false
storage:
size: 1Gi
accessModes: "ReadWriteMany"

Ingress​

values.yaml
rendition:
broker:
ingress:
enabled: false
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
className: nginx

viewer:
ingress:
enabled: false
annotations: {}
hosts:
- host: arender.example.com
paths: []
tls: []

Services and ports​

DeploymentService portService type
Viewer80ClusterIP
Document Service Broker8761ClusterIP
Document Converter19999ClusterIP
Document Renderer9091ClusterIP
Document Text Handler8899ClusterIP
Hazelcast5701ClusterIP

Hazelcast clustering​

Hazelcast is configured for all charts. The service exposes port 5701 for inter-node communication.

Health probes​

All services have configurable liveness and readiness probes:

ServiceLiveness delayReadiness delayPeriod
Document Service Broker30s60s15s
Document Converter30s60s15s
Document Renderer30s60s15s
Document Text Handler30s60s15s
Viewer30s60s30s/60s

Extra configuration​

Each service supports injecting additional configuration via config.file.extraConfig:

values.yaml
rendition:
broker:
config:
file:
extraConfig: |
# Additional Spring properties here
authorized.urls=https://example.com/

Upgrade​

helm upgrade arender arender/arender \
--namespace arender \
-f my-values.yaml

Next steps​