From 70ec7d289fbfa70e51fca7edc27cb0c6616df6cc Mon Sep 17 00:00:00 2001 From: Kishan Sairam Adapa Date: Wed, 24 Apr 2024 12:12:19 +0530 Subject: [PATCH] use pinot image for service manager in helm chart (#146) * use pinot image for service manager * nit * fix * remove storage class * update * empty commit * Update helm/values.yaml Co-authored-by: Ravi Singal <62086374+ravisingal@users.noreply.github.com> --------- Co-authored-by: Ravi Singal <62086374+ravisingal@users.noreply.github.com> --- helm/templates/_helpers.tpl | 20 +- helm/templates/broker/configmap.yaml | 3 +- helm/templates/controller/configmap.yaml | 3 +- helm/templates/minion/configmap.yaml | 3 +- helm/templates/server/configmap.yaml | 3 +- helm/templates/servicemanager/configmap.yaml | 39 --- .../servicemanager/jmx-configmap.yaml | 327 ++++++++++++++++++ .../servicemanager/log-configmap.yaml | 37 ++ .../servicemanager/service-headless.yaml | 6 + helm/templates/servicemanager/service.yaml | 12 +- .../servicemanager/serviceaccount.yaml | 4 + helm/templates/servicemanager/statefulset.yml | 98 +++++- helm/values.yaml | 30 +- 13 files changed, 515 insertions(+), 70 deletions(-) delete mode 100644 helm/templates/servicemanager/configmap.yaml create mode 100644 helm/templates/servicemanager/jmx-configmap.yaml create mode 100644 helm/templates/servicemanager/log-configmap.yaml diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index d7f5e78..7a3cb04 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -204,16 +204,16 @@ Create the name of the service account to use {{/* Docker image to use for service manager */}} -{{- define "pinot.servicemanager.image" -}} - {{- if and .Values.servicemanager.image.repository .Values.servicemanager.image.tag -}} - {{- printf "%s:%s" .Values.servicemanager.image.repository .Values.servicemanager.image.tag }} - {{- if .Values.servicemanager.image.sha256 -}} - {{- printf "@sha256:%s" .Values.servicemanager.image.sha256 }} - {{- end -}} - {{- else -}} - {{- printf "%s:%s" .Values.image.repository .Chart.Version }} - {{- end -}} -{{- end -}} +{{/*{{- define "pinot.servicemanager.image" -}}*/}} +{{/* {{- if and .Values.servicemanager.image.repository .Values.servicemanager.image.tag -}}*/}} +{{/* {{- printf "%s:%s" .Values.servicemanager.image.repository .Values.servicemanager.image.tag }}*/}} +{{/* {{- if .Values.servicemanager.image.sha256 -}}*/}} +{{/* {{- printf "@sha256:%s" .Values.servicemanager.image.sha256 }}*/}} +{{/* {{- end -}}*/}} +{{/* {{- else -}}*/}} +{{/* {{- printf "%s:%s" .Values.image.repository .Chart.Version }}*/}} +{{/* {{- end -}}*/}} +{{/*{{- end -}}*/}} {{/* Docker image to use for controller, broker, minion and server diff --git a/helm/templates/broker/configmap.yaml b/helm/templates/broker/configmap.yaml index 7a746b0..9c4fa2d 100644 --- a/helm/templates/broker/configmap.yaml +++ b/helm/templates/broker/configmap.yaml @@ -1,4 +1,4 @@ -{{- if .Values.broker.enabled }} +{{- if or .Values.broker.enabled .Values.servicemanager.enabled }} apiVersion: v1 kind: ConfigMap metadata: @@ -11,6 +11,7 @@ metadata: heritage: {{ .Release.Service }} data: pinot-broker.conf: |- + pinot.service.role = BROKER pinot.broker.client.queryPort={{ .Values.broker.port }} pinot.broker.routing.table.builder.class={{ .Values.broker.routingTable.builderClass }} pinot.preferHostnameInDefaultInstanceId=true diff --git a/helm/templates/controller/configmap.yaml b/helm/templates/controller/configmap.yaml index 68b7948..1455c7e 100644 --- a/helm/templates/controller/configmap.yaml +++ b/helm/templates/controller/configmap.yaml @@ -1,4 +1,4 @@ -{{- if .Values.controller.enabled }} +{{- if or .Values.controller.enabled .Values.servicemanager.enabled }} apiVersion: v1 kind: ConfigMap metadata: @@ -11,6 +11,7 @@ metadata: heritage: {{ .Release.Service }} data: pinot-controller.conf: |- + pinot.service.role = CONTROLLER controller.helix.cluster.name={{ .Values.cluster.name }} controller.port={{ .Values.controller.port }} {{- if .Values.controller.vip.enabled }} diff --git a/helm/templates/minion/configmap.yaml b/helm/templates/minion/configmap.yaml index 40e5687..715d60e 100644 --- a/helm/templates/minion/configmap.yaml +++ b/helm/templates/minion/configmap.yaml @@ -1,4 +1,4 @@ -{{- if .Values.minion.enabled }} +{{- if or .Values.minion.enabled .Values.servicemanager.enabled }} apiVersion: v1 kind: ConfigMap metadata: @@ -11,6 +11,7 @@ metadata: heritage: {{ .Release.Service }} data: pinot-minion.conf: |- + pinot.service.role = MINION pinot.minion.port={{ .Values.minion.port }} pinot.set.instance.id.to.hostname=true {{- if .Values.minion.persistence.enabled }} diff --git a/helm/templates/server/configmap.yaml b/helm/templates/server/configmap.yaml index 42f2a78..fd5f456 100644 --- a/helm/templates/server/configmap.yaml +++ b/helm/templates/server/configmap.yaml @@ -1,4 +1,4 @@ -{{- if .Values.server.enabled }} +{{- if or .Values.server.enabled .Values.servicemanager.enabled }} {{- range $name,$tierConfig := omit .Values.server.tiers "default" }} {{- $tier := mergeOverwrite (deepCopy (omit $.Values.server "tiers")) (deepCopy $.Values.server.tiers.default) (deepCopy $tierConfig) }} --- @@ -22,6 +22,7 @@ metadata: heritage: {{ $.Release.Service }} data: pinot-server.conf: |- + pinot.service.role = SERVER pinot.server.netty.port={{ $tier.ports.netty }} pinot.server.adminapi.port={{ $tier.ports.admin }} pinot.server.grpc.port={{ $tier.ports.grpc }} diff --git a/helm/templates/servicemanager/configmap.yaml b/helm/templates/servicemanager/configmap.yaml deleted file mode 100644 index e46f12e..0000000 --- a/helm/templates/servicemanager/configmap.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if .Values.servicemanager.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "pinot.servicemanager.fullname" . }}-config - labels: - app: {{ include "pinot.name" . }} - chart: {{ include "pinot.chart" . }} - component: {{ .Values.servicemanager.name }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: - pinot-controller.conf: |- - controller.helix.cluster.name={{ .Values.cluster.name }} - controller.mode=DUAL - controller.port={{ .Values.controller.port }} - controller.vip.host={{ include "pinot.controller.fullname" . }} - controller.vip.port={{ .Values.controller.service.port }} - controller.data.dir={{ .Values.controller.data.dir }} - controller.zk.str={{ include "zookeeper.path" . }} - pinot.set.instance.id.to.hostname=true - pinot.service.role = CONTROLLER - pinot-broker.conf: |- - pinot.broker.client.queryPort={{ .Values.broker.port }} - pinot.broker.routing.table.builder.class={{ .Values.broker.routingTable.builderClass }} - pinot.preferHostnameInDefaultInstanceId=true - pinot.set.instance.id.to.hostname=true - pinot.broker.timeoutMs={{ .Values.broker.timeoutMs }} - pinot.service.role = BROKER - pinot-server.conf: |- - pinot.server.netty.port={{ .Values.server.ports.netty }} - pinot.server.adminapi.port={{ .Values.server.ports.admin }} - pinot.server.instance.dataDir={{ .Values.server.dataDir }} - pinot.server.instance.segmentTarDir={{ .Values.server.segmentTarDir }} - pinot.set.instance.id.to.hostname=true - pinot.server.instance.realtime.alloc.offheap=true - pinot.server.query.executor.timeout=60000 - pinot.service.role = SERVER -{{- end }} diff --git a/helm/templates/servicemanager/jmx-configmap.yaml b/helm/templates/servicemanager/jmx-configmap.yaml new file mode 100644 index 0000000..25ae7b5 --- /dev/null +++ b/helm/templates/servicemanager/jmx-configmap.yaml @@ -0,0 +1,327 @@ +{{- if and .Values.servicemanager.enabled .Values.servicemanager.jmx.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "pinot.servicemanager.fullname" . }}-jmx-config + labels: + app: {{ include "pinot.name" . }} + chart: {{ include "pinot.chart" . }} + component: {{ .Values.servicemanager.name }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + prometheus-pinot-servicemanager.yml: |- + jmxUrl: service:jmx:rmi:///jndi/rmi://localhost:{{ .Values.servicemanager.jmx.port }}/jmxrmi + lowercaseOutputName: true + lowercaseOutputLabelNames: true + ssl: false + rules: + # broker metrics + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_authorization_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_documentsScanned_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_entriesScannedInFilter_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_entriesScannedPostFilter_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_freshnessLagMs_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_queries_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_queryExecution_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_queryRouting_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_reduce_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_requestCompilation_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_scatterGather_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_totalServerResponseSize_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_groupBySize_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_noServingHostForSegment_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_healthcheck_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_helix_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_helix_zookeeper_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_nettyConnection_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_clusterChangeCheck_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_proactiveClusterChangeCheck_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_exceptions_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_broker_routingTableUpdateTime_$1" + # controller metrics + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_helix_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_helix_ZookeeperReconnects_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_idealstateZnodeSize_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_numberOfReplicas_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_percentOfReplicas_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_percentSegmentsAvailable_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_segmentCount_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_segmentsInErrorState_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_numberSegmentUploadTimeoutExceeded_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_numberTimesScheduleTasksCalled_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_periodicTaskNumTablesProcessed_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_pinotControllerLeader_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_partitionLeader_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_realtimeTableCount_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_controller_validateion_$2_$3" + # server metrics + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_documentCount_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_segmentCount_$3" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_$3_$4" + labels: + table: "$1" + tableType: "$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtimeRowsConsumed_$5" + labels: + table: "$1" + tableType: "$2" + topic: "$3" + partition: "$4" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_helix_connected_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_helix_zookeeperReconnects_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_highestKafkaOffsetConsumed_$5" + labels: + table: "$1" + tableType: "$2" + topic: "$3" + partition: "$4" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_highestStreamOffsetConsumed_$5" + labels: + table: "$1" + tableType: "$2" + topic: "$3" + partition: "$4" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_lastRealtimeSegment$1Seconds_$6" + labels: + table: "$2" + tableType: "$3" + topic: "$4" + partition: "$5" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_llcControllerResponse_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_llcPartitionConsuming_$5" + labels: + table: "$1" + tableType: "$2" + topic: "$3" + partition: "$4" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_llcSimultaneousSegmentBuilds_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_memory_$1_$2" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_queries_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtime_consumptionExceptions_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtime_offheapMemoryUsed_$2" + labels: + table: "$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtime_offsetCommits_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtime_rowsConsumed_$1" + - pattern: "\"org.apache.pinot.common.metrics\"<>(\\w+)" + name: "pinot_server_realtime_exceptions_$1_$2" + - pattern: "\"org.apache.pinot.transport.netty.NettyTCPServer_(\\w+)_\"<>(\\w+)" + name: "pinot_server_netty_tcp_$2_$3" + labels: + id: "$1" + # common metrics + - pattern: "java.lang<>(\\w+)" + name: "java_lang_codeheap_non_nmethods_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_codeheap_non_nmethods_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_codeheap_non_profiled_nmethods_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_codeheap_non_profiled_nmethods_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_codeheap_profiled_nmethods_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_codeheap_profiled_nmethods_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_compressed_class_space_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_compressed_class_space_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_g1_eden_space_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_g1_eden_space_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_g1_old_gen_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_g1_old_gen_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_g1_survivor_space_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_g1_survivor_space_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_metaspace_$1" + labels: + type: "MemoryPool" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_metaspace_$1_$2" + labels: + type: "MemoryPool" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_g1_old_generation_$1" + labels: + type: "GarbageCollector" + - pattern: "java.lang(\\w+)" + name: "java_lang_g1_young_generation_lastgcinfo_memoryusageaftergc_$1" + labels: + type: "GarbageCollector" + key: "CodeHeap 'profiled nmethods'" + - pattern: "java.lang(\\w+)" + name: "java_lang_g1_young_generation_lastgcinfo_memoryusagebeforegc_$1" + labels: + type: "GarbageCollector" + key: "CodeHeap 'profiled nmethods'" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_g1_young_generation_$1" + labels: + type: "GarbageCollector" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_g1_young_generation_$1_$2" + labels: + type: "GarbageCollector" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_classloading_$1" + - pattern: "java.lang<(\\w+)>(\\w+)" + name: "java_lang_memory_$1_$2" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_operatingsystem_$1" + - pattern: "java.lang<>(\\w+)" + name: "java_lang_threading_$1" + - pattern: "java.nio<>(\\w+)" + name: "java_nio_direct_$1" + labels: + type: "BufferPool" + - pattern: "java.nio<>(\\w+)" + name: "java_nio_mapped_$1" + labels: + type: "BufferPool" +{{- end }} diff --git a/helm/templates/servicemanager/log-configmap.yaml b/helm/templates/servicemanager/log-configmap.yaml new file mode 100644 index 0000000..fd63325 --- /dev/null +++ b/helm/templates/servicemanager/log-configmap.yaml @@ -0,0 +1,37 @@ +{{- if .Values.servicemanager.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "pinot.servicemanager.fullname" . }}-log-config + labels: + app: {{ include "pinot.name" . }} + chart: {{ include "pinot.chart" . }} + component: {{ .Values.servicemanager.name }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + pinot-servicemanager-log4j2.xml: |- + + + + + %d{yyyy/MM/dd HH:mm:ss.SSS} %p [%c{1.}] [%t] %m%n + + + + + + + + + + + + + + + + + + +{{- end }} diff --git a/helm/templates/servicemanager/service-headless.yaml b/helm/templates/servicemanager/service-headless.yaml index 49f22e4..def415f 100644 --- a/helm/templates/servicemanager/service-headless.yaml +++ b/helm/templates/servicemanager/service-headless.yaml @@ -12,12 +12,18 @@ metadata: spec: clusterIP: None ports: + - name: servicemanager + port: {{ .Values.servicemanager.service.port }} - name: controller port: {{ .Values.controller.service.port }} - name: server-netty port: {{ .Values.server.ports.netty }} - name: broker port: {{ .Values.broker.service.port }} + {{- if .Values.servicemanager.minion.enabled }} + - name: minion + port: {{ .Values.minion.service.port }} + {{- end }} selector: app: {{ include "pinot.name" . }} release: {{ .Release.Name }} diff --git a/helm/templates/servicemanager/service.yaml b/helm/templates/servicemanager/service.yaml index cda7b59..04442f4 100644 --- a/helm/templates/servicemanager/service.yaml +++ b/helm/templates/servicemanager/service.yaml @@ -12,14 +12,24 @@ metadata: spec: type: ClusterIP ports: + - name: servicemanager + port: {{ .Values.servicemanager.service.port }} - name: controller port: {{ .Values.controller.service.port }} - name: server-netty port: {{ .Values.server.ports.netty }} - name: broker port: {{ .Values.broker.service.port }} + {{- if .Values.servicemanager.minion.enabled }} + - name: minion + port: {{ .Values.minion.service.port }} + {{- end }} + {{- if .Values.servicemanager.prometheus.jmx.enabled }} + - name: http-metrics + port: {{ .Values.servicemanager.prometheus.jmx.port }} + {{- end }} selector: app: {{ include "pinot.name" . }} release: {{ .Release.Name }} component: {{ .Values.servicemanager.name }} -{{- end }} +{{- end }} \ No newline at end of file diff --git a/helm/templates/servicemanager/serviceaccount.yaml b/helm/templates/servicemanager/serviceaccount.yaml index a3dfa7a..586023e 100644 --- a/helm/templates/servicemanager/serviceaccount.yaml +++ b/helm/templates/servicemanager/serviceaccount.yaml @@ -10,4 +10,8 @@ metadata: component: {{ .Values.servicemanager.name }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} + {{- with .Values.server.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} {{- end -}} diff --git a/helm/templates/servicemanager/statefulset.yml b/helm/templates/servicemanager/statefulset.yml index 12fed57..38555bd 100644 --- a/helm/templates/servicemanager/statefulset.yml +++ b/helm/templates/servicemanager/statefulset.yml @@ -56,66 +56,138 @@ spec: {{- end }} containers: - name: pinot-servicemanager - image: {{ include "pinot.servicemanager.image" .}} + image: {{ include "pinot.image" $ }} imagePullPolicy: {{ .Values.image.pullPolicy }} args: [ "StartServiceManager", "-clusterName", {{ .Values.cluster.name | quote }}, "-zkAddress", {{ include "zookeeper.path" . | quote }}, "-port", {{ .Values.servicemanager.port | quote }}, + "-bootstrapServices", + "CONTROLLER", + "BROKER", + "SERVER", + {{- if .Values.servicemanager.minion.enabled }} + "MINION" + {{- end }} "-bootstrapConfigPaths", - "/var/pinot/servicemanager/config/pinot-controller.conf", - "/var/pinot/servicemanager/config/pinot-broker.conf", - "/var/pinot/servicemanager/config/pinot-server.conf" + "/var/config/pinot/pinot-controller.conf", + "/var/config/pinot/pinot-broker.conf", + {{- if .Values.servicemanager.minion.enabled }} + "/var/config/pinot/pinot-minion.conf", + {{- end }} + "/var/config/pinot/pinot-server.conf" ] env: - name: JAVA_OPTS - value: "{{ .Values.servicemanager.jvmOpts }} -Dlog4j2.configurationFile={{ .Values.servicemanager.log4j2ConfFile }} -Dplugins.dir={{ .Values.servicemanager.pluginsDir }}" + value: "{{ .Values.servicemanager.jvmOpts }} -Djute.maxbuffer=4194304 -Dlog4j2.configurationFile={{ .Values.servicemanager.log4j2ConfFile }} -Dplugins.dir={{ .Values.servicemanager.pluginsDir }} {{ if .Values.servicemanager.jmx.enabled }}{{ .Values.servicemanager.jmx.opts }}{{ end }}" ports: + - name: servicemanager + containerPort: {{ .Values.servicemanager.port }} + protocol: TCP - name: controller containerPort: {{ .Values.controller.port }} protocol: TCP - name: broker containerPort: {{ .Values.broker.port }} protocol: TCP + {{- if .Values.servicemanager.minion.enabled }} + - name: minion + containerPort: {{ .Values.minion.port }} + protocol: TCP + {{- end }} - name: server-netty containerPort: {{ .Values.server.ports.netty }} protocol: TCP - name: server-admin containerPort: {{ .Values.server.ports.admin }} protocol: TCP + {{- if .Values.controller.jmx.enabled }} + - name: jmx + containerPort: {{ .Values.controller.jmx.port }} + protocol: TCP + {{- end }} volumeMounts: - - name: config - mountPath: /var/pinot/servicemanager/config + - name: combined-config + mountPath: /var/config/pinot/ # required to break convention for servicemanager - name: pinot-servicemanager-storage mountPath: "{{ .Values.servicemanager.persistence.mountPath }}" + - name: log-config + mountPath: /opt/pinot/conf/pinot-servicemanager-log4j2.xml + subPath: "pinot-servicemanager-log4j2.xml" + {{- if eq .Values.cluster.storage.scheme "gs" }} + - name: gcs-iam-secret + mountPath: "/account" + {{- end }} + {{- with .Values.extraVolumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} livenessProbe: httpGet: - path: /pinot-controller/admin - port: {{ .Values.controller.port }} + path: /health + port: {{ .Values.servicemanager.port }} initialDelaySeconds: {{ .Values.servicemanager.livenessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.servicemanager.livenessProbe.periodSeconds }} timeoutSeconds: {{ .Values.servicemanager.livenessProbe.timeoutSeconds }} failureThreshold: {{ .Values.servicemanager.livenessProbe.failureThreshold }} readinessProbe: httpGet: - path: /pinot-controller/admin - port: {{ .Values.controller.port }} + path: /health + port: {{ .Values.servicemanager.port }} initialDelaySeconds: {{ .Values.servicemanager.readinessProbe.initialDelaySeconds }} periodSeconds: {{ .Values.servicemanager.readinessProbe.periodSeconds }} timeoutSeconds: {{ .Values.servicemanager.readinessProbe.timeoutSeconds }} failureThreshold: {{ .Values.servicemanager.readinessProbe.failureThreshold }} resources: {{ toYaml .Values.servicemanager.resources | nindent 12 }} + {{- if .Values.servicemanager.prometheus.jmx.enabled }} + - name: prometheus-jmx-exporter + image: "{{ .Values.servicemanager.prometheus.jmx.image.repository }}:{{ .Values.servicemanager.prometheus.jmx.image.tag }}" + imagePullPolicy: "{{ .Values.servicemanager.prometheus.jmx.image.pullPolicy }}" + command: + - java + - -jar + - jmx_prometheus_httpserver.jar + - {{ .Values.servicemanager.prometheus.jmx.port | quote }} + - /etc/jmx-config/prometheus-pinot-controller.yml + ports: + - name: http-metrics + containerPort: {{ .Values.servicemanager.prometheus.jmx.port }} + resources: + {{- toYaml .Values.servicemanager.prometheus.jmx.resources | nindent 12 }} + volumeMounts: + - name: jmx-config + mountPath: /etc/jmx-config + {{- end }} restartPolicy: Always serviceAccountName: {{ include "pinot.servicemanager.serviceAccountName" . }} volumes: - - name: config + - name: combined-config + projected: + sources: + - configMap: + name: {{ include "pinot.broker.fullname" . }}-config + - configMap: + name: {{ include "pinot.server.fullname" . }}-config + - configMap: + name: {{ include "pinot.minion.fullname" . }}-config + - name: jmx-config + configMap: + name: {{ include "pinot.servicemanager.fullname" . }}-jmx-config + - name: log-config configMap: - name: {{ include "pinot.servicemanager.fullname" . }}-config + name: {{ include "pinot.servicemanager.fullname" . }}-log-config {{- if not .Values.servicemanager.persistence.enabled }} - name: pinot-servicemanager-storage emptyDir: {} {{- end }} + {{- if eq .Values.cluster.storage.scheme "gs" }} + - name: gcs-iam-secret + secret: + secretName: {{ .Values.cluster.storage.gs.secretName }} + {{- end }} + {{- with .Values.extraVolumes }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- if .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml .Values.imagePullSecrets | nindent 8 }} diff --git a/helm/values.yaml b/helm/values.yaml index 8bf9e8f..2af8217 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -526,7 +526,7 @@ servicemanager: enabled: true accessMode: ReadWriteOnce size: 2Gi - mountPath: /var/pinot/servicemanager/data + mountPath: /var/pinot/ storageClass: "standard" data: @@ -534,9 +534,33 @@ servicemanager: jvmOpts: "-Xms128M -Xmx320M" + logging: + level: warn + log4j2ConfFile: /opt/pinot/conf/pinot-servicemanager-log4j2.xml pluginsDir: /opt/pinot/plugins + minion: + enabled: false + + jmx: + enabled: false + port: 7024 + opts: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.port=7024 -Dcom.sun.management.jmxremote.rmi.port=7024 -Djava.rmi.server.hostname=127.0.0.1" + + prometheus: + jmx: + enabled: false + port: 7073 + image: + repository: hypertrace/prometheus-jmx-exporter + tag: 0.1.6 + pullPolicy: IfNotPresent + resources: + requests: + cpu: "0.25" + memory: "256Mi" + service: enabled: true annotations: {} @@ -563,13 +587,13 @@ servicemanager: livenessProbe: initialDelaySeconds: 60 periodSeconds: 10 - timeoutSeconds: 1 + timeoutSeconds: 10 failureThreshold: 3 readinessProbe: initialDelaySeconds: 60 periodSeconds: 10 - timeoutSeconds: 1 + timeoutSeconds: 10 failureThreshold: 3 nodeSelector: {}