ccyunchina-deploy/roles/proprietary-cloud/templates/rocketmq/rocketmq_v1alpha1_rocketmq_...

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