kubernetes-dashboard: add new recipe
authorJackie Huang <jackie.huang@windriver.com>
Mon, 21 Oct 2019 08:51:57 +0000 (16:51 +0800)
committerJackie Huang <jackie.huang@windriver.com>
Wed, 23 Oct 2019 07:24:54 +0000 (15:24 +0800)
Kubernetes Dashboard is a general purpose, web-based UI
for Kubernetes clusters. It allows users to manage applications
running in the cluster and troubleshoot them, as well as manage
the cluster itself.

Issue-ID: INF-4
Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
Change-Id: Iec7edf0d54ec074443d325c9ecc157a06430ad3a

meta-oran/recipes-base/packagegroups/packagegroup-oran.bb
meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard-admin.rbac.yaml [new file with mode: 0644]
meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard.yaml-set-the-NodePort-type.patch [new file with mode: 0644]
meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard_1.8.3.bb [new file with mode: 0644]

index 32b8fd2..e492d0f 100644 (file)
@@ -51,11 +51,13 @@ RDEPENDS_${PN}-k8s = "\
     flannel \
     iproute2-tc \
     kubernetes \
+    kubernetes-dashboard \
 "
 
 RRECOMMENDS_${PN}-k8s = "\
     flannel-img \
     kubernetes-img \
+    kubernetes-dashboard-img \
 "
 
 RDEPENDS_${PN}-vm = "\
diff --git a/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard-admin.rbac.yaml b/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard-admin.rbac.yaml
new file mode 100644 (file)
index 0000000..9fe2878
--- /dev/null
@@ -0,0 +1,24 @@
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  labels:
+    k8s-app: kubernetes-dashboard
+  name: kubernetes-dashboard-admin
+  namespace: kube-system
+  
+---
+apiVersion: rbac.authorization.k8s.io/v1beta1
+kind: ClusterRoleBinding
+metadata:
+  name: kubernetes-dashboard-admin
+  labels:
+    k8s-app: kubernetes-dashboard
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: cluster-admin
+subjects:
+- kind: ServiceAccount
+  name: kubernetes-dashboard-admin
+  namespace: kube-system
diff --git a/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard.yaml-set-the-NodePort-type.patch b/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard/kubernetes-dashboard.yaml-set-the-NodePort-type.patch
new file mode 100644 (file)
index 0000000..e689e40
--- /dev/null
@@ -0,0 +1,37 @@
+From 72c0b14297b4bcb1c8e9d78ab2a83dff1f0b4cb5 Mon Sep 17 00:00:00 2001
+From: Jackie Huang <jackie.huang@windriver.com>
+Date: Mon, 21 Oct 2019 16:26:20 +0800
+Subject: [PATCH] kubernetes-dashboard.yaml: set the NodePort type
+
+Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
+---
+ src/deploy/recommended/kubernetes-dashboard.yaml | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/deploy/recommended/kubernetes-dashboard.yaml b/src/deploy/recommended/kubernetes-dashboard.yaml
+index 73fcc23..878f6de 100644
+--- a/src/deploy/recommended/kubernetes-dashboard.yaml
++++ b/src/deploy/recommended/kubernetes-dashboard.yaml
+@@ -143,7 +143,7 @@ spec:
+           secretName: kubernetes-dashboard-certs
+       - name: tmp-volume
+         emptyDir: {}
+-      serviceAccountName: kubernetes-dashboard
++      serviceAccountName: kubernetes-dashboard-admin
+       # Comment the following tolerations if Dashboard must not be deployed on master
+       tolerations:
+       - key: node-role.kubernetes.io/master
+@@ -160,8 +160,10 @@ metadata:
+   name: kubernetes-dashboard
+   namespace: kube-system
+ spec:
++  type: NodePort
+   ports:
+     - port: 443
++      nodePort: 30443
+       targetPort: 8443
+   selector:
+     k8s-app: kubernetes-dashboard
+-- 
+2.7.4
+
diff --git a/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard_1.8.3.bb b/meta-oran/recipes-containers/kubernetes-plugins/kubernetes-dashboard_1.8.3.bb
new file mode 100644 (file)
index 0000000..6cf7211
--- /dev/null
@@ -0,0 +1,45 @@
+#
+# Copyright (C) 2019 Wind River Systems, Inc.
+#
+
+SUMMARY = "General-purpose web UI for Kubernetes clusters"
+DESCRIPTION = "\
+  Kubernetes Dashboard is a general purpose, web-based UI \
+  for Kubernetes clusters. It allows users to manage applications \
+  running in the cluster and troubleshoot them, as well as manage \
+  the cluster itself. \
+"
+HOMEPAGE = "https://github.com/kubernetes/dashboard"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e01b26bacfc2232046c90a330332b3"
+
+SRC_URI = "\
+    https://github.com/kubernetes/dashboard/archive/v${PV}.tar.gz;downloadfilename=${BPN}-v${PV}.tar.gz \
+    file://docker-img-kubernetes-dashboard-v1.8.3.tar.bz2;unpack=0 \
+    file://kubernetes-dashboard-admin.rbac.yaml \
+    file://kubernetes-dashboard.yaml-set-the-NodePort-type.patch \
+"
+
+SRC_URI[md5sum] = "8c3949eea7b9f7dd15d70d7d1c9af77b"
+SRC_URI[sha256sum] = "9096f86d4107a6d23f2cff5edd1acae2faf25719a343c319860fd6a7408f761d"
+
+S = "${WORKDIR}/dashboard-${PV}"
+
+PACKAGES =+ "${PN}-img"
+
+DOCKER_IMG = "/opt/docker_images/${BPN}"
+K8S_PLUGINS = "${sysconfdir}/kubernetes/plugins/${BPN}"
+
+do_install() {
+    install -d ${D}${K8S_PLUGINS}
+    install -m 644 ${WORKDIR}/kubernetes-dashboard-admin.rbac.yaml ${D}${K8S_PLUGINS}
+    install -m 644 ${S}/src/deploy/recommended/kubernetes-dashboard.yaml ${D}${K8S_PLUGINS}
+    install -m 644 ${S}/README.md ${D}${K8S_PLUGINS}
+
+    # Install the saved docker image
+    install -d ${D}${DOCKER_IMG}
+    install -m 644 ${WORKDIR}/docker-img-*.tar.bz2 ${D}${DOCKER_IMG}
+}
+
+FILES_${PN}-img = "${DOCKER_IMG}"