From 8abe8541df32343f15c15be037c4ea625c0b84d1 Mon Sep 17 00:00:00 2001 From: greysoh Date: Mon, 15 Jul 2024 18:59:33 -0400 Subject: [PATCH] fix: Fixes various issues. --- kubernetes/dashboard/adminbind.yml | 12 ++++++++++++ kubernetes/dashboard/adminuser.yml | 11 ++--------- kubernetes/dashboard/project.ini | 15 ++++++++++++--- kubernetes/kubesync.py | 19 +++++++++++++------ kubernetes/open-dash.sh | 4 ++++ 5 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 kubernetes/dashboard/adminbind.yml create mode 100755 kubernetes/open-dash.sh diff --git a/kubernetes/dashboard/adminbind.yml b/kubernetes/dashboard/adminbind.yml new file mode 100644 index 0000000..23c1190 --- /dev/null +++ b/kubernetes/dashboard/adminbind.yml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: admin-user +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: admin-user + namespace: kubernetes-dashboard \ No newline at end of file diff --git a/kubernetes/dashboard/adminuser.yml b/kubernetes/dashboard/adminuser.yml index 2db2b96..219059b 100644 --- a/kubernetes/dashboard/adminuser.yml +++ b/kubernetes/dashboard/adminuser.yml @@ -1,12 +1,5 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding +apiVersion: v1 +kind: ServiceAccount metadata: - name: admin -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cluster-admin -subjects: -- kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard \ No newline at end of file diff --git a/kubernetes/dashboard/project.ini b/kubernetes/dashboard/project.ini index 4e82bd0..26d59ce 100644 --- a/kubernetes/dashboard/project.ini +++ b/kubernetes/dashboard/project.ini @@ -23,12 +23,21 @@ repo = kubernetes-dashboard/kubernetes-dashboard namespace = kubernetes-dashboard create_namespace = true -### Users -[k3s_dash_admin_user] -description = Kubernetes Dashboard Admin Account +### User Related Tasks +[k3s_dash_admin_bind] +description = Kubernetes Dashboard Admin Binding mode = k3s depends_on = k3s_dash +[#k3s_dash_admin_bind/k3s] +mode = install +yml_path = ./adminbind.yml + +[k3s_dash_admin_user] +description = Kubernetes Dashboard Admin User +mode = k3s +depends_on = k3s_dash_admin_bind + [#k3s_dash_admin_user/k3s] mode = install yml_path = ./adminuser.yml \ No newline at end of file diff --git a/kubernetes/kubesync.py b/kubernetes/kubesync.py index d4fd565..a636ef7 100755 --- a/kubernetes/kubesync.py +++ b/kubernetes/kubesync.py @@ -314,7 +314,7 @@ def generate_change_set(projects: list[Project]) -> dict[str, list[str]]: changeset_path = f"{base_changeset_path}/gen_{len(dir_contents) + 1}/" try: - shutil.copytree(f"{base_changeset_path}/gen_{len(dir_contents) - 1}/", changeset_path) + shutil.copytree(f"{base_changeset_path}/gen_{len(dir_contents)}/", changeset_path) except FileNotFoundError: os.mkdir(changeset_path) os.mkdir(f"{changeset_path}/k3hashes") @@ -350,12 +350,12 @@ def generate_change_set(projects: list[Project]) -> dict[str, list[str]]: Path(f"{changeset_path}/helmhashes/{meta_id}").touch() changeset_values[project.name] = [ - f"helm repo update {project.helm_settings.repo}", + f"helm repo update {project.helm_settings.repo[:project.helm_settings.repo.index("/")]}", f"helm upgrade --install {project.helm_settings.name} {project.helm_settings.repo} {"--create-namespace" if project.helm_settings.create_namespace else ""} --namespace {project.helm_settings.namespace_name}" ] elif project.helm_settings.mode == "upgrade" or mode == "update": changeset_values[project.name] = [ - f"helm repo update {project.helm_settings.repo}", + f"helm repo update {project.helm_settings.repo[:project.helm_settings.repo.index("/")]}", f"helm upgrade {project.helm_settings.name} {project.helm_settings.repo} {"--create-namespace" if project.helm_settings.create_namespace else ""} --namespace {project.helm_settings.namespace_name}" ] case "k3s": @@ -378,10 +378,13 @@ def generate_change_set(projects: list[Project]) -> dict[str, list[str]]: data = kube_file.read() file_hash = hashlib.md5(data).hexdigest() - with open(f"{changeset_path}/k3hashes/{meta_id}", "rw") as kube_metaid_file: - if kube_metaid_file.read() == file_hash: + with open(f"{changeset_path}/k3hashes/{meta_id}", "r+") as kube_metaid_file: + read_hash = kube_metaid_file.read() + + if read_hash == file_hash: continue else: + kube_metaid_file.seek(0) kube_metaid_file.write(file_hash) changeset_values[project.name] = [ @@ -425,6 +428,10 @@ if not projects: print("Generating changesets...") change_set = generate_change_set(projects) +if not change_set: + print("No changes detected.") + exit(0) + if args.dryrun_only: sigint_handler(None, None) @@ -441,4 +448,4 @@ else: print(f"Applying changeset for '{project_name}'...") for command in change_set[project_name]: - os.system(command) \ No newline at end of file + os.system(command) diff --git a/kubernetes/open-dash.sh b/kubernetes/open-dash.sh new file mode 100755 index 0000000..4462ac2 --- /dev/null +++ b/kubernetes/open-dash.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +kubectl -n kubernetes-dashboard create token admin-user +echo +kubectl -n kubernetes-dashboard port-forward svc/kubernetes-dashboard-kong-proxy 8443:443