From 17a3fc3586cc3b3331d6559b8ee551dbc4bbc66e Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Sun, 1 Jan 2023 17:20:30 -0500 Subject: [PATCH] feat: include the kubernetes dashboard in the monitoring namespace Signed-off-by: Devin Buhl --- .vscode/extensions.json | 2 - README.md | 10 ++++ .../kubernetes-dashboard/app/helmrelease.yaml | 47 +++++++++++++++++++ .../app/kustomization.yaml | 7 +++ .../kubernetes-dashboard/app/rbac.yaml | 41 ++++++++++++++++ .../monitoring/kubernetes-dashboard/ks.yaml | 22 +++++++++ kubernetes/apps/monitoring/kustomization.yaml | 7 +++ kubernetes/apps/monitoring/namespace.yaml | 7 +++ .../helm/kubernetes-dashboard.yaml | 9 ++++ .../flux/repositories/helm/kustomization.yaml | 1 + 10 files changed, 151 insertions(+), 2 deletions(-) create mode 100644 kubernetes/apps/monitoring/kubernetes-dashboard/app/helmrelease.yaml create mode 100644 kubernetes/apps/monitoring/kubernetes-dashboard/app/kustomization.yaml create mode 100644 kubernetes/apps/monitoring/kubernetes-dashboard/app/rbac.yaml create mode 100644 kubernetes/apps/monitoring/kubernetes-dashboard/ks.yaml create mode 100644 kubernetes/apps/monitoring/kustomization.yaml create mode 100644 kubernetes/apps/monitoring/namespace.yaml create mode 100644 kubernetes/flux/repositories/helm/kubernetes-dashboard.yaml diff --git a/.vscode/extensions.json b/.vscode/extensions.json index a91c63d4..90c54827 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,7 +4,6 @@ "britesnow.vscode-toggle-quotes", "fcrespo82.markdown-table-formatter", "mitchdenny.ecdc", - "ms-kubernetes-tools.vscode-kubernetes-tools", "redhat.ansible", "signageos.signageos-vscode-sops", "will-stone.in-any-case", @@ -12,6 +11,5 @@ "EditorConfig.editorconfig", "HashiCorp.terraform", "PKief.material-icon-theme", - "Weaveworks.vscode-gitops-tools" ] } diff --git a/README.md b/README.md index 3f0c1d14..08b2bd46 100644 --- a/README.md +++ b/README.md @@ -523,6 +523,16 @@ The benefits of a public repository include: 10. Optionally set your repository to Private in your repository settings. +### 💨 Kubernetes Dashboard + +Included in your cluster is the [Kubernetes Dashboard](https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/). Inorder to log into this you will have to get the secret token from the cluster using the command below. + +```sh +kubectl -n monitoring get secret kubernetes-dashboard -o jsonpath='{.data.token}' +``` + +You should be able to access the dashboard at `https://kubernetes.${SECRET_DOMAIN}` + ## 👉 Help - [Discussions](https://github.com/onedr0p/flux-cluster-template/discussions) diff --git a/kubernetes/apps/monitoring/kubernetes-dashboard/app/helmrelease.yaml b/kubernetes/apps/monitoring/kubernetes-dashboard/app/helmrelease.yaml new file mode 100644 index 00000000..b7ca320c --- /dev/null +++ b/kubernetes/apps/monitoring/kubernetes-dashboard/app/helmrelease.yaml @@ -0,0 +1,47 @@ +--- +apiVersion: helm.toolkit.fluxcd.io/v2beta1 +kind: HelmRelease +metadata: + name: kubernetes-dashboard + namespace: monitoring +spec: + interval: 15m + chart: + spec: + chart: kubernetes-dashboard + version: 6.0.0 + sourceRef: + kind: HelmRepository + name: kubernetes-dashboard + namespace: flux-system + install: + createNamespace: true + remediation: + retries: 3 + upgrade: + remediation: + retries: 3 + values: + env: + TZ: "${TIMEZONE}" + extraArgs: + - --enable-skip-login + - --disable-settings-authorizer + - --enable-insecure-login + - --token-ttl=43200 + ingress: + enabled: true + className: nginx + annotations: + cert-manager.io/cluster-issuer: letsencrypt-staging + hajimari.io/icon: mdi:kubernetes + hosts: + - &host "kubernetes.${SECRET_DOMAIN}" + tls: + - hosts: + - *host + secretName: kubernetes-dashboard-tls + metricsScraper: + enabled: true + serviceMonitor: + enabled: false diff --git a/kubernetes/apps/monitoring/kubernetes-dashboard/app/kustomization.yaml b/kubernetes/apps/monitoring/kubernetes-dashboard/app/kustomization.yaml new file mode 100644 index 00000000..f3f3cf60 --- /dev/null +++ b/kubernetes/apps/monitoring/kubernetes-dashboard/app/kustomization.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: monitoring +resources: + - ./rbac.yaml + - ./helmrelease.yaml diff --git a/kubernetes/apps/monitoring/kubernetes-dashboard/app/rbac.yaml b/kubernetes/apps/monitoring/kubernetes-dashboard/app/rbac.yaml new file mode 100644 index 00000000..d2150429 --- /dev/null +++ b/kubernetes/apps/monitoring/kubernetes-dashboard/app/rbac.yaml @@ -0,0 +1,41 @@ +# For dashboard sign in token: +# kubectl -n monitoring get secret kubernetes-dashboard -o jsonpath='{.data.token}' +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + name: kubernetes-dashboard + namespace: monitoring + labels: + app.kubernetes.io/managed-by: Helm + annotations: + meta.helm.sh/release-name: kubernetes-dashboard + meta.helm.sh/release-namespace: monitoring +secrets: + - name: kubernetes-dashboard +--- +apiVersion: v1 +kind: Secret +type: kubernetes.io/service-account-token +metadata: + name: kubernetes-dashboard + namespace: monitoring + labels: + app.kubernetes.io/managed-by: Helm + annotations: + meta.helm.sh/release-name: kubernetes-dashboard + meta.helm.sh/release-namespace: monitoring + kubernetes.io/service-account.name: kubernetes-dashboard +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: system:kubernetes-dashboard +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: + - kind: ServiceAccount + name: kubernetes-dashboard + namespace: monitoring diff --git a/kubernetes/apps/monitoring/kubernetes-dashboard/ks.yaml b/kubernetes/apps/monitoring/kubernetes-dashboard/ks.yaml new file mode 100644 index 00000000..b86a6278 --- /dev/null +++ b/kubernetes/apps/monitoring/kubernetes-dashboard/ks.yaml @@ -0,0 +1,22 @@ +--- +apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 +kind: Kustomization +metadata: + name: cluster-apps-kubernetes-dashboard + namespace: flux-system + labels: + substitution.flux.home.arpa/enabled: "true" +spec: + path: ./kubernetes/apps/monitoring/kubernetes-dashboard/app + prune: true + sourceRef: + kind: GitRepository + name: home-kubernetes + healthChecks: + - apiVersion: helm.toolkit.fluxcd.io/v2beta1 + kind: HelmRelease + name: kubernetes-dashboard + namespace: monitoring + interval: 30m + retryInterval: 1m + timeout: 3m diff --git a/kubernetes/apps/monitoring/kustomization.yaml b/kubernetes/apps/monitoring/kustomization.yaml new file mode 100644 index 00000000..6f8b0918 --- /dev/null +++ b/kubernetes/apps/monitoring/kustomization.yaml @@ -0,0 +1,7 @@ +--- +# yaml-language-server: $schema=https://json.schemastore.org/kustomization +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - ./namespace.yaml + - ./kubernetes-dashboard/ks.yaml diff --git a/kubernetes/apps/monitoring/namespace.yaml b/kubernetes/apps/monitoring/namespace.yaml new file mode 100644 index 00000000..ef4dd87a --- /dev/null +++ b/kubernetes/apps/monitoring/namespace.yaml @@ -0,0 +1,7 @@ +--- +apiVersion: v1 +kind: Namespace +metadata: + name: monitoring + labels: + kustomize.toolkit.fluxcd.io/prune: disabled diff --git a/kubernetes/flux/repositories/helm/kubernetes-dashboard.yaml b/kubernetes/flux/repositories/helm/kubernetes-dashboard.yaml new file mode 100644 index 00000000..d63e74b7 --- /dev/null +++ b/kubernetes/flux/repositories/helm/kubernetes-dashboard.yaml @@ -0,0 +1,9 @@ +--- +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: HelmRepository +metadata: + name: kubernetes-dashboard + namespace: flux-system +spec: + interval: 1h + url: https://kubernetes.github.io/dashboard/ diff --git a/kubernetes/flux/repositories/helm/kustomization.yaml b/kubernetes/flux/repositories/helm/kustomization.yaml index 7bd24cd8..93f0ab4b 100644 --- a/kubernetes/flux/repositories/helm/kustomization.yaml +++ b/kubernetes/flux/repositories/helm/kustomization.yaml @@ -9,6 +9,7 @@ resources: - ./ingress-nginx.yaml - ./jetstack.yaml - ./k8s-gateway.yaml + - ./kubernetes-dashboard.yaml - ./metallb.yaml - ./metrics-server.yaml - ./stakater.yaml