blob: 756971ab51e94fa84f98e703735e4b1a76d403ef [file] [log] [blame]
{{- /*
#
# 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.
#
*/ -}}
{{- $zkSize := .Values.zookeeper.size | int }}
{{- $bkSize := .Values.bookkeeper.size | int }}
{{- $zkAdminPort := .Values.zookeeper.adminPort | int }}
{{- $zkClientPort := .Values.zookeeper.clientPort | int }}
{{- $zkPeerPort := .Values.zookeeper.peerPort | int }}
{{- $zkLeaderPort := .Values.zookeeper.leaderPort | int }}
{{- $bookiePort := .Values.bookkeeper.bookiePort | int }}
{{- $bookieGrpcPort := .Values.bookkeeper.bookieGrpcPort | int }}
{{- $bookieHttpPort := .Values.bookkeeper.bookieHttpPort | int }}
{{- define "zookeeper_servers" }}
{{- range until (.Values.zookeeper.size | int) }}
{{- if . -}}
,
{{- end -}}
zookeeper-{{ add 1 . }}:2181
{{- end -}}
{{- end -}}
{{- define "metadata_service_uri" }}
{{- range until (.Values.zookeeper.size | int) }}
{{- if . -}}
;
{{- end -}}
zookeeper-{{ add 1 . }}:2181
{{- end -}}
{{- end -}}
{{- define "zookeeper_server_list" }}
{{- $zk := dict "servers" (list) -}}
{{- range until (.Values.zookeeper.size | int) }}
{{- $noop := printf "server.%d=zookeeper-%d:%d:%d;%d" (add 1 .) (add 1 .) ($.Values.zookeeper.peerPort | int) ($.Values.zookeeper.leaderPort | int) ($.Values.zookeeper.clientPort | int) | append $zk.servers | set $zk "servers" -}}
{{- end -}}
{{- join " " $zk.servers -}}
{{- end -}}
version: '3'
services:
{{- range until $zkSize }}
zookeeper-{{ add 1 . }}:
image: {{ $.Values.zookeeper.image }}
{{- if eq $.Values.networkMode "host" }}
network_mode: host
{{- else }}
ports:
- "{{ add $zkAdminPort . 1000 }}:{{ $zkAdminPort }}"
- "{{ add $zkClientPort . }}:{{ $zkClientPort }}"
{{- end }}
{{- if $.Values.dataDir }}
volumes:
- {{ $.Values.dataDir }}/zookeeper-{{ add 1 . }}/data:/data
- {{ $.Values.dataDir }}/zookeeper-{{ add 1 . }}/txlog:/datalog
{{- end }}
environment:
- ZOO_MY_ID={{ add 1 . }}
- ZOO_SERVERS={{- template "zookeeper_server_list" $ }}
- ZOO_STANDALONE_ENABLED=false
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:{{ $zkAdminPort }}/commands/stat"]
interval: 60s
timeout: 3s
retries: 60
restart: on-failure
{{ end }}
{{- range until $bkSize }}
bookie-{{ add 1 . }}:
image: {{ $.Values.bookkeeper.image }}
{{- if eq $.Values.networkMode "host" }}
network_mode: host
{{- else }}
ports:
{{- if eq $.Values.networkMode "host" }}
- "{{ add $bookiePort . }}:{{ $bookiePort }}"
{{- else }}
- "{{ add $bookiePort . }}:{{ add $bookiePort . }}"
{{- end }}
- "{{ add $bookieHttpPort . }}:{{ $bookieHttpPort }}"
- "{{ add $bookieGrpcPort . }}:{{ $bookieGrpcPort }}"
{{- end }}
{{- if $.Values.dataDir }}
volumes:
- {{ $.Values.dataDir }}/bookie-{{ add 1 . }}/journal:/data/bookkeeper/journal
- {{ $.Values.dataDir }}/bookie-{{ add 1 . }}/ledgers:/data/bookkeeper/ledgers
{{- end }}
environment:
- BK_zkServers={{- template "zookeeper_servers" $ }}
- BK_metadataServiceUri=zk+hierarchical://{{- template "metadata_service_uri" $ }}/ledgers
- BK_DATA_DIR=/data/bookkeeper
{{- if eq $.Values.networkMode "host" }}
- BK_bookiePort={{ $bookiePort }}
{{- else }}
- BK_advertisedAddress={{ $.Values.advertisedAddr }}
- BK_bookiePort={{ add $bookiePort . }}
{{- end }}
- BK_httpServerEnabled=true
depends_on:
{{- range until $zkSize }}
- "zookeeper-{{add 1 .}}"
{{- end }}
healthcheck:
test: ["CMD", "curl", "-s", "http://localhost:{{ $bookieHttpPort }}/heartbeat"]
interval: 60s
timeout: 3s
retries: 60
restart: on-failure
{{ end }}