RabbitMQ Operator 部署
- 下载并部署Operator,默认部署在rabbitmq-system命名空间,如果需要修改命名空间可以先下载yaml文件,修改命名空间后再执行部署命令
kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"
- 编写yaml文件准备创建RabbitmqCluster CRD资源实例,除了实例名字为必需项以外,其他配置均不是必须填写,可以按需求添加配置
apiVersion: rabbitmq.com/v1beta1
kind: RabbitmqCluster
metadata:
labels: #实例标签
app: rabbitmq
annotations: #实例注释
some: annotation
name: rabbitmq-sample #实例名字
spec:
image: my-private-registry/rabbitmq:my-custom-tag #实例使用镜像
service: #实例的service
type: ClusterIP #service类型
annotations: #service注释
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
persistence: #配置持久化
storage: 5Gi #pvc大小
storageClassName: longhorn #使用的storageClass名字
replicas: 3 #配置实例个数
resources: #配置实例资源限制
limits:
cpu: 800m
memory: 1Gi
requests:
cpu: 200m
memory: 512Mi
affinity: #配置实例亲和性
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node-1
tolerations: #配置pod容忍
- key: "dedicated"
operator: "Equal"
value: "rabbitmq"
effect: "NoSchedule"
rabbitmq:
additionalConfig: | #为实例添加自定义RabbitMQ配置
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
cluster_formation.k8s.host = kubernetes.default
cluster_formation.k8s.address_type = hostname
cluster_formation.node_cleanup.interval = 30
cluster_formation.node_cleanup.only_log_warning = true
cluster_partition_handling = pause_minority
queue_master_locator = min-masters
channel_max = 1050
envConfig: | #为实例添加自定义环境变量
RABBITMQ_DISTRIBUTION_BUFFER_SIZE=some_value
additionalPlugins: #为实例添加自定义插件
- rabbitmq_top
- rabbitmq_shovel
terminationGracePeriodSeconds: 60 #配置实例终止宽限期
override: #配置实例覆盖默认配置
service:
spec:
ports:
- name: additional-port # adds an additional port on the service
protocol: TCP
port: 12345
statefulSet:
spec:
template:
spec:
containers:
- name: rabbitmq
ports:
- containerPort: 12345 # opens an additional port on the rabbitmq server container
name: additional-port
protocol: TCP
- 创建/更新RabbitMQ实例
kubectl apply -f rabbitmq-sample.yml -n NAMESPACE
- 获取RabbitMQ实例默认管理员账号密码,通过15692端口登录RabbitMQ管理页面
kubectl -n NAMESPACE get secret rabbitmq-sample-default-user -o jsonpath="{.data.username}" | base64 --decode #账号
kubectl -n NAMESPACE get secret rabbitmq-sample-default-user -o jsonpath="{.data.password}" | base64 --decode #密码