kubernetes-dashboard-v2.7.0.yaml 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309
  1. # Copyright 2017 The Kubernetes Authors.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. apiVersion: v1
  15. kind: Namespace
  16. metadata:
  17. name: kubernetes-dashboard
  18. ---
  19. apiVersion: v1
  20. kind: ServiceAccount
  21. metadata:
  22. labels:
  23. k8s-app: kubernetes-dashboard
  24. name: kubernetes-dashboard
  25. namespace: kubernetes-dashboard
  26. ---
  27. kind: Service
  28. apiVersion: v1
  29. metadata:
  30. labels:
  31. k8s-app: kubernetes-dashboard
  32. name: kubernetes-dashboard
  33. namespace: kubernetes-dashboard
  34. spec:
  35. ports:
  36. - port: 443
  37. targetPort: 8443
  38. nodePort: 32333
  39. type: NodePort
  40. selector:
  41. k8s-app: kubernetes-dashboard
  42. ---
  43. apiVersion: v1
  44. kind: Secret
  45. metadata:
  46. labels:
  47. k8s-app: kubernetes-dashboard
  48. name: kubernetes-dashboard-certs
  49. namespace: kubernetes-dashboard
  50. type: Opaque
  51. ---
  52. apiVersion: v1
  53. kind: Secret
  54. metadata:
  55. labels:
  56. k8s-app: kubernetes-dashboard
  57. name: kubernetes-dashboard-csrf
  58. namespace: kubernetes-dashboard
  59. type: Opaque
  60. data:
  61. csrf: ""
  62. ---
  63. apiVersion: v1
  64. kind: Secret
  65. metadata:
  66. labels:
  67. k8s-app: kubernetes-dashboard
  68. name: kubernetes-dashboard-key-holder
  69. namespace: kubernetes-dashboard
  70. type: Opaque
  71. ---
  72. kind: ConfigMap
  73. apiVersion: v1
  74. metadata:
  75. labels:
  76. k8s-app: kubernetes-dashboard
  77. name: kubernetes-dashboard-settings
  78. namespace: kubernetes-dashboard
  79. ---
  80. kind: Role
  81. apiVersion: rbac.authorization.k8s.io/v1
  82. metadata:
  83. labels:
  84. k8s-app: kubernetes-dashboard
  85. name: kubernetes-dashboard
  86. namespace: kubernetes-dashboard
  87. rules:
  88. # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
  89. - apiGroups: [""]
  90. resources: ["secrets"]
  91. resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
  92. verbs: ["get", "update", "delete"]
  93. # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
  94. - apiGroups: [""]
  95. resources: ["configmaps"]
  96. resourceNames: ["kubernetes-dashboard-settings"]
  97. verbs: ["get", "update"]
  98. # Allow Dashboard to get metrics.
  99. - apiGroups: [""]
  100. resources: ["services"]
  101. resourceNames: ["heapster", "dashboard-metrics-scraper"]
  102. verbs: ["proxy"]
  103. - apiGroups: [""]
  104. resources: ["services/proxy"]
  105. resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
  106. verbs: ["get"]
  107. ---
  108. kind: ClusterRole
  109. apiVersion: rbac.authorization.k8s.io/v1
  110. metadata:
  111. labels:
  112. k8s-app: kubernetes-dashboard
  113. name: kubernetes-dashboard
  114. rules:
  115. # Allow Metrics Scraper to get metrics from the Metrics server
  116. - apiGroups: ["metrics.k8s.io"]
  117. resources: ["pods", "nodes"]
  118. verbs: ["get", "list", "watch"]
  119. ---
  120. apiVersion: rbac.authorization.k8s.io/v1
  121. kind: RoleBinding
  122. metadata:
  123. labels:
  124. k8s-app: kubernetes-dashboard
  125. name: kubernetes-dashboard
  126. namespace: kubernetes-dashboard
  127. roleRef:
  128. apiGroup: rbac.authorization.k8s.io
  129. kind: Role
  130. name: kubernetes-dashboard
  131. subjects:
  132. - kind: ServiceAccount
  133. name: kubernetes-dashboard
  134. namespace: kubernetes-dashboard
  135. ---
  136. apiVersion: rbac.authorization.k8s.io/v1
  137. kind: ClusterRoleBinding
  138. metadata:
  139. name: kubernetes-dashboard
  140. roleRef:
  141. apiGroup: rbac.authorization.k8s.io
  142. kind: ClusterRole
  143. name: kubernetes-dashboard
  144. subjects:
  145. - kind: ServiceAccount
  146. name: kubernetes-dashboard
  147. namespace: kubernetes-dashboard
  148. ---
  149. kind: Deployment
  150. apiVersion: apps/v1
  151. metadata:
  152. labels:
  153. k8s-app: kubernetes-dashboard
  154. name: kubernetes-dashboard
  155. namespace: kubernetes-dashboard
  156. spec:
  157. replicas: 1
  158. revisionHistoryLimit: 10
  159. selector:
  160. matchLabels:
  161. k8s-app: kubernetes-dashboard
  162. template:
  163. metadata:
  164. labels:
  165. k8s-app: kubernetes-dashboard
  166. spec:
  167. securityContext:
  168. seccompProfile:
  169. type: RuntimeDefault
  170. containers:
  171. - name: kubernetes-dashboard
  172. image: kubernetesui/dashboard:v2.7.0
  173. imagePullPolicy: Always
  174. ports:
  175. - containerPort: 8443
  176. protocol: TCP
  177. args:
  178. - --auto-generate-certificates
  179. - --namespace=kubernetes-dashboard
  180. # Uncomment the following line to manually specify Kubernetes API server Host
  181. # If not specified, Dashboard will attempt to auto discover the API server and connect
  182. # to it. Uncomment only if the default does not work.
  183. # - --apiserver-host=http://my-address:port
  184. volumeMounts:
  185. - name: kubernetes-dashboard-certs
  186. mountPath: /certs
  187. # Create on-disk volume to store exec logs
  188. - mountPath: /tmp
  189. name: tmp-volume
  190. livenessProbe:
  191. httpGet:
  192. scheme: HTTPS
  193. path: /
  194. port: 8443
  195. initialDelaySeconds: 30
  196. timeoutSeconds: 30
  197. securityContext:
  198. allowPrivilegeEscalation: false
  199. readOnlyRootFilesystem: true
  200. runAsUser: 1001
  201. runAsGroup: 2001
  202. volumes:
  203. - name: kubernetes-dashboard-certs
  204. secret:
  205. secretName: kubernetes-dashboard-certs
  206. - name: tmp-volume
  207. emptyDir: {}
  208. serviceAccountName: kubernetes-dashboard
  209. nodeSelector:
  210. "kubernetes.io/os": linux
  211. # Comment the following tolerations if Dashboard must not be deployed on master
  212. tolerations:
  213. - key: node-role.kubernetes.io/master
  214. effect: NoSchedule
  215. ---
  216. kind: Service
  217. apiVersion: v1
  218. metadata:
  219. labels:
  220. k8s-app: dashboard-metrics-scraper
  221. name: dashboard-metrics-scraper
  222. namespace: kubernetes-dashboard
  223. spec:
  224. ports:
  225. - port: 8000
  226. targetPort: 8000
  227. selector:
  228. k8s-app: dashboard-metrics-scraper
  229. ---
  230. kind: Deployment
  231. apiVersion: apps/v1
  232. metadata:
  233. labels:
  234. k8s-app: dashboard-metrics-scraper
  235. name: dashboard-metrics-scraper
  236. namespace: kubernetes-dashboard
  237. spec:
  238. replicas: 1
  239. revisionHistoryLimit: 10
  240. selector:
  241. matchLabels:
  242. k8s-app: dashboard-metrics-scraper
  243. template:
  244. metadata:
  245. labels:
  246. k8s-app: dashboard-metrics-scraper
  247. spec:
  248. securityContext:
  249. seccompProfile:
  250. type: RuntimeDefault
  251. containers:
  252. - name: dashboard-metrics-scraper
  253. image: kubernetesui/metrics-scraper:v1.0.8
  254. ports:
  255. - containerPort: 8000
  256. protocol: TCP
  257. livenessProbe:
  258. httpGet:
  259. scheme: HTTP
  260. path: /
  261. port: 8000
  262. initialDelaySeconds: 30
  263. timeoutSeconds: 30
  264. volumeMounts:
  265. - mountPath: /tmp
  266. name: tmp-volume
  267. securityContext:
  268. allowPrivilegeEscalation: false
  269. readOnlyRootFilesystem: true
  270. runAsUser: 1001
  271. runAsGroup: 2001
  272. serviceAccountName: kubernetes-dashboard
  273. nodeSelector:
  274. "kubernetes.io/os": linux
  275. # Comment the following tolerations if Dashboard must not be deployed on master
  276. tolerations:
  277. - key: node-role.kubernetes.io/master
  278. effect: NoSchedule
  279. volumes:
  280. - name: tmp-volume
  281. emptyDir: {}