You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

254 lines
5.2 KiB

  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. name: metallb-system
  5. labels:
  6. app: metallb
  7. ---
  8. apiVersion: v1
  9. kind: ServiceAccount
  10. metadata:
  11. namespace: metallb-system
  12. name: controller
  13. labels:
  14. app: metallb
  15. ---
  16. apiVersion: v1
  17. kind: ServiceAccount
  18. metadata:
  19. namespace: metallb-system
  20. name: speaker
  21. labels:
  22. app: metallb
  23. ---
  24. apiVersion: rbac.authorization.k8s.io/v1
  25. kind: ClusterRole
  26. metadata:
  27. name: metallb-system:controller
  28. labels:
  29. app: metallb
  30. rules:
  31. - apiGroups: [""]
  32. resources: ["services"]
  33. verbs: ["get", "list", "watch", "update"]
  34. - apiGroups: [""]
  35. resources: ["services/status"]
  36. verbs: ["update"]
  37. - apiGroups: [""]
  38. resources: ["events"]
  39. verbs: ["create", "patch"]
  40. ---
  41. apiVersion: rbac.authorization.k8s.io/v1
  42. kind: ClusterRole
  43. metadata:
  44. name: metallb-system:speaker
  45. labels:
  46. app: metallb
  47. rules:
  48. - apiGroups: [""]
  49. resources: ["services", "endpoints", "nodes"]
  50. verbs: ["get", "list", "watch"]
  51. ---
  52. apiVersion: rbac.authorization.k8s.io/v1
  53. kind: Role
  54. metadata:
  55. namespace: metallb-system
  56. name: leader-election
  57. labels:
  58. app: metallb
  59. rules:
  60. - apiGroups: [""]
  61. resources: ["endpoints"]
  62. resourceNames: ["metallb-speaker"]
  63. verbs: ["get", "update"]
  64. - apiGroups: [""]
  65. resources: ["endpoints"]
  66. verbs: ["create"]
  67. ---
  68. apiVersion: rbac.authorization.k8s.io/v1
  69. kind: Role
  70. metadata:
  71. namespace: metallb-system
  72. name: config-watcher
  73. labels:
  74. app: metallb
  75. rules:
  76. - apiGroups: [""]
  77. resources: ["configmaps"]
  78. verbs: ["get", "list", "watch"]
  79. - apiGroups: [""]
  80. resources: ["events"]
  81. verbs: ["create"]
  82. ---
  83. ## Role bindings
  84. apiVersion: rbac.authorization.k8s.io/v1
  85. kind: ClusterRoleBinding
  86. metadata:
  87. name: metallb-system:controller
  88. labels:
  89. app: metallb
  90. subjects:
  91. - kind: ServiceAccount
  92. name: controller
  93. namespace: metallb-system
  94. roleRef:
  95. apiGroup: rbac.authorization.k8s.io
  96. kind: ClusterRole
  97. name: metallb-system:controller
  98. ---
  99. apiVersion: rbac.authorization.k8s.io/v1
  100. kind: ClusterRoleBinding
  101. metadata:
  102. name: metallb-system:speaker
  103. labels:
  104. app: metallb
  105. subjects:
  106. - kind: ServiceAccount
  107. name: speaker
  108. namespace: metallb-system
  109. roleRef:
  110. apiGroup: rbac.authorization.k8s.io
  111. kind: ClusterRole
  112. name: metallb-system:speaker
  113. ---
  114. apiVersion: rbac.authorization.k8s.io/v1
  115. kind: RoleBinding
  116. metadata:
  117. namespace: metallb-system
  118. name: config-watcher
  119. labels:
  120. app: metallb
  121. subjects:
  122. - kind: ServiceAccount
  123. name: controller
  124. - kind: ServiceAccount
  125. name: speaker
  126. roleRef:
  127. apiGroup: rbac.authorization.k8s.io
  128. kind: Role
  129. name: config-watcher
  130. ---
  131. apiVersion: rbac.authorization.k8s.io/v1
  132. kind: RoleBinding
  133. metadata:
  134. namespace: metallb-system
  135. name: leader-election
  136. labels:
  137. app: metallb
  138. subjects:
  139. - kind: ServiceAccount
  140. name: speaker
  141. roleRef:
  142. apiGroup: rbac.authorization.k8s.io
  143. kind: Role
  144. name: leader-election
  145. ---
  146. apiVersion: apps/v1beta2
  147. kind: DaemonSet
  148. metadata:
  149. namespace: metallb-system
  150. name: speaker
  151. labels:
  152. app: metallb
  153. component: speaker
  154. spec:
  155. selector:
  156. matchLabels:
  157. app: metallb
  158. component: speaker
  159. template:
  160. metadata:
  161. labels:
  162. app: metallb
  163. component: speaker
  164. annotations:
  165. prometheus.io/scrape: "true"
  166. prometheus.io/port: "{{ metallb.port }}"
  167. spec:
  168. serviceAccountName: speaker
  169. terminationGracePeriodSeconds: 0
  170. hostNetwork: true
  171. containers:
  172. - name: speaker
  173. image: metallb/speaker:v0.6.2
  174. imagePullPolicy: IfNotPresent
  175. args:
  176. - --port={{ metallb.port }}
  177. - --config=config
  178. env:
  179. - name: METALLB_NODE_NAME
  180. valueFrom:
  181. fieldRef:
  182. fieldPath: spec.nodeName
  183. ports:
  184. - name: monitoring
  185. containerPort: {{ metallb.port }}
  186. resources:
  187. limits:
  188. cpu: {{ metallb.limits.cpu }}
  189. memory: {{ metallb.limits.memory }}
  190. securityContext:
  191. allowPrivilegeEscalation: false
  192. readOnlyRootFilesystem: true
  193. capabilities:
  194. drop:
  195. - all
  196. add:
  197. - net_raw
  198. ---
  199. apiVersion: apps/v1beta2
  200. kind: Deployment
  201. metadata:
  202. namespace: metallb-system
  203. name: controller
  204. labels:
  205. app: metallb
  206. component: controller
  207. spec:
  208. revisionHistoryLimit: 3
  209. selector:
  210. matchLabels:
  211. app: metallb
  212. component: controller
  213. template:
  214. metadata:
  215. labels:
  216. app: metallb
  217. component: controller
  218. annotations:
  219. prometheus.io/scrape: "true"
  220. prometheus.io/port: "{{ metallb.port }}"
  221. spec:
  222. serviceAccountName: controller
  223. terminationGracePeriodSeconds: 0
  224. securityContext:
  225. runAsNonRoot: true
  226. runAsUser: 65534 # nobody
  227. containers:
  228. - name: controller
  229. image: metallb/controller:v0.6.2
  230. imagePullPolicy: IfNotPresent
  231. args:
  232. - --port={{ metallb.port }}
  233. - --config=config
  234. ports:
  235. - name: monitoring
  236. containerPort: {{ metallb.port }}
  237. resources:
  238. limits:
  239. cpu: {{ metallb.limits.cpu }}
  240. memory: {{ metallb.limits.memory }}
  241. securityContext:
  242. allowPrivilegeEscalation: false
  243. capabilities:
  244. drop:
  245. - all
  246. readOnlyRootFilesystem: true
  247. ---