227 lines
6.8 KiB
YAML
227 lines
6.8 KiB
YAML
# 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: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: broker-config
|
|
namespace: kube-public
|
|
data:
|
|
# BROKER_MEM sets the broker JVM, if set to "" then Xms = Xmx = max(min(1/2 ram, 1024MB), min(1/4 ram, 8GB))
|
|
BROKER_MEM: " -Xms2g -Xmx2g -Xmn1g -XX:+UnlockExperimentalVMOptions "
|
|
broker-common.conf: |
|
|
# brokerClusterName, brokerName, brokerId are automatically generated by the operator and do not set it manually!!!
|
|
deleteWhen=04
|
|
fileReservedTime=48
|
|
flushDiskType=ASYNC_FLUSH
|
|
# set brokerRole to ASYNC_MASTER or SYNC_MASTER. DO NOT set to SLAVE because the replica instance will automatically be set!!!
|
|
brokerRole=ASYNC_MASTER
|
|
|
|
---
|
|
apiVersion: rocketmq.apache.org/v1alpha1
|
|
kind: Broker
|
|
metadata:
|
|
# name of broker cluster
|
|
name: broker
|
|
namespace: kube-public
|
|
spec:
|
|
# size is the number of the broker cluster, each broker cluster contains a master broker and [replicaPerGroup] replica brokers.
|
|
size: 1
|
|
# nameServers is the [ip:port] list of name service
|
|
nameServers: "{%- for node in groups['kube-master'] -%}{{node}}:9876{% if not loop.last %};{% endif %}{%- endfor -%}"
|
|
# replicaPerGroup is the number of each broker cluster
|
|
replicaPerGroup: 1
|
|
# brokerImage is the customized docker image repo of the RocketMQ broker
|
|
brokerImage: {{BASE_IMAGE_URL}}/{{rocketmq_broker_image}}
|
|
# imagePullPolicy is the image pull policy
|
|
imagePullPolicy: IfNotPresent
|
|
# resources describes the compute resource requirements and limits
|
|
resources:
|
|
requests:
|
|
memory: "1024Mi"
|
|
cpu: "250m"
|
|
limits:
|
|
memory: "3Gi"
|
|
cpu: "500m"
|
|
# allowRestart defines whether allow pod restart
|
|
allowRestart: true
|
|
# storageMode can be EmptyDir, HostPath, StorageClass
|
|
storageMode: StorageClass
|
|
# hostPath is the local path to store data
|
|
hostPath: /data/rocketmq/broker
|
|
# scalePodName is [Broker name]-[broker group number]-master-0
|
|
scalePodName: broker-0-master-0
|
|
# env defines custom env, e.g. BROKER_MEM
|
|
env:
|
|
- name: BROKER_MEM
|
|
valueFrom:
|
|
configMapKeyRef:
|
|
name: broker-config
|
|
key: BROKER_MEM
|
|
# volumes defines the broker.conf
|
|
volumes:
|
|
- name: broker-config
|
|
configMap:
|
|
name: broker-config
|
|
items:
|
|
- key: broker-common.conf
|
|
path: broker-common.conf
|
|
# volumeClaimTemplates defines the storageClass
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: broker-storage
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 10Gi
|
|
storageClassName: local-storage
|
|
selector:
|
|
matchLabels:
|
|
pv: rocketmq-broker
|
|
{% for node in groups['kube-master'] %}
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolume
|
|
metadata:
|
|
name: rocketmq-broker-storage-{{hostvars[node].NODE_ID}}
|
|
labels:
|
|
pv: rocketmq-broker
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
capacity:
|
|
storage: 10Gi
|
|
local:
|
|
path: /data/rocketmq/broker
|
|
nodeAffinity:
|
|
required:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: kubernetes.io/hostname
|
|
operator: In
|
|
values:
|
|
- "{{hostvars[node].NODE_ID}}"
|
|
persistentVolumeReclaimPolicy: Retain
|
|
storageClassName: local-storage
|
|
{% endfor %}
|
|
---
|
|
apiVersion: rocketmq.apache.org/v1alpha1
|
|
kind: NameService
|
|
metadata:
|
|
name: name-service
|
|
namespace: kube-public
|
|
spec:
|
|
# size is the the name service instance number of the name service cluster
|
|
size: 3
|
|
# nameServiceImage is the customized docker image repo of the RocketMQ name service
|
|
nameServiceImage: {{BASE_IMAGE_URL}}/{{rocketmq_nameserver_image}}
|
|
# imagePullPolicy is the image pull policy
|
|
imagePullPolicy: Always
|
|
# hostNetwork can be true or false
|
|
hostNetwork: true
|
|
# Set DNS policy for the pod.
|
|
# Defaults to "ClusterFirst".
|
|
# Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.
|
|
# DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.
|
|
# To have DNS options set along with hostNetwork, you have to specify DNS policy
|
|
# explicitly to 'ClusterFirstWithHostNet'.
|
|
dnsPolicy: ClusterFirstWithHostNet
|
|
# resources describes the compute resource requirements and limits
|
|
resources:
|
|
requests:
|
|
memory: "512Mi"
|
|
cpu: "250m"
|
|
limits:
|
|
memory: "1024Mi"
|
|
cpu: "500m"
|
|
# storageMode can be EmptyDir, HostPath, StorageClass
|
|
storageMode: StorageClass
|
|
# hostPath is the local path to store data
|
|
hostPath: /data/rocketmq/nameserver
|
|
# volumeClaimTemplates defines the storageClass
|
|
volumeClaimTemplates:
|
|
- metadata:
|
|
name: namesrv-storage
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
resources:
|
|
requests:
|
|
storage: 2Gi
|
|
storageClassName: local-storage
|
|
selector:
|
|
matchLabels:
|
|
pv: rocketmq-nameserver
|
|
---
|
|
{% for node in groups['kube-master'] %}
|
|
---
|
|
apiVersion: v1
|
|
kind: PersistentVolume
|
|
metadata:
|
|
name: rocketmq-nameserver-storage-{{hostvars[node].NODE_ID}}
|
|
labels:
|
|
pv: rocketmq-nameserver
|
|
spec:
|
|
accessModes:
|
|
- ReadWriteOnce
|
|
capacity:
|
|
storage: 10Gi
|
|
local:
|
|
path: /data/rocketmq/nameserver
|
|
nodeAffinity:
|
|
required:
|
|
nodeSelectorTerms:
|
|
- matchExpressions:
|
|
- key: kubernetes.io/hostname
|
|
operator: In
|
|
values:
|
|
- "{{hostvars[node].NODE_ID}}"
|
|
persistentVolumeReclaimPolicy: Retain
|
|
storageClassName: local-storage
|
|
{% endfor %}
|
|
---
|
|
apiVersion: rocketmq.apache.org/v1alpha1
|
|
kind: Console
|
|
metadata:
|
|
name: console
|
|
namespace: kube-public
|
|
spec:
|
|
# nameServers is the [ip:port] list of name service
|
|
nameServers: "name-server-service:9876"
|
|
# consoleDeployment define the console deployment
|
|
consoleDeployment:
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
labels:
|
|
app: rocketmq-console
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
app: rocketmq-console
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: rocketmq-console
|
|
spec:
|
|
containers:
|
|
- name: console
|
|
image: {{BASE_IMAGE_URL}}/{{rocketmq_console_image}}
|
|
ports:
|
|
- containerPort: 8080
|