k8s部署rocketmq-v5.1.0
原创地址https://bxv0uu2bxxa.feishu.cn/wiki/Tlrcw4cnMiUWIpkTMFocBjYznwg

一、克隆 RocketMQ Operator 项目
# 版本 rocketmq-operator-0.3.0
git clone -b 0.3.0 https://github.com/apache/rocketmq-operator.git
# 加速地址
cd && git clone -b 0.3.0 https://kgithub.com/apache/rocketmq-operator.git
cd ~/rocketmq-operato
二、制作镜像
cd ~/rocketmq-operator/images/broker/alpine
# 第 20 行(修改源地址为国内源)
sed -i '20s/.*/RUN sed -i '\''s\/dl-cdn.alpinelinux.org\/mirrors.tuna.tsinghua.edu.cn\/g'\'' \/etc\/apk\/repositories \&\& \\\n apk add --no-cache bash gettext nmap-ncat openssl busybox-extras/' Dockerfile
# 第 20 行(修改源地址为国内源)
# 修改前
RUN apk add --no-cache bash gettext nmap-ncat openssl busybox-extras
# 修改后
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
apk add --no-cache bash gettext nmap-ncat openssl busybox-extras
sed -i 's#apacherocketmq#192.168.1.112/apacherocketmq#g' build-broker-image.sh
# ./build-broker-image.sh 4.9.4
./build-broker-image.sh 5.1.0
三、制作 RocketMQ Name Server Image
cd ~/rocketmq-operator/images/namesrv/alpine
# 第 20 行(修改源地址为国内源)
sed -i '20s/.*/RUN sed -i '\''s\/dl-cdn.alpinelinux.org\/mirrors.tuna.tsinghua.edu.cn\/g'\'' \/etc\/apk\/repositories \&\& \\\n apk add --no-cache bash gettext nmap-ncat openssl busybox-extras/' Dockerfile
# 第 20 行(修改源地址为国内源)
# 修改前
RUN apk add --no-cache bash gettext nmap-ncat openssl busybox-extras
# 修改后
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories && \
apk add --no-cache bash gettext nmap-ncat openssl busybox-extras
# 修改镜像仓库地址为内网地址
sed -i 's#apacherocketmq#192.168.1.112/apacherocketmq#g' build-namesrv-image.sh
# ./build-namesrv-image.sh 4.9.4
./build-namesrv-image.sh 5.1.0
四、修改 RocketMQ Operator 部署yml文件
sed -i 'N;8 a \ namespace: rocketmq' deploy/crds/rocketmq.apache.org_brokers.yaml
sed -i 'N;8 a \ namespace: rocketmq' deploy/crds/rocketmq.apache.org_consoles.yaml
sed -i 'N;8 a \ namespace: rocketmq' deploy/crds/rocketmq.apache.org_nameservices.yaml
sed -i 'N;8 a \ namespace: rocketmq' deploy/crds/rocketmq.apache.org_topictransfers.yaml
sed -i 'N;18 a \ namespace: rocketmq' deploy/operator.yaml
sed -i 'N;18 a \ namespace: rocketmq' deploy/role_binding.yaml
sed -i 's/namespace: default/namespace: rocketmq/g' deploy/role_binding.yaml
sed -i 'N;18 a \ namespace: rocketmq' deploy/service_account.yaml
sed -i 'N;20 a \ namespace: rocketmq' deploy/role.yaml
grep -r 'namespace: rocketmq' deploy/* |grep -n '.*'
# 备份
cp example/rocketmq_v1alpha1_rocketmq_cluster.yaml example/rocketmq_v1alpha1_rocketmq_cluster.yaml-bak
# 命名空间
sed -i 's/namespace: default/namespace: rocketmq/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# 替换镜像地址
sed -i 's#apacherocketmq#192.168.1.112/apacherocketmq#g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/4.5.0/5.1.0/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# 禁用 hostNetwork 模式
sed -i 's/hostNetwork: true/hostNetwork: false/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/dnsPolicy: ClusterFirstWithHostNet/dnsPolicy: ClusterFirst/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# pvc
sed -i 's/storageClassName: rocketmq-storage/storageClassName: nfs-storage/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/storageMode: EmptyDir/storageMode: StorageClass/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/storage: 8Gi/storage: 2Ti/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/storage: 1Gi/storage: 2Ti/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# 修改 nameServers 为域名的形式
sed -i 's/nameServers: ""/nameServers: "name-server-service.rocketmq:9876"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# cpu
sed -i 's/cpu: "500m"/cpu: "8"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/cpu: "250m"/cpu: "2"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# memory
sed -i 's/memory: "1024Mi"/memory: "8Gi"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
sed -i 's/memory: "512Mi"/memory: "2Gi"/g' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# 部署2个broker
sed -i '41s/1/2/' example/rocketmq_v1alpha1_rocketmq_cluster.yaml
# 命名空间
sed -i 'N;18 a \ namespace: rocketmq' example/rocketmq_v1alpha1_cluster_service.yaml
# NodePort
sed -i 's/nodePort: 30000/nodePort: 31080/g' example/rocketmq_v1alpha1_cluster_service.yaml
# 打开注释
sed -i '32,46s/^#//g' example/rocketmq_v1alpha1_cluster_service.yaml
sed -i 's/namespace: default/namespace: rocketmq/g' example/rocketmq_v1alpha1_cluster_service.yaml
sed -i 's/nodePort: 30001/nodePort: 31081/g' example/rocketmq_v1alpha1_cluster_service.yaml
五、部署其他依赖
- 控制角色
- Operator 任务等
kubectl create -f deploy/crds/rocketmq.apache.org_brokers.yaml
kubectl create -f deploy/crds/rocketmq.apache.org_nameservices.yaml
kubectl create -f deploy/crds/rocketmq.apache.org_consoles.yaml
kubectl create -f deploy/crds/rocketmq.apache.org_topictransfers.yaml
kubectl create -f deploy/service_account.yaml
kubectl create -f deploy/role.yaml
kubectl create -f deploy/role_binding.yaml
kubectl create -f deploy/operator.yaml
kubectl get crd | grep rocketmq.apache.org
kubectl get po -n rocketmq
六、部署 RocketMQ 集群
kubectl apply -f example/rocketmq_v1alpha1_cluster_service.yaml
kubectl apply -f example/rocketmq_v1alpha1_rocketmq_cluster.yaml
[root@master ~/rocketmq-operator]# kubectl get po -n rocketmq
NAME READY STATUS RESTARTS AGE
broker-0-master-0 1/1 Running 0 47s
broker-0-replica-1-0 1/1 Running 0 47s
broker-1-master-0 1/1 Running 0 47s
broker-1-replica-1-0 1/1 Running 0 47s
console-dfbc6445d-w9k75 1/1 Running 0 47s
name-service-0 1/1 Running 0 47s
rocketmq-operator-79bd8cf9dd-b55zt 1/1 Running 0 42m
[root@master ~/rocketmq-operator]# kubectl get svc -n rocketmq
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
console-service NodePort 10.97.145.235 <none> 8080:31080/TCP 39m
name-server-service NodePort 10.108.83.191 <none> 9876:31081/TCP 39m
更多推荐



所有评论(0)