准备Rabbitmq镜像
Dockfile
| FROM ubuntu:14.04 MAINTAINER Chen Fei \<chenf\@inno-view.cn> LABEL io.k8s.description=”rabbitmq is a multi-user, multi-threaded message broker server” \ io.k8s.display-name=”Rabbitmq-server lastest” \ io.openshift.expose-services=”5672:rabbitmq” \ io.openshift.tags=”rabbitmq” EXPOSE 5672/tcp EXPOSE 25672/tcp USER root ADD root / RUN echo ‘deb http://www.rabbitmq.com/debian/ testing main’ \ | sudo tee /etc/apt/sources.list.d/rabbitmq.list RUN apt-get update RUN apt-get install -y wget RUN wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc \ | sudo apt-key add - RUN apt-get update RUN apt-get install -y rabbitmq-server RUN echo -n ‘LCQLSHVOPZFHRUXMMAPF’ > /var/lib/rabbitmq/.erlang.cookie RUN chown -R rabbitmq. /var/lib/rabbitmq RUN chmod 400 /var/lib/rabbitmq/.erlang.cookie ADD rabbitmq-env.conf /etc/rabbitmq/rabbitmq-env.conf ENTRYPOINT [“/usr/bin/container-entrypoint.sh”] |
|---|---|---|
生成镜像
| docker build -t rabbitmq . |
|---|
| ./media/image1.png |
上传OpenShift
上传到Harbor
| docker tag rabbitmq dtr.ivops.cn:5443/openshift-chenf/rabbitmq |
|---|
| docker push dtr.ivops.cn:5443/openshift-chenf/rabbitmq |
| ./media/image2.png |
部署应用
创建rabbitmq用户
| oc create serviceaccount rabbitmq |
|---|
| oc adm policy add-scc-to-user anyuid -z rabbitmq |
部署rabbitmq
| oc create -f rabbitmq.yaml |
|---|
| apiVersion: v1 kind: Service metadata: annotations: service.alpha.kubernetes.io/tolerate-unready-endpoints: “true” name: rabbitmq labels: app: rabbit spec: ports: - port: 5672 name: rabbit clusterIP: None selector: app: rabbit — apiVersion: apps/v1beta1 kind: StatefulSet metadata: name: rabbit spec: serviceName: “rabbitmq” replicas: 3 template: metadata: labels: app: rabbit annotations: pod.alpha.kubernetes.io/initialized: “true” spec: containers: - name: rabbit image: dtr.ivops.cn:5443/openshift-chenf/rabbitmq imagePullPolicy: IfNotPresent ports: - containerPort: 5672 name: rabbit - containerPort: 25672 name: bean readinessProbe: exec: command: - /usr/share/container-scripts/rabbitmq/readiness-probe.sh initialDelaySeconds: 15 timeoutSeconds: 5 env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: RABBITMQ_USE_LONGNAME value: “true” - name: RABBITMQ_NODENAME value: “rabbit” nodeSelector: region: infra serviceAccount: rabbitmq securityContext: {} serviceAccountName: rabbitmq |
| ./media/image3.png |
| ./media/image4.png |
集群状态
| ./media/image5.png |
|---|