system-upgrade-controller.yaml 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. apiVersion: v1
  2. kind: Namespace
  3. metadata:
  4. labels:
  5. pod-security.kubernetes.io/enforce: privileged
  6. name: system-upgrade
  7. ---
  8. apiVersion: v1
  9. kind: ServiceAccount
  10. metadata:
  11. name: system-upgrade
  12. namespace: system-upgrade
  13. ---
  14. apiVersion: rbac.authorization.k8s.io/v1
  15. kind: Role
  16. metadata:
  17. name: system-upgrade-controller
  18. namespace: system-upgrade
  19. rules:
  20. - apiGroups:
  21. - batch
  22. resources:
  23. - jobs
  24. verbs:
  25. - create
  26. - delete
  27. - deletecollection
  28. - patch
  29. - update
  30. - get
  31. - list
  32. - watch
  33. - apiGroups:
  34. - ""
  35. resources:
  36. - secrets
  37. verbs:
  38. - get
  39. - list
  40. - watch
  41. ---
  42. apiVersion: rbac.authorization.k8s.io/v1
  43. kind: ClusterRole
  44. metadata:
  45. name: system-upgrade-controller
  46. rules:
  47. - apiGroups:
  48. - batch
  49. resources:
  50. - jobs
  51. verbs:
  52. - get
  53. - list
  54. - watch
  55. - apiGroups:
  56. - apiextensions.k8s.io
  57. resources:
  58. - customresourcedefinitions
  59. verbs:
  60. - get
  61. - list
  62. - watch
  63. - create
  64. - patch
  65. - update
  66. - apiGroups:
  67. - ""
  68. resources:
  69. - namespaces
  70. - nodes
  71. verbs:
  72. - get
  73. - list
  74. - watch
  75. - apiGroups:
  76. - ""
  77. resources:
  78. - nodes
  79. verbs:
  80. - update
  81. - apiGroups:
  82. - upgrade.cattle.io
  83. resources:
  84. - plans
  85. - plans/status
  86. verbs:
  87. - get
  88. - list
  89. - watch
  90. - create
  91. - patch
  92. - update
  93. - delete
  94. ---
  95. apiVersion: rbac.authorization.k8s.io/v1
  96. kind: ClusterRole
  97. metadata:
  98. name: system-upgrade-controller-drainer
  99. rules:
  100. - apiGroups:
  101. - ""
  102. resources:
  103. - pods/eviction
  104. verbs:
  105. - create
  106. - apiGroups:
  107. - ""
  108. resources:
  109. - pods
  110. verbs:
  111. - get
  112. - list
  113. - delete
  114. - apiGroups:
  115. - ""
  116. resources:
  117. - nodes
  118. verbs:
  119. - get
  120. - patch
  121. - apiGroups:
  122. - apps
  123. resources:
  124. - statefulsets
  125. - daemonsets
  126. - replicasets
  127. verbs:
  128. - get
  129. - list
  130. ---
  131. apiVersion: rbac.authorization.k8s.io/v1
  132. kind: RoleBinding
  133. metadata:
  134. name: system-upgrade
  135. namespace: system-upgrade
  136. roleRef:
  137. apiGroup: rbac.authorization.k8s.io
  138. kind: Role
  139. name: system-upgrade-controller
  140. subjects:
  141. - kind: ServiceAccount
  142. name: system-upgrade
  143. namespace: system-upgrade
  144. ---
  145. apiVersion: rbac.authorization.k8s.io/v1
  146. kind: ClusterRoleBinding
  147. metadata:
  148. name: system-upgrade
  149. roleRef:
  150. apiGroup: rbac.authorization.k8s.io
  151. kind: ClusterRole
  152. name: system-upgrade-controller
  153. subjects:
  154. - kind: ServiceAccount
  155. name: system-upgrade
  156. namespace: system-upgrade
  157. ---
  158. apiVersion: rbac.authorization.k8s.io/v1
  159. kind: ClusterRoleBinding
  160. metadata:
  161. name: system-upgrade-drainer
  162. roleRef:
  163. apiGroup: rbac.authorization.k8s.io
  164. kind: ClusterRole
  165. name: system-upgrade-controller-drainer
  166. subjects:
  167. - kind: ServiceAccount
  168. name: system-upgrade
  169. namespace: system-upgrade
  170. ---
  171. apiVersion: v1
  172. data:
  173. SYSTEM_UPGRADE_CONTROLLER_DEBUG: "false"
  174. SYSTEM_UPGRADE_CONTROLLER_THREADS: "2"
  175. SYSTEM_UPGRADE_JOB_ACTIVE_DEADLINE_SECONDS: "900"
  176. SYSTEM_UPGRADE_JOB_BACKOFF_LIMIT: "99"
  177. SYSTEM_UPGRADE_JOB_IMAGE_PULL_POLICY: Always
  178. SYSTEM_UPGRADE_JOB_KUBECTL_IMAGE: kumahq/kubectl:v1.20.15
  179. SYSTEM_UPGRADE_JOB_PRIVILEGED: "true"
  180. SYSTEM_UPGRADE_JOB_TTL_SECONDS_AFTER_FINISH: "900"
  181. SYSTEM_UPGRADE_PLAN_POLLING_INTERVAL: 15m
  182. kind: ConfigMap
  183. metadata:
  184. name: default-controller-env
  185. namespace: system-upgrade
  186. ---
  187. apiVersion: apps/v1
  188. kind: Deployment
  189. metadata:
  190. name: system-upgrade-controller
  191. namespace: system-upgrade
  192. spec:
  193. selector:
  194. matchLabels:
  195. upgrade.cattle.io/controller: system-upgrade-controller
  196. template:
  197. metadata:
  198. labels:
  199. upgrade.cattle.io/controller: system-upgrade-controller
  200. spec:
  201. affinity:
  202. nodeAffinity:
  203. requiredDuringSchedulingIgnoredDuringExecution:
  204. nodeSelectorTerms:
  205. - matchExpressions:
  206. - key: node-role.kubernetes.io/control-plane
  207. operator: Exists
  208. containers:
  209. - env:
  210. - name: SYSTEM_UPGRADE_CONTROLLER_NAME
  211. valueFrom:
  212. fieldRef:
  213. fieldPath: metadata.labels['upgrade.cattle.io/controller']
  214. - name: SYSTEM_UPGRADE_CONTROLLER_NAMESPACE
  215. valueFrom:
  216. fieldRef:
  217. fieldPath: metadata.namespace
  218. envFrom:
  219. - configMapRef:
  220. name: default-controller-env
  221. image: rancher/system-upgrade-controller:v0.14.2
  222. imagePullPolicy: IfNotPresent
  223. name: system-upgrade-controller
  224. securityContext:
  225. allowPrivilegeEscalation: false
  226. capabilities:
  227. drop:
  228. - ALL
  229. runAsGroup: 65534
  230. runAsNonRoot: true
  231. runAsUser: 65534
  232. seccompProfile:
  233. type: RuntimeDefault
  234. volumeMounts:
  235. - mountPath: /etc/ssl
  236. name: etc-ssl
  237. readOnly: true
  238. - mountPath: /etc/pki
  239. name: etc-pki
  240. readOnly: true
  241. - mountPath: /etc/ca-certificates
  242. name: etc-ca-certificates
  243. readOnly: true
  244. - mountPath: /tmp
  245. name: tmp
  246. serviceAccountName: system-upgrade
  247. tolerations:
  248. - key: CriticalAddonsOnly
  249. operator: Exists
  250. - effect: NoSchedule
  251. key: node-role.kubernetes.io/master
  252. operator: Exists
  253. - effect: NoSchedule
  254. key: node-role.kubernetes.io/controlplane
  255. operator: Exists
  256. - effect: NoSchedule
  257. key: node-role.kubernetes.io/control-plane
  258. operator: Exists
  259. - effect: NoExecute
  260. key: node-role.kubernetes.io/etcd
  261. operator: Exists
  262. volumes:
  263. - hostPath:
  264. path: /etc/ssl
  265. type: DirectoryOrCreate
  266. name: etc-ssl
  267. - hostPath:
  268. path: /etc/pki
  269. type: DirectoryOrCreate
  270. name: etc-pki
  271. - hostPath:
  272. path: /etc/ca-certificates
  273. type: DirectoryOrCreate
  274. name: etc-ca-certificates
  275. - emptyDir: {}
  276. name: tmp