Guest User

Untitled

a guest
Nov 28th, 2018
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.12 KB | None | 0 0
  1. ---
  2. # -------------------- Rabbitmq Secret ------------------- #
  3. apiVersion: v1
  4. kind: Secret
  5. metadata:
  6. name: rabbitmq
  7. labels:
  8. app: rabbitmq
  9. release: "rabbitmq"
  10. type: Opaque
  11. data:
  12. rabbitmq-password: "c2VjcmV0"
  13. rabbitmq-erlang-cookie: "eks4RlV1a1p0b0xLOU9MbzRtYWRCT0RsU0hzd090aEM="
  14. ---
  15. # ------------------ Rabbitmq Configmap ----------------- #
  16. apiVersion: v1
  17. kind: ConfigMap
  18. metadata:
  19. name: rabbitmq-config
  20. labels:
  21. app: rabbitmq
  22. release: "rabbitmq"
  23. data:
  24. enabled_plugins: |-
  25. [rabbitmq_management, rabbitmq_peer_discovery_k8s].
  26. rabbitmq.conf: |-
  27. ##username and password
  28. default_user=admin
  29. default_pass=CHANGEME
  30. ## Clustering
  31. cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
  32. cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
  33. cluster_formation.node_cleanup.interval = 10
  34. cluster_formation.node_cleanup.only_log_warning = true
  35. cluster_partition_handling = autoheal
  36. ## queue master locator
  37. queue_master_locator=min-masters
  38. ## enable guest user
  39. loopback_users.guest = false
  40. ---
  41. # --------------- Rabbitmq ServiceAccount --------------- #
  42. apiVersion: v1
  43. kind: ServiceAccount
  44. metadata:
  45. name: rabbitmq
  46. labels:
  47. app: rabbitmq
  48. release: "rabbitmq"
  49. ---
  50. # --------------------- Rabbitmq Role -------------------- #
  51. kind: Role
  52. apiVersion: rbac.authorization.k8s.io/v1
  53. metadata:
  54. name: rabbitmq-endpoint-reader
  55. labels:
  56. app: rabbitmq
  57. release: "rabbitmq"
  58. rules:
  59. - apiGroups: [""]
  60. resources: ["endpoints"]
  61. verbs: ["get"]
  62. ---
  63. # ----------------- Rabbitmq Role Binding ---------------- #
  64. kind: RoleBinding
  65. apiVersion: rbac.authorization.k8s.io/v1
  66. metadata:
  67. name: rabbitmq-endpoint-reader
  68. labels:
  69. app: rabbitmq
  70. release: "rabbitmq"
  71. subjects:
  72. - kind: ServiceAccount
  73. name: rabbitmq
  74. roleRef:
  75. apiGroup: rbac.authorization.k8s.io
  76. kind: Role
  77. name: rabbitmq-endpoint-reader
  78. ---
  79. # --------------- Rabbitmq Service Headless ------------- #
  80. apiVersion: v1
  81. kind: Service
  82. metadata:
  83. name: rabbitmq-headless
  84. labels:
  85. app: rabbitmq
  86. release: "rabbitmq"
  87. spec:
  88. clusterIP: None
  89. ports:
  90. - name: epmd
  91. port: 4369
  92. targetPort: epmd
  93. - name: amqp
  94. port: 5672
  95. targetPort: amqp
  96. - name: dist
  97. port: 25672
  98. targetPort: dist
  99. - name: stats
  100. port: 15672
  101. targetPort: stats
  102. selector:
  103. app: rabbitmq
  104. release: "rabbitmq"
  105. ---
  106. # -------------------- Rabbitmq Service ----------------- #
  107. apiVersion: v1
  108. kind: Service
  109. metadata:
  110. name: rabbitmq
  111. labels:
  112. app: rabbitmq
  113. release: "rabbitmq"
  114. spec:
  115. type: ClusterIP
  116. ports:
  117. - name: epmd
  118. port: 4369
  119. targetPort: epmd
  120. - name: amqp
  121. port: 5672
  122. targetPort: amqp
  123. - name: dist
  124. port: 25672
  125. targetPort: dist
  126. - name: stats
  127. port: 15672
  128. targetPort: stats
  129. selector:
  130. app: rabbitmq
  131. release: "rabbitmq"
  132. ---
  133. # ----------------- Rabbitmq StatefulSet ---------------- #
  134. apiVersion: apps/v1beta2
  135. kind: StatefulSet
  136. metadata:
  137. name: rabbitmq
  138. labels:
  139. app: rabbitmq
  140. release: "rabbitmq"
  141. spec:
  142. serviceName: rabbitmq-headless
  143. replicas: 1
  144. selector:
  145. matchLabels:
  146. app: rabbitmq
  147. release: "rabbitmq"
  148. template:
  149. metadata:
  150. labels:
  151. app: rabbitmq
  152. release: "rabbitmq"
  153.  
  154. spec:
  155. serviceAccountName: rabbitmq
  156. terminationGracePeriodSeconds: 10
  157. containers:
  158. - name: rabbitmq
  159. image: docker.io/bitnami/rabbitmq:3.7.9
  160. imagePullPolicy: "IfNotPresent"
  161. command:
  162. - bash
  163. - -ec
  164. - |
  165. mkdir -p /opt/bitnami/rabbitmq/.rabbitmq/
  166. mkdir -p /opt/bitnami/rabbitmq/etc/rabbitmq/
  167. #persist the erlang cookie in both places for server and cli tools
  168. echo $RABBITMQ_ERL_COOKIE > /opt/bitnami/rabbitmq/var/lib/rabbitmq/.erlang.cookie
  169. cp /opt/bitnami/rabbitmq/var/lib/rabbitmq/.erlang.cookie /opt/bitnami/rabbitmq/.rabbitmq/
  170. #change permission so only the user has access to the cookie file
  171. chmod 600 /opt/bitnami/rabbitmq/.rabbitmq/.erlang.cookie /opt/bitnami/rabbitmq/var/lib/rabbitmq/.erlang.cookie
  172. #copy the mounted configuration to both places
  173. cp /opt/bitnami/rabbitmq/conf/* /opt/bitnami/rabbitmq/etc/rabbitmq
  174. # Apply resources limits
  175. ulimit -n "${RABBITMQ_ULIMIT_NOFILES}"
  176. #replace the default password that is generated
  177. sed -i "s/CHANGEME/$RABBITMQ_PASSWORD/g" /opt/bitnami/rabbitmq/etc/rabbitmq/rabbitmq.conf
  178. # Move logs to stdout
  179. ln -sF /dev/stdout /opt/bitnami/rabbitmq/var/log/rabbitmq/rabbit@${MY_POD_IP}.log
  180. ln -sF /dev/stdout /opt/bitnami/rabbitmq/var/log/rabbitmq/rabbit@${MY_POD_IP}_upgrade.log
  181. exec rabbitmq-server
  182. volumeMounts:
  183. - name: config-volume
  184. mountPath: /opt/bitnami/rabbitmq/conf
  185. - name: data
  186. mountPath: /opt/bitnami/rabbitmq/var/lib/rabbitmq/
  187. ports:
  188. - name: epmd
  189. containerPort: 4369
  190. - name: amqp
  191. containerPort: 5672
  192. - name: dist
  193. containerPort: 25672
  194. - name: stats
  195. containerPort: 15672
  196. livenessProbe:
  197. exec:
  198. command: ["sh", "-c", "test \"$(curl -sS -f --user admin:$RABBITMQ_PASSWORD 127.0.0.1:15672/api/healthchecks/node)\" = '{\"status\":\"ok\"}'"]
  199. initialDelaySeconds: 120
  200. timeoutSeconds: 5
  201. periodSeconds: 5
  202. failureThreshold: 6
  203. successThreshold: 1
  204. readinessProbe:
  205. exec:
  206. command: ["sh", "-c", "test \"$(curl -sS -f --user admin:$RABBITMQ_PASSWORD 127.0.0.1:15672/api/healthchecks/node)\" = '{\"status\":\"ok\"}'"]
  207. initialDelaySeconds: 10
  208. timeoutSeconds: 3
  209. periodSeconds: 5
  210. failureThreshold: 3
  211. successThreshold: 1
  212. env:
  213. - name: MY_POD_IP
  214. valueFrom:
  215. fieldRef:
  216. fieldPath: status.podIP
  217. - name: MY_POD_NAME
  218. valueFrom:
  219. fieldRef:
  220. fieldPath: metadata.name
  221. - name: MY_POD_NAMESPACE
  222. valueFrom:
  223. fieldRef:
  224. fieldPath: metadata.namespace
  225. - name: K8S_SERVICE_NAME
  226. value: "rabbitmq-headless"
  227. - name: K8S_ADDRESS_TYPE
  228. value: ip
  229. - name: RABBITMQ_NODENAME
  230. value: "rabbit@$(MY_POD_IP)"
  231. - name: RABBITMQ_ULIMIT_NOFILES
  232. value: "65536"
  233. - name: RABBITMQ_USE_LONGNAME
  234. value: "true"
  235. - name: RABBITMQ_ERL_COOKIE
  236. valueFrom:
  237. secretKeyRef:
  238. name: rabbitmq
  239. key: rabbitmq-erlang-cookie
  240. - name: RABBITMQ_PASSWORD
  241. valueFrom:
  242. secretKeyRef:
  243. name: rabbitmq
  244. key: rabbitmq-password
  245. securityContext:
  246. fsGroup: 1001
  247. runAsUser: 1001
  248. volumes:
  249. - name: config-volume
  250. configMap:
  251. name: rabbitmq-config
  252. items:
  253. - key: rabbitmq.conf
  254. path: rabbitmq.conf
  255. - key: enabled_plugins
  256. path: enabled_plugins
  257. - name: data
  258. emptyDir: {}
  259. ---
Add Comment
Please, Sign In to add comment