blob: 4458628aac1e99c4af13bd735662d020e1848a93 [file] [log] [blame]
Petr Ospalý67acfb52019-04-20 05:25:23 +02001# 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
15# ------------------- Dashboard Secrets ------------------- #
16
17apiVersion: v1
18kind: Secret
19metadata:
20 labels:
21 k8s-app: kubernetes-dashboard
22 name: kubernetes-dashboard-certs
23 namespace: kube-system
24type: Opaque
25
26---
27
28apiVersion: v1
29kind: Secret
30metadata:
31 labels:
32 k8s-app: kubernetes-dashboard
33 name: kubernetes-dashboard-csrf
34 namespace: kube-system
35type: Opaque
36data:
37 csrf: ""
38
39---
40# ------------------- Dashboard Service Account ------------------- #
41
42apiVersion: v1
43kind: ServiceAccount
44metadata:
45 labels:
46 k8s-app: kubernetes-dashboard
47 name: kubernetes-dashboard
48 namespace: kube-system
49
50---
51# ------------------- Dashboard Role & Role Binding ------------------- #
52
53kind: Role
54apiVersion: rbac.authorization.k8s.io/v1
55metadata:
56 name: kubernetes-dashboard-minimal
57 namespace: kube-system
58rules:
59 # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.
60- apiGroups: [""]
61 resources: ["secrets"]
62 verbs: ["create"]
63 # Allow Dashboard to create 'kubernetes-dashboard-settings' config map.
64- apiGroups: [""]
65 resources: ["configmaps"]
66 verbs: ["create"]
67 # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
68- apiGroups: [""]
69 resources: ["secrets"]
70 resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
71 verbs: ["get", "update", "delete"]
72 # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
73- apiGroups: [""]
74 resources: ["configmaps"]
75 resourceNames: ["kubernetes-dashboard-settings"]
76 verbs: ["get", "update"]
77 # Allow Dashboard to get metrics from heapster.
78- apiGroups: [""]
79 resources: ["services"]
80 resourceNames: ["heapster"]
81 verbs: ["proxy"]
82- apiGroups: [""]
83 resources: ["services/proxy"]
84 resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
85 verbs: ["get"]
86
87---
88apiVersion: rbac.authorization.k8s.io/v1
89kind: RoleBinding
90metadata:
91 name: kubernetes-dashboard-minimal
92 namespace: kube-system
93roleRef:
94 apiGroup: rbac.authorization.k8s.io
95 kind: Role
96 name: kubernetes-dashboard-minimal
97subjects:
98- kind: ServiceAccount
99 name: kubernetes-dashboard
100 namespace: kube-system
101
102---
103# ------------------- Dashboard Deployment ------------------- #
104
105kind: Deployment
106apiVersion: apps/v1
107metadata:
108 labels:
109 k8s-app: kubernetes-dashboard
110 name: kubernetes-dashboard
111 namespace: kube-system
112spec:
113 replicas: 1
114 revisionHistoryLimit: 10
115 selector:
116 matchLabels:
117 k8s-app: kubernetes-dashboard
118 template:
119 metadata:
120 labels:
121 k8s-app: kubernetes-dashboard
122 spec:
123 containers:
124 - name: kubernetes-dashboard
125 image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
126 ports:
127 - containerPort: 8443
128 protocol: TCP
129 args:
130 - --auto-generate-certificates
131 # Uncomment the following line to manually specify Kubernetes API server Host
132 # If not specified, Dashboard will attempt to auto discover the API server and connect
133 # to it. Uncomment only if the default does not work.
134 # - --apiserver-host=http://my-address:port
135 volumeMounts:
136 - name: kubernetes-dashboard-certs
137 mountPath: /certs
138 # Create on-disk volume to store exec logs
139 - mountPath: /tmp
140 name: tmp-volume
141 livenessProbe:
142 httpGet:
143 scheme: HTTPS
144 path: /
145 port: 8443
146 initialDelaySeconds: 30
147 timeoutSeconds: 30
148 volumes:
149 - name: kubernetes-dashboard-certs
150 secret:
151 secretName: kubernetes-dashboard-certs
152 - name: tmp-volume
153 emptyDir: {}
154 serviceAccountName: kubernetes-dashboard
155 # Comment the following tolerations if Dashboard must not be deployed on master
156 tolerations:
157 - key: node-role.kubernetes.io/master
158 effect: NoSchedule
159
160---
161# ------------------- Dashboard Service ------------------- #
162
163kind: Service
164apiVersion: v1
165metadata:
166 labels:
167 k8s-app: kubernetes-dashboard
168 name: kubernetes-dashboard
169 namespace: kube-system
170spec:
171 ports:
172 - port: 443
173 targetPort: 8443
174 selector:
175 k8s-app: kubernetes-dashboard
176{% if rke_dashboard_exposed %}
177 type: NodePort
178{% endif %}