#!/bin/bash echo "开始安装 RocketMQ 到 Kubernetes 集群..." # 检查 kubectl 是否可用 if ! command -v kubectl &> /dev/null; then echo "错误: kubectl 命令未找到,请先安装 kubectl" exit 1 fi # 应用 RocketMQ 配置 echo "应用 RocketMQ ConfigMap..." kubectl apply -f rocketmq-configmap.yaml echo "应用 RocketMQ NameServer Deployment..." kubectl apply -f rocketmq-nameserver-deployment.yaml echo "应用 RocketMQ NameServer Service..." kubectl apply -f rocketmq-nameserver-service.yaml echo "应用 RocketMQ Broker Deployment..." kubectl apply -f rocketmq-broker-deployment.yaml echo "应用 RocketMQ Broker Service..." kubectl apply -f rocketmq-broker-service.yaml # 等待 Pod 启动 echo "等待 RocketMQ NameServer Pod 启动..." kubectl wait --for=condition=ready pod -l app=rocketmq-nameserver -n default --timeout=300s echo "等待 RocketMQ Broker Pod 启动..." kubectl wait --for=condition=ready pod -l app=rocketmq-broker -n default --timeout=300s # 检查状态 echo "检查 RocketMQ 部署状态..." echo "=== NameServer Pods ===" kubectl get pods -l app=rocketmq-nameserver -n default echo "=== Broker Pods ===" kubectl get pods -l app=rocketmq-broker -n default echo "=== Services ===" kubectl get svc -l app=rocketmq -n default # 测试 RocketMQ 连接 echo "测试 RocketMQ NameServer 连接..." NAMESERVER_POD=$(kubectl get pods -l app=rocketmq-nameserver -n default -o jsonpath='{.items[0].metadata.name}') if [ ! -z "$NAMESERVER_POD" ]; then echo "在 Pod $NAMESERVER_POD 中测试 NameServer..." kubectl exec -it $NAMESERVER_POD -n default -- sh -c "netstat -tlnp | grep 9876" if [ $? -eq 0 ]; then echo "RocketMQ NameServer 连接测试成功!" else echo "RocketMQ NameServer 连接测试失败!" fi fi echo "RocketMQ 安装完成!" echo "NameServer 地址: rocketmq-nameserver.default.svc.cluster.local:9876" echo "Broker 地址: rocketmq-broker.default.svc.cluster.local:10911" echo "" echo "使用示例:" echo "1. 查看 NameServer 日志: kubectl logs -f -n default" echo "2. 查看 Broker 日志: kubectl logs -f -n default" echo "3. 进入 NameServer 容器: kubectl exec -it -n default -- sh" echo "" echo "注意: 请确保已正确配置 RocketMQ 的存储和网络策略"