forked from k-space/kube
		
	
		
			
				
	
	
		
			308 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			308 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| apiVersion: v1
 | |
| kind: Namespace
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
| apiVersion: v1
 | |
| kind: ServiceAccount
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard
 | |
| ---
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard-certs
 | |
| type: Opaque
 | |
| ---
 | |
| # kubernetes-dashboard-csrf
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard-csrf
 | |
| type: Opaque
 | |
| ---
 | |
| # kubernetes-dashboard-key-holder
 | |
| apiVersion: v1
 | |
| kind: Secret
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard-key-holder
 | |
| type: Opaque
 | |
| ---
 | |
| apiVersion: v1
 | |
| kind: ConfigMap
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard-settings
 | |
| data:
 | |
| ---
 | |
| kind: ClusterRole
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| metadata:
 | |
|   name: "kubernetes-dashboard-metrics"
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
| rules:
 | |
|   # Allow Metrics Scraper to get metrics from the Metrics server
 | |
|   - apiGroups: ["metrics.k8s.io"]
 | |
|     resources: ["pods", "nodes"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| ---
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: ClusterRoleBinding
 | |
| metadata:
 | |
|   name: "kubernetes-dashboard-metrics"
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
| roleRef:
 | |
|   apiGroup: rbac.authorization.k8s.io
 | |
|   kind: ClusterRole
 | |
|   name: kubernetes-dashboard-metrics
 | |
| subjects:
 | |
|   - kind: ServiceAccount
 | |
|     name: kubernetes-dashboard
 | |
|     namespace: kubernetes-dashboard
 | |
| ---
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: Role
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
| rules:
 | |
|     # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
 | |
|   - apiGroups: [""]
 | |
|     resources: ["secrets"]
 | |
|     resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs", "kubernetes-dashboard-csrf"]
 | |
|     verbs: ["get", "update", "delete"]
 | |
|     # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
 | |
|   - apiGroups: [""]
 | |
|     resources: ["configmaps"]
 | |
|     resourceNames: ["kubernetes-dashboard-settings"]
 | |
|     verbs: ["get", "update"]
 | |
|     # Allow Dashboard to get metrics.
 | |
|   - apiGroups: [""]
 | |
|     resources: ["services"]
 | |
|     resourceNames: ["heapster", "dashboard-metrics-scraper"]
 | |
|     verbs: ["proxy"]
 | |
|   - apiGroups: [""]
 | |
|     resources: ["services/proxy"]
 | |
|     resourceNames: ["heapster", "http:heapster:", "https:heapster:", "dashboard-metrics-scraper", "http:dashboard-metrics-scraper"]
 | |
|     verbs: ["get"]
 | |
| ---
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: RoleBinding
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
| roleRef:
 | |
|   apiGroup: rbac.authorization.k8s.io
 | |
|   kind: Role
 | |
|   name: kubernetes-dashboard
 | |
| subjects:
 | |
|   - kind: ServiceAccount
 | |
|     name: kubernetes-dashboard
 | |
|     namespace: kubernetes-dashboard
 | |
| ---
 | |
| kind: ClusterRole
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| metadata:
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|   name: kubernetes-dashboard
 | |
| rules:
 | |
|   # Other resources
 | |
|   - apiGroups: [""]
 | |
|     resources: ["nodes", "namespaces", "pods", "serviceaccounts", "services", "configmaps", "endpoints", "persistentvolumeclaims", "replicationcontrollers", "replicationcontrollers/scale", "persistentvolumeclaims", "persistentvolumes", "bindings", "events", "limitranges", "namespaces/status", "pods/log", "pods/status", "replicationcontrollers/status", "resourcequotas", "resourcequotas/status"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
|   
 | |
|   - apiGroups: ["apps"]
 | |
|     resources: ["daemonsets", "deployments", "deployments/scale", "replicasets", "replicasets/scale", "statefulsets"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["autoscaling"]
 | |
|     resources: ["horizontalpodautoscalers"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["batch"]
 | |
|     resources: ["cronjobs", "jobs"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["extensions"]
 | |
|     resources: ["daemonsets", "deployments", "deployments/scale", "networkpolicies", "replicasets", "replicasets/scale", "replicationcontrollers/scale"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["networking.k8s.io"]
 | |
|     resources: ["ingresses", "networkpolicies"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["policy"]
 | |
|     resources: ["poddisruptionbudgets"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["storage.k8s.io"]
 | |
|     resources: ["storageclasses", "volumeattachments"]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| 
 | |
|   - apiGroups: ["rbac.authorization.k8s.io"]
 | |
|     resources: ["clusterrolebindings", "clusterroles", "roles", "rolebindings", ]
 | |
|     verbs: ["get", "list", "watch"]
 | |
| ---
 | |
| apiVersion: rbac.authorization.k8s.io/v1
 | |
| kind: ClusterRoleBinding
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
| roleRef:
 | |
|   apiGroup: rbac.authorization.k8s.io
 | |
|   kind: ClusterRole
 | |
|   name: kubernetes-dashboard
 | |
| subjects:
 | |
| - kind: ServiceAccount
 | |
|   name: kubernetes-dashboard
 | |
|   namespace: kubernetes-dashboard
 | |
| ---
 | |
| apiVersion: v1
 | |
| kind: Service
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|     app.kubernetes.io/component: kubernetes-dashboard
 | |
|     kubernetes.io/cluster-service: "true"
 | |
| spec:
 | |
|   type: ClusterIP
 | |
|   ports:
 | |
|   - port: 80
 | |
|     targetPort: http
 | |
|     name: http
 | |
|   selector:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|     app.kubernetes.io/component: kubernetes-dashboard
 | |
| ---
 | |
| apiVersion: apps/v1
 | |
| kind: Deployment
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     app.kubernetes.io/name: kubernetes-dashboard
 | |
|     app.kubernetes.io/component: kubernetes-dashboard
 | |
| spec:
 | |
|   replicas: 1
 | |
|   strategy:
 | |
|     rollingUpdate:
 | |
|       maxSurge: 0
 | |
|       maxUnavailable: 1
 | |
|     type: RollingUpdate
 | |
|   selector:
 | |
|     matchLabels:
 | |
|       app.kubernetes.io/name: kubernetes-dashboard
 | |
|       app.kubernetes.io/component: kubernetes-dashboard
 | |
|   template:
 | |
|     metadata:
 | |
|       labels:
 | |
|         app.kubernetes.io/name: kubernetes-dashboard
 | |
|         app.kubernetes.io/component: kubernetes-dashboard
 | |
|     spec:
 | |
|       serviceAccountName: kubernetes-dashboard
 | |
|       containers:
 | |
|       - name: kubernetes-dashboard
 | |
|         image: "kubernetesui/dashboard:v2.4.0"
 | |
|         imagePullPolicy: IfNotPresent
 | |
|         args:
 | |
|           - --namespace=kubernetes-dashboard
 | |
|           - --metrics-provider=none
 | |
|           - --enable-skip-login
 | |
|           - --disable-settings-authorizer
 | |
|           - --enable-insecure-login
 | |
|           - --system-banner="Just hit skip!"
 | |
|         ports:
 | |
|         - name: http
 | |
|           containerPort: 9090
 | |
|           protocol: TCP
 | |
|         volumeMounts:
 | |
|         - name: kubernetes-dashboard-certs
 | |
|           mountPath: /certs
 | |
|           # Create on-disk volume to store exec logs
 | |
|         - mountPath: /tmp
 | |
|           name: tmp-volume
 | |
|         livenessProbe:
 | |
|           httpGet:
 | |
|             scheme: HTTP
 | |
|             path: /
 | |
|             port: 9090
 | |
|           initialDelaySeconds: 30
 | |
|           timeoutSeconds: 30
 | |
|         resources:
 | |
|           limits:
 | |
|             cpu: 2
 | |
|             memory: 200Mi
 | |
|           requests:
 | |
|             cpu: 100m
 | |
|             memory: 200Mi
 | |
|         securityContext:
 | |
|           allowPrivilegeEscalation: false
 | |
|           readOnlyRootFilesystem: true
 | |
|           runAsGroup: 2001
 | |
|           runAsUser: 1001
 | |
|       volumes:
 | |
|       - name: kubernetes-dashboard-certs
 | |
|         secret:
 | |
|           secretName: kubernetes-dashboard-certs
 | |
|       - name: tmp-volume
 | |
|         emptyDir: {}
 | |
| ---
 | |
| apiVersion: networking.k8s.io/v1
 | |
| kind: Ingress
 | |
| metadata:
 | |
|   name: kubernetes-dashboard
 | |
|   labels:
 | |
|     certManager: "true"
 | |
|     rewriteTarget: "true"
 | |
|   annotations:
 | |
|     external-dns.alpha.kubernetes.io/target: traefik.k-space.ee
 | |
|     kubernetes.io/ingress.class: traefik
 | |
|     traefik.ingress.kubernetes.io/router.entrypoints: websecure
 | |
|     traefik.ingress.kubernetes.io/router.middlewares: kubernetes-dashboard-sso@kubernetescrd
 | |
|     traefik.ingress.kubernetes.io/router.tls: "true"
 | |
| spec:
 | |
|   rules:
 | |
|     - host: dashboard.k-space.ee
 | |
|       http:
 | |
|         paths:
 | |
|           - path: /
 | |
|             pathType: ImplementationSpecific
 | |
|             backend:
 | |
|               service:
 | |
|                 name: kubernetes-dashboard
 | |
|                 port:
 | |
|                   number: 80
 | |
|   tls:
 | |
|     - hosts:
 | |
|       - "*.k-space.ee"
 | |
| ---
 | |
| apiVersion: codemowers.cloud/v1beta1
 | |
| kind: OIDCMiddlewareClient
 | |
| metadata:
 | |
|   name: sso
 | |
| spec:
 | |
|   displayName: Kubernetes dashboard
 | |
|   uri: 'https://dashboard.k-space.ee'
 | |
|   allowedGroups:
 | |
|     - k-space:kubernetes:developers
 | |
|     - k-space:kubernetes:admins
 | |
|   headerMapping:
 | |
|     email: Remote-Email
 | |
|     groups: Remote-Groups
 | |
|     name: Remote-Name
 | |
|     user: Remote-Username
 |