This commit adds support for specifying pod affinity settings in the Kubernetes pod template for the Artemis broker Helm chart. The changes include a new conditional block in the `_pod.tpl` template file that allows users to define affinity rules in the `values.yaml` file under the `affinity` key. The addition was necessary to provide users with more flexibility in scheduling their pods based on node characteristics, which is essential for optimizing resource allocation and achieving desired deployment strategies. No breaking changes were introduced, and the default `affinity` configuration remains empty, ensuring backward compatibility.
237 lines
6.4 KiB
YAML
237 lines
6.4 KiB
YAML
# Deploy broker as Deployment or StatefulSet
|
|
# if clustered is True, then only StatefulSet is supported
|
|
kind: Deployment
|
|
clustered: false # only with StatefulSet
|
|
|
|
# Platform type.
|
|
platform: kubernetes
|
|
|
|
application:
|
|
name: broker1 # set broker1 is this for primary deployment else set to broker2
|
|
amq_broker_version: 55ae4e28b100534d63c34ab86f69230d274c999d46d1493f26fe3e75ba7a0cec # 7.12.3
|
|
amq_broker_image: registry.redhat.io/amq7/amq-broker-rhel8
|
|
pullPolicy: IfNotPresent
|
|
persistent: true
|
|
journal_type: ASYNCIO # more information see broker.xml
|
|
volume_capacity: "1G"
|
|
replicas: 1
|
|
storageclass: default
|
|
# this is used if platform type is set as "kubernetes"
|
|
pullSecretName: redhat-pullsecret
|
|
|
|
service:
|
|
console:
|
|
- name: jolokia
|
|
description: "The Jolokia Management Console Service"
|
|
protocol: TCP
|
|
port: 8161
|
|
acceptors:
|
|
- name: multiplex
|
|
description: "Multiplexed protocol endpoint (CORE+All the others)"
|
|
protocol: TCP
|
|
# when tls is enabled, all acceptors are tls-protected.
|
|
# this behaviour can be overridden by marking the acceptor as non-tls
|
|
#use_tls: false
|
|
port: 61616
|
|
# if needed, override the protocols here.
|
|
# default values are specified in the "parameters" section below
|
|
#amq_protocols: "CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE"
|
|
# also, additional properties for a single acceptor can be set here
|
|
#acceptor_params:
|
|
# - key: supportAdvisory
|
|
# value: false
|
|
# - key: suppressInternalManagementObjects
|
|
# value: false
|
|
|
|
ping_service:
|
|
name: "{{ .Values.application.name }}-ping-svc"
|
|
port: 8888
|
|
jgroups:
|
|
bind_port: 7800
|
|
|
|
nodeport:
|
|
port: 30003
|
|
service: multiplex
|
|
enabled: true
|
|
|
|
passthrough_route:
|
|
hostname: multiplex-amq
|
|
enabled: false
|
|
service: multiplex
|
|
|
|
# only relevant for deployment on kubernetes
|
|
ingress:
|
|
# the ingress rule domain
|
|
domain: kubernetes.local
|
|
# passthrough ingress rule: only relevant for TLS enabled brokers
|
|
passthrough:
|
|
path: "/"
|
|
service: multiplex
|
|
enabled: true
|
|
# jolokia console ingress rule. optional tls certificates can be configured here
|
|
console:
|
|
path: "/"
|
|
service: jolokia
|
|
enabled: true
|
|
tls: false
|
|
tlsSecretName: "amq-console-ingress-certs"
|
|
cert: ingress_console.crt
|
|
key: ingress_console.key
|
|
|
|
tls:
|
|
secret_mount_path: "/etc/amq-secret-volume"
|
|
keystore: keystore.ks
|
|
truststore: keystore.ts
|
|
keystore_password: kspwd
|
|
truststore_password: tspwd
|
|
|
|
parameters:
|
|
tls_enabled: false
|
|
jolokia_passthrough: false
|
|
append_ns: false
|
|
openshift_appdomain: apps.cluster.local
|
|
amq_protocols: "openwire,amq,stomp,mqtt,hornetq,core"
|
|
amq_broker_name: "broker"
|
|
amq_global_max_size: "200 mb"
|
|
amq_require_login: False
|
|
amq_extra_args: ""
|
|
amq_anycast_prefix: "jmx.queue."
|
|
amq_multicast_prefix: "jmx.topic."
|
|
amq_journal_type: "nio"
|
|
ssl_provider: "jdk" # alternative is openssl
|
|
amq_data_dir: "/opt/amq/data"
|
|
amq_force_addresses_cleanup: True # if true remove all queues that are not declared here upon chart update
|
|
|
|
cluster:
|
|
ha_ap_mode: false # Primary-Backup Mode / only with 2 Deployments
|
|
jgroupsCfg: "jgroups-ping.xml"
|
|
refreshTimeout: 10000
|
|
connector:
|
|
ref: multiplex
|
|
port: 61616
|
|
|
|
ha_ap:
|
|
mode: primary
|
|
refreshTimeout: 10000
|
|
connector:
|
|
ref: artemis
|
|
port: 61616
|
|
static:
|
|
ref: broker2 # set broker2 is this for primary deployment else set to broker1
|
|
port: 61616
|
|
|
|
templates:
|
|
service: "{{ .Values.application.name }}-svc"
|
|
service_account: "{{ .Values.application.name }}-sa"
|
|
k8s_role: "{{ .Values.application.name }}-role"
|
|
k8s_rolebinding: "{{ .Values.application.name }}-rolebinding"
|
|
deployment: "{{ .Values.application.name }}-dc"
|
|
route: "{{ .Values.application.name }}-route"
|
|
broker_image: "{{ .Values.application.amq_broker_image }}:{{ .Values.application.amq_broker_version }}"
|
|
override_cm: "{{ .Values.application.name }}-override-cm"
|
|
config_cm: "{{ .Values.application.name }}-config-cm"
|
|
app_secret: "{{ .Values.application.name }}-secret"
|
|
app_certificates: "{{ .Values.application.name }}-certificates"
|
|
pvc_name: "{{ .Values.application.name }}-persistent-volume"
|
|
|
|
admin:
|
|
user: admin
|
|
password: password
|
|
cluster_user: cadmin
|
|
cluster_password: cpassword
|
|
role: "admin"
|
|
|
|
security:
|
|
enabled: true
|
|
# Names of additional secrets to mount into configuration folder.
|
|
secrets: []
|
|
createSecret: true
|
|
jaasUsers:
|
|
# Secret key entry name for Username password properties file. Override when files is provided by existing Secret.
|
|
key: artemis-users.properties
|
|
|
|
# Add more users to this configuration
|
|
# Any users that gets assigned the .admin.role
|
|
# role name becomes an additional administrator
|
|
users: []
|
|
# - name: demouser
|
|
# password: "demo"
|
|
# roles:
|
|
# - user
|
|
# - name: anotheruser
|
|
# password: "demo1"
|
|
# roles:
|
|
# - user
|
|
#
|
|
queues:
|
|
defaults:
|
|
maxDeliveryAttempts: 3
|
|
redeliveryDelayMultiplier: 1
|
|
redeliveryDelay: 5000
|
|
maxRedeliveryDelay: 50000
|
|
maxSizeBytes: "100 mb"
|
|
addressFullPolicy: "PAGE"
|
|
messageCounterHistoryDayLimit: 10
|
|
addresses: []
|
|
# - name: QUEUE_1
|
|
# type: anycast # for queues, choose 'multicast' for topics
|
|
# dlq_address: QUEUE_1_DLQ
|
|
# expiry_address:
|
|
# maxDeliveryAttempts:
|
|
# redeliveryDelayMultiplier:
|
|
# redeliveryDelay:
|
|
# maxRedeliveryDelay:
|
|
# maxSizeBytes:
|
|
# messageCounterHistoryDayLimit:
|
|
# addressFullPolicy:
|
|
# permissions:
|
|
# - grant: consume
|
|
# roles:
|
|
# - admin
|
|
# - user
|
|
# - grant: browse
|
|
# roles:
|
|
# - admin
|
|
# - user
|
|
# - grant: send
|
|
# roles:
|
|
# - admin
|
|
# - user
|
|
# - grant: manage
|
|
# roles:
|
|
# - admin
|
|
# #- grant: createNonDurableQueue # uncomment this when declaring topics (with type: multicast)
|
|
# # roles:
|
|
# # - admin
|
|
# # - user
|
|
|
|
# Add Metrics and Prometheus ServiceMonitor for collecting metrics
|
|
metrics:
|
|
enabled: false
|
|
jvm_memory: true
|
|
jvm_gc: false
|
|
jvm_threads: false
|
|
servicemonitor:
|
|
port: 8161
|
|
interval: 20s
|
|
|
|
# k8s resources
|
|
resources: {}
|
|
# limits:
|
|
# cpu: 1000m
|
|
# memory: 2000Mi
|
|
# requests:
|
|
# cpu: 200m
|
|
# memory: 1000Mi
|
|
#
|
|
|
|
# k8s affinity
|
|
affinity: {}
|
|
# nodeAffinity:
|
|
# requiredDuringSchedulingIgnoredDuringExecution:
|
|
# nodeSelectorTerms:
|
|
# - matchExpressions:
|
|
# - key: disktype
|
|
# operator: In
|
|
# values:
|
|
# - ssd |