blob: 710672f4eac755496080748238075741ae65b78a [file] [log] [blame]
## As weighted quorums are not supported, it is imperative that an odd number of replicas
## be chosen. Moreover, the number of replicas should be either 1, 3, 5, or 7.
##
## ref: https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper#stateful-set
replicaCount: 3 # Desired quantity of ZooKeeper pods. This should always be (1,3,5, or 7)
podDisruptionBudget:
maxUnavailable: 1 # Limits how many Zokeeper pods may be unavailable due to voluntary disruptions.
terminationGracePeriodSeconds: 1800 # Duration in seconds a Zokeeper pod needs to terminate gracefully.
updateStrategy:
type: RollingUpdate
## refs:
## - https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper
## - https://github.com/kubernetes/contrib/blob/master/statefulsets/zookeeper/Makefile#L1
image:
repository: zookeeper # Container image repository for zookeeper container.
tag: 3.7.1 # Container image tag for zookeeper container.
pullPolicy: IfNotPresent # Image pull criteria for zookeeper container.
service:
type: ClusterIP # Exposes zookeeper on a cluster-internal IP.
annotations: {} # Arbitrary non-identifying metadata for zookeeper service.
## AWS example for use with LoadBalancer service type.
# external-dns.alpha.kubernetes.io/hostname: zookeeper.cluster.local
# service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
# service.beta.kubernetes.io/aws-load-balancer-internal: "true"
ports:
client:
port: 2281 # Service port number for client port.
targetPort: client # Service target port for client port.
protocol: TCP # Service port protocol for client port.
## Headless service.
##
headless:
annotations: {}
# publishNotReadyAddresses, default false for backward compatibility
# set to true to register DNS entries for unready pods, which helps in rare
# occasions when cluster is unable to be created, DNS caching is enforced
# or pods are in persistent crash loop
publishNotReadyAddresses: true
ports:
client:
containerPort: 2281 # Port number for zookeeper container client port.
protocol: TCP # Protocol for zookeeper container client port.
election:
containerPort: 3888 # Port number for zookeeper container election port.
protocol: TCP # Protocol for zookeeper container election port.
server:
containerPort: 2888 # Port number for zookeeper container server port.
protocol: TCP # Protocol for zookeeper container server port.
resources: {} # Optionally specify how much CPU and memory (RAM) each zookeeper container needs.
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
priorityClassName: ""
nodeSelector: {} # Node label-values required to run zookeeper pods.
tolerations: [] # Node taint overrides for zookeeper pods.
affinity: {} # Criteria by which pod label-values influence scheduling for zookeeper pods.
# podAntiAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# - topologyKey: "kubernetes.io/hostname"
# labelSelector:
# matchLabels:
# release: zookeeper
podAnnotations: {} # Arbitrary non-identifying metadata for zookeeper pods.
# prometheus.io/scrape: "true"
# prometheus.io/path: "/metrics"
# prometheus.io/port: "9141"
podLabels: {} # Key/value pairs that are attached to zookeeper pods.
# team: "developers"
# service: "zookeeper"
securityContext:
fsGroup: 1000
runAsUser: 1000
## Useful, if you want to use an alternate image.
command:
- /bin/bash
- -xec
- /config-scripts/run
## If you want the quorum to use SSL internally, create a
## kubernetes.io/tls object (cert-manager produces these), and ensure
## that it has a SAN entry for each of the server hostnames (e.g.:
## zookeeper-0.zookeeper-headless.namespace.svc.cluster.local).
## Supply the name of the object here:
serverTlsSecret: "zookeeper-server-tls"
## To use client SSL, create a kubernetes.io/tls object (cert-manager
## produces these), and supply the name here. If this is provided,
## then plain-text client connections are disabled. The same secret
## may be used for both client and server connections.
clientTlsSecret: "zookeeper-server-tls"
## Useful if using any custom authorizer.
## Pass any secrets to the kafka pods. Each secret will be passed as an
## environment variable by default. The secret can also be mounted to a
## specific path (in addition to environment variable) if required. Environment
## variable names are generated as: `<secretName>_<secretKey>` (All upper case)
# secrets:
# - name: myKafkaSecret
# keys:
# - username
# - password
# # mountPath: /opt/kafka/secret
# - name: myZkSecret
# keys:
# - user
# - pass
# mountPath: /opt/zookeeper/secret
persistence:
enabled: true
## zookeeper data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
accessMode: ReadWriteOnce
size: 5Gi
## Exporters query apps for metrics and make those metrics available for
## Prometheus to scrape.
exporters:
jmx:
enabled: false
image:
repository: sscaling/jmx-prometheus-exporter
tag: 0.3.0
pullPolicy: IfNotPresent
config:
lowercaseOutputName: false
## ref: https://github.com/prometheus/jmx_exporter/blob/master/example_configs/zookeeper.yaml
rules:
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(\\w+)"
name: "zookeeper_$2"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+)><>(\\w+)"
name: "zookeeper_$3"
labels:
replicaId: "$2"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+)"
name: "zookeeper_$4"
labels:
replicaId: "$2"
memberType: "$3"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+), name3=(\\w+)><>(\\w+)"
name: "zookeeper_$4_$5"
labels:
replicaId: "$2"
memberType: "$3"
startDelaySeconds: 30
env: {}
resources: {}
path: /metrics
ports:
jmxxp:
containerPort: 9404
protocol: TCP
livenessProbe:
httpGet:
path: /metrics
port: jmxxp
initialDelaySeconds: 30
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
readinessProbe:
httpGet:
path: /metrics
port: jmxxp
initialDelaySeconds: 30
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
serviceMonitor:
interval: 30s
scrapeTimeout: 30s
scheme: http
zookeeper:
## refs:
## - https://github.com/carlpett/zookeeper_exporter
## - https://hub.docker.com/r/josdotso/zookeeper-exporter/
## - https://www.datadoghq.com/blog/monitoring-kafka-performance-metrics/#zookeeper-metrics
enabled: false
image:
repository: josdotso/zookeeper-exporter
tag: v1.1.2
pullPolicy: IfNotPresent
config:
logLevel: info
resetOnScrape: "true"
env: {}
resources: {}
path: /metrics
ports:
zookeeperxp:
containerPort: 9141
protocol: TCP
livenessProbe:
httpGet:
path: /metrics
port: zookeeperxp
initialDelaySeconds: 30
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
readinessProbe:
httpGet:
path: /metrics
port: zookeeperxp
initialDelaySeconds: 30
periodSeconds: 15
timeoutSeconds: 60
failureThreshold: 8
successThreshold: 1
serviceMonitor:
interval: 30s
scrapeTimeout: 30s
scheme: http
## ServiceMonitor configuration in case you are using Prometheus Operator
prometheus:
serviceMonitor:
## If true a ServiceMonitor for each enabled exporter will be installed
enabled: false
## The namespace where the ServiceMonitor(s) will be installed
# namespace: monitoring
## The selector the Prometheus instance is searching for
## [Default Prometheus Operator selector] (https://github.com/helm/charts/blob/f5a751f174263971fafd21eee4e35416d6612a3d/stable/prometheus-operator/templates/prometheus/prometheus.yaml#L74)
selector: {}
## Use an alternate scheduler, e.g. "stork".
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/
##
# schedulerName:
## ref: https://github.com/kubernetes/contrib/tree/master/statefulsets/zookeeper
env:
## Options related to JMX exporter.
## ref: https://github.com/apache/zookeeper/blob/master/bin/zkServer.sh#L36
JMXAUTH: "false"
JMXDISABLE: "false"
JMXPORT: 1099
JMXSSL: "false"
## The port on which the server will accept client requests.
ZOO_PORT: 2181
## The number of Ticks that an ensemble member is allowed to perform leader
## election.
ZOO_INIT_LIMIT: 5
ZOO_TICK_TIME: 2000
## The maximum number of concurrent client connections that
## a server in the ensemble will accept.
ZOO_MAX_CLIENT_CNXNS: 60
## The number of Tick by which a follower may lag behind the ensembles leader.
ZK_SYNC_LIMIT: 10
## The number of wall clock ms that corresponds to a Tick for the ensembles
## internal time.
ZK_TICK_TIME: 2000
ZOO_AUTOPURGE_PURGEINTERVAL: 6
ZOO_AUTOPURGE_SNAPRETAINCOUNT: 3
ZOO_STANDALONE_ENABLED: false
jobs:
## ref: http://zookeeper.apache.org/doc/r3.4.10/zookeeperProgrammers.html#ch_zkSessions
chroots:
enabled: false
activeDeadlineSeconds: 300
backoffLimit: 5
completions: 1
config:
create: []
# - /kafka
# - /ureplicator
env: []
parallelism: 1
resources: {}
restartPolicy: Never