# # 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. # {{- $ensembleSize := .Values.broker.configData.managedLedgerDefaultEnsembleSize }} apiVersion: apps/v1 kind: Deployment metadata: name: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}" namespace: {{ .Values.namespace }} labels: app: {{ template "pulsar.name" . }} chart: {{ template "pulsar.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} component: {{ .Values.broker.component }} cluster: {{ template "pulsar.fullname" . }} spec: replicas: {{ .Values.broker.replicaCount }} selector: matchLabels: app: {{ template "pulsar.name" . }} release: {{ .Release.Name }} component: {{ .Values.broker.component }} template: metadata: labels: app: {{ template "pulsar.name" . }} release: {{ .Release.Name }} component: {{ .Values.broker.component }} cluster: {{ template "pulsar.fullname" . }} annotations: {{ toYaml .Values.broker.annotations | indent 8 }} spec: {{- if .Values.broker.nodeSelector }} nodeSelector: {{ toYaml .Values.broker.nodeSelector | indent 8 }} {{- end }} {{- if .Values.broker.tolerations }} tolerations: {{ toYaml .Values.broker.tolerations | indent 8 }} {{- end }} {{- if .Values.extra.functionsAsPods }} serviceAccount: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.functions.component }}" {{- end }} affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: "app" operator: In values: - "{{ template "pulsar.name" . }}" - key: "release" operator: In values: - {{ .Release.Name }} - key: "component" operator: In values: - {{ .Values.broker.component }} topologyKey: "kubernetes.io/hostname" terminationGracePeriodSeconds: {{ .Values.broker.gracePeriod }} initContainers: # This init container will wait for zookeeper to be ready before # deploying the bookies - name: wait-zookeeper-ready image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} command: ["sh", "-c"] args: - >- until bin/pulsar zookeeper-shell -server {{ template "pulsar.fullname" . }}-{{ .Values.zookeeper.component }} ls /admin/clusters/{{ template "pulsar.fullname" . }}; do sleep 3; done; # This init container will wait for bookkeeper to be ready before # deploying the broker - name: wait-bookkeeper-ready image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} command: ["sh", "-c"] args: - >- bin/apply-config-from-env.py conf/bookkeeper.conf && until bin/bookkeeper shell simpletest -ensemble {{$ensembleSize}}; do sleep 3; done; containers: - name: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}" image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} {{- if .Values.broker.resources }} resources: {{ toYaml .Values.broker.resources | indent 10 }} {{- end }} command: ["sh", "-c"] args: - > bin/apply-config-from-env.py conf/broker.conf && bin/apply-config-from-env.py conf/pulsar_env.sh && bin/gen-yml-from-env.py conf/functions_worker.yml && bin/pulsar broker ports: - name: http containerPort: 8080 - name: pulsar containerPort: 6650 envFrom: - configMapRef: name: "{{ template "pulsar.fullname" . }}-{{ .Values.broker.component }}" env: - name: advertisedAddress valueFrom: fieldRef: fieldPath: status.podIP