Add support for Horizontal Pod Autoscaling for Broker and Proxy. (#262)
* Add support for Horizontal Pod Autoscaling for Broker and Proxy.
* Add license
diff --git a/charts/pulsar/Chart.yaml b/charts/pulsar/Chart.yaml
index a9ff7fa..f5c26bc 100644
--- a/charts/pulsar/Chart.yaml
+++ b/charts/pulsar/Chart.yaml
@@ -21,7 +21,7 @@
appVersion: "2.9.2"
description: Apache Pulsar Helm chart for Kubernetes
name: pulsar
-version: 2.9.2
+version: 2.9.3
home: https://pulsar.apache.org
sources:
- https://github.com/apache/pulsar
diff --git a/charts/pulsar/templates/broker-hpa.yaml b/charts/pulsar/templates/broker-hpa.yaml
new file mode 100644
index 0000000..018d218
--- /dev/null
+++ b/charts/pulsar/templates/broker-hpa.yaml
@@ -0,0 +1,36 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+{{- if .Values.broker.autoscaling.enabled }}
+apiVersion: autoscaling/v2beta2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}"
+spec:
+ maxReplicas: {{ .Values.broker.autoscaling.maxReplicas }}
+ {{- with .Values.broker.autoscaling.metrics }}
+ metrics:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+ minReplicas: {{ .Values.broker.autoscaling.minReplicas }}
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: StatefulSet
+ name: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}"
+{{- end }}
diff --git a/charts/pulsar/templates/proxy-hpa.yaml b/charts/pulsar/templates/proxy-hpa.yaml
new file mode 100644
index 0000000..7314eca
--- /dev/null
+++ b/charts/pulsar/templates/proxy-hpa.yaml
@@ -0,0 +1,36 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+{{- if .Values.proxy.autoscaling.enabled }}
+apiVersion: autoscaling/v2beta2
+kind: HorizontalPodAutoscaler
+metadata:
+ name: "{{ template "pulsar.fullname" . }}-{{ .Values.proxy.component }}"
+spec:
+ maxReplicas: {{ .Values.proxy.autoscaling.maxReplicas }}
+ {{- with .Values.proxy.autoscaling.metrics }}
+ metrics:
+ {{- toYaml . | nindent 4 }}
+ {{- end }}
+ minReplicas: {{ .Values.proxy.autoscaling.minReplicas }}
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: StatefulSet
+ name: "{{ template "pulsar.fullname" . }}-{{ .Values.proxy.component }}"
+{{- end }}
diff --git a/charts/pulsar/values.yaml b/charts/pulsar/values.yaml
index 81cfa16..2193169 100644
--- a/charts/pulsar/values.yaml
+++ b/charts/pulsar/values.yaml
@@ -668,6 +668,11 @@
# so the metrics are correctly rendered in grafana dashboard
component: broker
replicaCount: 3
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 3
+ metrics: ~
# If using Prometheus-Operator enable this PodMonitor to discover broker scrape targets
# Prometheus-Operator does not add scrape targets based on k8s annotations
podMonitor:
@@ -784,6 +789,11 @@
# so the metrics are correctly rendered in grafana dashboard
component: proxy
replicaCount: 3
+ autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 3
+ metrics: ~
# If using Prometheus-Operator enable this PodMonitor to discover proxy scrape targets
# Prometheus-Operator does not add scrape targets based on k8s annotations
podMonitor: