deploy/milvus/milvus-pulsar.yaml (424 lines of code) (raw):
# 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.
#
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "nuvolaris-milvus-pulsarv3-recovery"
namespace: nuvolaris
labels:
app: pulsarv3
chart: pulsarv3-3.3.0
release: nuvolaris-milvus
heritage: Helm
cluster: nuvolaris-milvus-pulsarv3
component: recovery
spec:
serviceName: "nuvolaris-milvus-pulsarv3-recovery"
replicas: 1
updateStrategy:
type: RollingUpdate
podManagementPolicy: Parallel
# nodeSelector:
selector:
matchLabels:
app: pulsarv3
release: nuvolaris-milvus
component: recovery
template:
metadata:
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: recovery
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8000"
spec:
affinity:
terminationGracePeriodSeconds: 30
serviceAccountName: nuvolaris-operator
initContainers:
# This initContainer will wait for bookkeeper initnewcluster to complete
# before deploying the bookies
- name: pulsar-bookkeeper-verify-clusterid
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/bookkeeper.conf;until bin/bookkeeper shell whatisinstanceid; do
sleep 3;
done;
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-recovery"
volumeMounts:
containers:
- name: "nuvolaris-milvus-pulsarv3-recovery"
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 128Mi
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/bookkeeper.conf;
OPTS="${OPTS} -Dlog4j2.formatMsgNoLookups=true" exec bin/bookkeeper autorecovery
ports:
- name: http
containerPort: 8000
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-recovery"
volumeMounts:
volumes:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "nuvolaris-milvus-pulsarv3-bookie"
namespace: nuvolaris
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: bookie
spec:
serviceName: "nuvolaris-milvus-pulsarv3-bookie"
replicas: 1
selector:
matchLabels:
app: pulsarv3
release: nuvolaris-milvus
component: bookie
updateStrategy:
type: RollingUpdate
podManagementPolicy: Parallel
template:
metadata:
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: bookie
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8000"
spec:
affinity:
terminationGracePeriodSeconds: 30
serviceAccountName: nuvolaris-operator
securityContext:
fsGroup: 0
fsGroupChangePolicy: OnRootMismatch
volumes:
- name: "nuvolaris-milvus-pulsarv3-bookie-journal"
persistentVolumeClaim:
claimName: "nuvolaris-milvus-bookie-journal"
- name: "nuvolaris-milvus-pulsarv3-bookie-ledgers"
persistentVolumeClaim:
claimName: "nuvolaris-milvus-bookie-ledgers"
initContainers:
# This initContainer will wait for bookkeeper initnewcluster to complete
# before deploying the bookies
- name: pulsar-bookkeeper-verify-clusterid
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
command: ["sh", "-c"]
args:
# only reformat bookie if bookkeeper is running without persistence
- >
set -e;
bin/apply-config-from-env.py conf/bookkeeper.conf;until bin/bookkeeper shell whatisinstanceid; do
sleep 3;
done;
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-bookie"
containers:
- name: "nuvolaris-milvus-pulsarv3-bookie"
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /api/v1/bookie/state
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 60
readinessProbe:
httpGet:
path: /api/v1/bookie/is_ready
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 60
resources:
requests:
cpu: 500m
memory: 2048Mi
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/bookkeeper.conf;
OPTS="${OPTS} -Dlog4j2.formatMsgNoLookups=true" exec bin/pulsar bookie;
ports:
- name: "bookie"
containerPort: 3181
- name: http
containerPort: 8000
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-bookie"
volumeMounts:
- name: "nuvolaris-milvus-pulsarv3-bookie-journal"
mountPath: /pulsar/data/bookkeeper/journal
- name: "nuvolaris-milvus-pulsarv3-bookie-ledgers"
mountPath: /pulsar/data/bookkeeper/ledgers
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "nuvolaris-milvus-pulsarv3-broker"
namespace: nuvolaris
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: broker
spec:
serviceName: "nuvolaris-milvus-pulsarv3-broker"
replicas: 1
selector:
matchLabels:
app: pulsarv3
release: nuvolaris-milvus
component: broker
updateStrategy:
type: RollingUpdate
podManagementPolicy: Parallel
template:
metadata:
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: broker
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "8080"
spec:
serviceAccountName: nuvolaris-operator
affinity:
terminationGracePeriodSeconds: 30
initContainers:
# This init container will wait for zookeeper to be ready before
# deploying the bookies
- name: wait-zookeeper-ready
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
command: ["sh", "-c"]
args:
- >-
export BOOKIE_MEM="-Xmx128M";
until bin/bookkeeper org.apache.zookeeper.ZooKeeperMain -server nuvolaris-milvus-pulsarv3-zookeeper:2181 get /admin/clusters/nuvolaris-milvus-pulsarv3; do
echo "pulsar cluster nuvolaris-milvus-pulsarv3 isn't initialized yet ... check in 3 seconds ..." && sleep 3;
done;
volumeMounts:
# This init container will wait for bookkeeper to be ready before
# deploying the broker
- name: wait-bookkeeper-ready
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
env:
- name: BOOK_KEEPER_REPLICAS
value: "1"
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/bookkeeper.conf;
export BOOKIE_MEM="-Xmx128M";
until bin/bookkeeper shell whatisinstanceid; do
echo "bookkeeper cluster is not initialized yet. backoff for 3 seconds ...";
sleep 3;
done;
echo "bookkeeper cluster is already initialized";
bookieServiceNumber="$(nslookup -timeout=10 nuvolaris-milvus-pulsarv3-bookie | grep Name | wc -l)";
until [ ${bookieServiceNumber} -ge $BOOK_KEEPER_REPLICAS ]; do
echo "bookkeeper cluster nuvolaris-milvus-pulsarv3 isn't ready yet ... check in 10 seconds ...";
sleep 10;
bookieServiceNumber="$(nslookup -timeout=10 nuvolaris-milvus-pulsarv3-bookie | grep Name | wc -l)";
done;
echo "bookkeeper cluster is ready";
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-bookie"
volumeMounts:
containers:
- name: "nuvolaris-milvus-pulsarv3-broker"
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /status.html
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 10
readinessProbe:
httpGet:
path: /status.html
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 10
resources:
requests:
cpu: 500m
memory: 2048Mi
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/broker.conf;
bin/gen-yml-from-env.py conf/functions_worker.yml;
echo "OK" > status;
bin/pulsar zookeeper-shell -server nuvolaris-milvus-pulsarv3-zookeeper:2181 get /loadbalance/brokers/${HOSTNAME}.nuvolaris-milvus-pulsarv3-broker.nuvolaris.svc.cluster.local:8080;
while [ $? -eq 0 ]; do
echo "broker ${HOSTNAME}.nuvolaris-milvus-pulsarv3-broker.nuvolaris.svc.cluster.local znode still exists ... check in 10 seconds ...";
sleep 10;
bin/pulsar zookeeper-shell -server nuvolaris-milvus-pulsarv3-zookeeper:2181 get /loadbalance/brokers/${HOSTNAME}.nuvolaris-milvus-pulsarv3-broker.nuvolaris.svc.cluster.local:8080;
done;
cat conf/pulsar_env.sh;
OPTS="${OPTS} -Dlog4j2.formatMsgNoLookups=true" exec bin/pulsar broker;
ports:
# prometheus needs to access /metrics endpoint
- name: http
containerPort: 8080
- name: "pulsar"
containerPort: 6650
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-broker"
volumeMounts:
env:
volumes:
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: "nuvolaris-milvus-pulsarv3-proxy"
namespace: nuvolaris
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: proxy
spec:
serviceName: "nuvolaris-milvus-pulsarv3-proxy"
replicas: 1
selector:
matchLabels:
app: pulsarv3
release: nuvolaris-milvus
component: proxy
updateStrategy:
type: RollingUpdate
podManagementPolicy: Parallel
template:
metadata:
labels:
app: pulsarv3
release: nuvolaris-milvus
cluster: nuvolaris-milvus-pulsarv3
component: proxy
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "80"
spec:
affinity:
terminationGracePeriodSeconds: 30
serviceAccountName: nuvolaris-operator
initContainers:
# This init container will wait for zookeeper to be ready before
# deploying the bookies
- name: wait-zookeeper-ready
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
command: ["sh", "-c"]
args:
- >-
export PULSAR_MEM="-Xmx128M";
until bin/pulsar zookeeper-shell -server nuvolaris-milvus-pulsarv3-zookeeper get /admin/clusters/nuvolaris-milvus-pulsarv3; do
sleep 3;
done;
# This init container will wait for at least one broker to be ready before
# deploying the proxy
- name: wait-broker-ready
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 100m
memory: 256Mi
env:
- name: BROKER_REPLICAS
value: "1"
command: ["sh", "-c"]
args:
- >-
set -e;
brokerServiceNumber="$(nslookup -timeout=10 nuvolaris-milvus-pulsarv3-broker | grep Name | wc -l)";
until [ ${brokerServiceNumber} -ge $BROKER_REPLICAS ]; do
echo "pulsar cluster nuvolaris-milvus-pulsarv3 isn't initialized yet ... check in 10 seconds ...";
sleep 10;
brokerServiceNumber="$(nslookup -timeout=10 nuvolaris-milvus-pulsarv3-broker | grep Name | wc -l)";
done;
containers:
- name: "nuvolaris-milvus-pulsarv3-proxy"
image: "apachepulsar/pulsar:3.0.7"
imagePullPolicy: IfNotPresent
livenessProbe:
httpGet:
path: /status.html
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 10
readinessProbe:
httpGet:
path: /status.html
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 10
resources:
requests:
cpu: 500m
memory: 512Mi
command: ["sh", "-c"]
args:
- >
bin/apply-config-from-env.py conf/proxy.conf &&
echo "OK" > status &&
OPTS="${OPTS} -Dlog4j2.formatMsgNoLookups=true" exec bin/pulsar proxy
ports:
# prometheus needs to access /metrics endpoint
- name: sts-http
containerPort: 8080
- name: "sts-pulsar"
containerPort: 6650
envFrom:
- configMapRef:
name: "nuvolaris-milvus-pulsarv3-proxy"