用Kubernetes管理RabbitMQ

製做RabbitMQ的docker鏡像

mq版本3.6.5node

#
# RabbitMQ Dockerfile
#
# https://github.com/dockerfile/rabbitmq
#

# Pull base image.
FROM i71:5000/ubuntu

# Add files.
ADD bin/rabbitmq-start /usr/local/bin/

RUN \
  apt-get update && apt-get install -y wget 

# Install RabbitMQ.
RUN \
  /usr/bin/wget -qO - https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | apt-key add - && \
  echo "deb http://www.rabbitmq.com/debian/ testing main" > /etc/apt/sources.list.d/rabbitmq.list && \
  apt-get update && \
  DEBIAN_FRONTEND=noninteractive apt-get install -y rabbitmq-server --force-yes && \
  rm -rf /var/lib/apt/lists/* && \
  rabbitmq-plugins enable rabbitmq_management  rabbitmq_federation rabbitmq_federation_management && \
  echo "[{rabbit, [{loopback_users, []}]}]." > /etc/rabbitmq/rabbitmq.config && \
  chmod +x /usr/local/bin/rabbitmq-start

# Define environment variables.
ENV RABBITMQ_LOG_BASE /data/log
ENV RABBITMQ_MNESIA_BASE /data/mnesia

# Define mount points.
VOLUME ["/data/log", "/data/mnesia"]

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["rabbitmq-start"]

# Expose ports.
EXPOSE 5672
EXPOSE 15672

製做RabbitMQ的部署yaml文件

爲了進行資源隔離,我將mq放入了單獨的一個namespace,使用以下文件:rabbitmq-namespace.yamlgit

apiVersion: v1
kind: Namespace
metadata:
  name: mq-rtest

編寫controller文件

rabbitmq-controller.yaml

apiVersion: v1
kind: ReplicationController
metadata:
  name: mq
  namespace: mq-rtest
  labels:
    name: mq
spec:
  replicas: 1
  selector:
    name: mq
  template:
    metadata:
      labels:
        name: mq
    spec:
      containers:
      - name: mq
        image: i71:5000/rabbitmq-3.6.5:latest
        ports:
        - containerPort: 5672
        - containerPort: 15672
        volumeMounts:
        - name: rabbitmq-log
          mountPath: /data/log
          readonly: false
        - name: rabbitmq-data
          mountPath: /data/mnesia
          readonly: false
      volumes:
      - name: rabbitmq-log
        hostPath:
          path: /home/data/rabbitmq3.6.5/log
      - name: rabbitmq-data
        hostPath:
          path: /home/data/rabbitmq3.6.5/mnesia

      nodeSelector:
        nodename: i35

製做RabbitMQ service文件

apiVersion: v1
kind: Service
metadata:
  name: mq
  namespace: mq-rtest
  labels:
    name: mq
spec:
  type: NodePort
  ports:
  - port: 5672
    name: mq-port
    targetPort: 5672
    nodePort: 32072
  - port: 15672
    name: mq-mgr-port
    targetPort: 15672
    nodePort: 32172
  selector:
    name: mq
相關文章
相關標籤/搜索