metallb.yaml 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399
  1. # from https://github.com/metallb/metallb/tree/v0.9.3/manifests namespace.yaml and metallb.yaml
  2. apiVersion: v1
  3. kind: Namespace
  4. metadata:
  5. name: metallb-system
  6. labels:
  7. app: metallb
  8. ---
  9. apiVersion: policy/v1beta1
  10. kind: PodSecurityPolicy
  11. metadata:
  12. labels:
  13. app: metallb
  14. name: controller
  15. namespace: metallb-system
  16. spec:
  17. allowPrivilegeEscalation: false
  18. allowedCapabilities: []
  19. allowedHostPaths: []
  20. defaultAddCapabilities: []
  21. defaultAllowPrivilegeEscalation: false
  22. fsGroup:
  23. ranges:
  24. - max: 65535
  25. min: 1
  26. rule: MustRunAs
  27. hostIPC: false
  28. hostNetwork: false
  29. hostPID: false
  30. privileged: false
  31. readOnlyRootFilesystem: true
  32. requiredDropCapabilities:
  33. - ALL
  34. runAsUser:
  35. ranges:
  36. - max: 65535
  37. min: 1
  38. rule: MustRunAs
  39. seLinux:
  40. rule: RunAsAny
  41. supplementalGroups:
  42. ranges:
  43. - max: 65535
  44. min: 1
  45. rule: MustRunAs
  46. volumes:
  47. - configMap
  48. - secret
  49. - emptyDir
  50. ---
  51. apiVersion: policy/v1beta1
  52. kind: PodSecurityPolicy
  53. metadata:
  54. labels:
  55. app: metallb
  56. name: speaker
  57. namespace: metallb-system
  58. spec:
  59. allowPrivilegeEscalation: false
  60. allowedCapabilities:
  61. - NET_ADMIN
  62. - NET_RAW
  63. - SYS_ADMIN
  64. allowedHostPaths: []
  65. defaultAddCapabilities: []
  66. defaultAllowPrivilegeEscalation: false
  67. fsGroup:
  68. rule: RunAsAny
  69. hostIPC: false
  70. hostNetwork: true
  71. hostPID: false
  72. hostPorts:
  73. - max: 7472
  74. min: 7472
  75. privileged: true
  76. readOnlyRootFilesystem: true
  77. requiredDropCapabilities:
  78. - ALL
  79. runAsUser:
  80. rule: RunAsAny
  81. seLinux:
  82. rule: RunAsAny
  83. supplementalGroups:
  84. rule: RunAsAny
  85. volumes:
  86. - configMap
  87. - secret
  88. - emptyDir
  89. ---
  90. apiVersion: v1
  91. kind: ServiceAccount
  92. metadata:
  93. labels:
  94. app: metallb
  95. name: controller
  96. namespace: metallb-system
  97. ---
  98. apiVersion: v1
  99. kind: ServiceAccount
  100. metadata:
  101. labels:
  102. app: metallb
  103. name: speaker
  104. namespace: metallb-system
  105. ---
  106. apiVersion: rbac.authorization.k8s.io/v1
  107. kind: ClusterRole
  108. metadata:
  109. labels:
  110. app: metallb
  111. name: metallb-system:controller
  112. rules:
  113. - apiGroups:
  114. - ''
  115. resources:
  116. - services
  117. verbs:
  118. - get
  119. - list
  120. - watch
  121. - update
  122. - apiGroups:
  123. - ''
  124. resources:
  125. - services/status
  126. verbs:
  127. - update
  128. - apiGroups:
  129. - ''
  130. resources:
  131. - events
  132. verbs:
  133. - create
  134. - patch
  135. - apiGroups:
  136. - policy
  137. resourceNames:
  138. - controller
  139. resources:
  140. - podsecuritypolicies
  141. verbs:
  142. - use
  143. ---
  144. apiVersion: rbac.authorization.k8s.io/v1
  145. kind: ClusterRole
  146. metadata:
  147. labels:
  148. app: metallb
  149. name: metallb-system:speaker
  150. rules:
  151. - apiGroups:
  152. - ''
  153. resources:
  154. - services
  155. - endpoints
  156. - nodes
  157. verbs:
  158. - get
  159. - list
  160. - watch
  161. - apiGroups:
  162. - ''
  163. resources:
  164. - events
  165. verbs:
  166. - create
  167. - patch
  168. - apiGroups:
  169. - policy
  170. resourceNames:
  171. - speaker
  172. resources:
  173. - podsecuritypolicies
  174. verbs:
  175. - use
  176. ---
  177. apiVersion: rbac.authorization.k8s.io/v1
  178. kind: Role
  179. metadata:
  180. labels:
  181. app: metallb
  182. name: config-watcher
  183. namespace: metallb-system
  184. rules:
  185. - apiGroups:
  186. - ''
  187. resources:
  188. - configmaps
  189. verbs:
  190. - get
  191. - list
  192. - watch
  193. ---
  194. apiVersion: rbac.authorization.k8s.io/v1
  195. kind: Role
  196. metadata:
  197. labels:
  198. app: metallb
  199. name: pod-lister
  200. namespace: metallb-system
  201. rules:
  202. - apiGroups:
  203. - ''
  204. resources:
  205. - pods
  206. verbs:
  207. - list
  208. ---
  209. apiVersion: rbac.authorization.k8s.io/v1
  210. kind: ClusterRoleBinding
  211. metadata:
  212. labels:
  213. app: metallb
  214. name: metallb-system:controller
  215. roleRef:
  216. apiGroup: rbac.authorization.k8s.io
  217. kind: ClusterRole
  218. name: metallb-system:controller
  219. subjects:
  220. - kind: ServiceAccount
  221. name: controller
  222. namespace: metallb-system
  223. ---
  224. apiVersion: rbac.authorization.k8s.io/v1
  225. kind: ClusterRoleBinding
  226. metadata:
  227. labels:
  228. app: metallb
  229. name: metallb-system:speaker
  230. roleRef:
  231. apiGroup: rbac.authorization.k8s.io
  232. kind: ClusterRole
  233. name: metallb-system:speaker
  234. subjects:
  235. - kind: ServiceAccount
  236. name: speaker
  237. namespace: metallb-system
  238. ---
  239. apiVersion: rbac.authorization.k8s.io/v1
  240. kind: RoleBinding
  241. metadata:
  242. labels:
  243. app: metallb
  244. name: config-watcher
  245. namespace: metallb-system
  246. roleRef:
  247. apiGroup: rbac.authorization.k8s.io
  248. kind: Role
  249. name: config-watcher
  250. subjects:
  251. - kind: ServiceAccount
  252. name: controller
  253. - kind: ServiceAccount
  254. name: speaker
  255. ---
  256. apiVersion: rbac.authorization.k8s.io/v1
  257. kind: RoleBinding
  258. metadata:
  259. labels:
  260. app: metallb
  261. name: pod-lister
  262. namespace: metallb-system
  263. roleRef:
  264. apiGroup: rbac.authorization.k8s.io
  265. kind: Role
  266. name: pod-lister
  267. subjects:
  268. - kind: ServiceAccount
  269. name: speaker
  270. ---
  271. apiVersion: apps/v1
  272. kind: DaemonSet
  273. metadata:
  274. labels:
  275. app: metallb
  276. component: speaker
  277. name: speaker
  278. namespace: metallb-system
  279. spec:
  280. selector:
  281. matchLabels:
  282. app: metallb
  283. component: speaker
  284. template:
  285. metadata:
  286. annotations:
  287. prometheus.io/port: '7472'
  288. prometheus.io/scrape: 'true'
  289. labels:
  290. app: metallb
  291. component: speaker
  292. spec:
  293. containers:
  294. - args:
  295. - --port=7472
  296. - --config=config
  297. env:
  298. - name: METALLB_NODE_NAME
  299. valueFrom:
  300. fieldRef:
  301. fieldPath: spec.nodeName
  302. - name: METALLB_HOST
  303. valueFrom:
  304. fieldRef:
  305. fieldPath: status.hostIP
  306. - name: METALLB_ML_BIND_ADDR
  307. valueFrom:
  308. fieldRef:
  309. fieldPath: status.podIP
  310. - name: METALLB_ML_LABELS
  311. value: "app=metallb,component=speaker"
  312. - name: METALLB_ML_NAMESPACE
  313. valueFrom:
  314. fieldRef:
  315. fieldPath: metadata.namespace
  316. - name: METALLB_ML_SECRET_KEY
  317. valueFrom:
  318. secretKeyRef:
  319. name: memberlist
  320. key: secretkey
  321. image: metallb/speaker:v0.9.3
  322. imagePullPolicy: Always
  323. name: speaker
  324. ports:
  325. - containerPort: 7472
  326. name: monitoring
  327. resources:
  328. limits:
  329. cpu: 100m
  330. memory: 100Mi
  331. securityContext:
  332. allowPrivilegeEscalation: false
  333. capabilities:
  334. add:
  335. - NET_ADMIN
  336. - NET_RAW
  337. - SYS_ADMIN
  338. drop:
  339. - ALL
  340. readOnlyRootFilesystem: true
  341. hostNetwork: true
  342. nodeSelector:
  343. beta.kubernetes.io/os: linux
  344. serviceAccountName: speaker
  345. terminationGracePeriodSeconds: 2
  346. tolerations:
  347. - effect: NoSchedule
  348. key: node-role.kubernetes.io/master
  349. ---
  350. apiVersion: apps/v1
  351. kind: Deployment
  352. metadata:
  353. labels:
  354. app: metallb
  355. component: controller
  356. name: controller
  357. namespace: metallb-system
  358. spec:
  359. revisionHistoryLimit: 3
  360. selector:
  361. matchLabels:
  362. app: metallb
  363. component: controller
  364. template:
  365. metadata:
  366. annotations:
  367. prometheus.io/port: '7472'
  368. prometheus.io/scrape: 'true'
  369. labels:
  370. app: metallb
  371. component: controller
  372. spec:
  373. containers:
  374. - args:
  375. - --port=7472
  376. - --config=config
  377. image: metallb/controller:v0.9.3
  378. imagePullPolicy: Always
  379. name: controller
  380. ports:
  381. - containerPort: 7472
  382. name: monitoring
  383. resources:
  384. limits:
  385. cpu: 100m
  386. memory: 100Mi
  387. securityContext:
  388. allowPrivilegeEscalation: false
  389. capabilities:
  390. drop:
  391. - all
  392. readOnlyRootFilesystem: true
  393. nodeSelector:
  394. beta.kubernetes.io/os: linux
  395. securityContext:
  396. runAsNonRoot: true
  397. runAsUser: 65534
  398. serviceAccountName: controller
  399. terminationGracePeriodSeconds: 0