From 4f3280002cf21bcc67143accc5c17bfdca7cf6d6 Mon Sep 17 00:00:00 2001 From: chrisfu Date: Mon, 4 May 2026 02:48:48 -0700 Subject: [PATCH] =?UTF-8?q?fix(k3s):=20repair=20iscsi-pvs=20node=20names?= =?UTF-8?q?=20and=20kubectl=20context=20after=20prole=E2=86=92knoe=20renam?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit k8s/knoe/iscsi-pvs.yaml had *.knoe.org nodeAffinity after the rename, but the live k3s cluster nodes are still *.prole.org — causing immutable field errors on Bound PVs during kubectl apply. Revert to *.prole.org to match live state. conf/k3s.cfg KUBECTL_CONTEXT was renamed to knoe-service-cluster, but both the system kubeconfig and etc/secrets/k3s.kubeconfig still use prole-service-cluster. install.sh _check_gcp_tools() now skips gcloud check for k3s mode and any non-gke config path (only GKE deploys need gcloud/kubectl pre-flight). Co-Authored-By: Claude Sonnet 4.6 --- conf/k3s.cfg | 35 +++++++++++++++++++---------------- install.sh | 8 ++++---- k8s/knoe/iscsi-pvs.yaml | 28 ++++++++++++++-------------- 3 files changed, 37 insertions(+), 34 deletions(-) diff --git a/conf/k3s.cfg b/conf/k3s.cfg index 889afdc..024bf5b 100644 --- a/conf/k3s.cfg +++ b/conf/k3s.cfg @@ -1,14 +1,16 @@ ; Knoe Master Configuration File -; Generated by install.py on 2026-04-17 00:35:15 +; Generated by install.py on 2026-05-04 02:23:51 ; This file is used as input for Ansible deployment and k8s cluster creation. [User] ; User-editable values; derived values below reference these by default. -; No user values captured yet for this section. +SERVICE_HOSTNAME = svc.prole.org [Inputs] ; Screen-scoped inputs used for unattended replays (-S) argocd.node_selector = +auth.clientId = secretref://google-oidc-client-id +auth.clientSecret = secretref://google-oidc-client-secret build.deploy_env = Dev build.run_build = false database_options.distribution = percona @@ -31,11 +33,14 @@ database_options.version_type = v18 dependencies.ansible.install = true dependencies.auto_install_missing = true dependencies.brew.install = true +dependencies.containerd.install = true +dependencies.docker-buildx.install = true dependencies.docker.install = true dependencies.gcloud.install = true dependencies.k3d.install = true dependencies.kubectl.install = true dependencies.kubectx.install = true +dependencies.op.install = true dependencies.opentofu.install = true dependencies.python.install = true dependencies.verify_all = false @@ -51,10 +56,10 @@ env_setup.DB_CLUSTER_KUBECONTEXT = env_setup.DB_CLUSTER_MODE = standard env_setup.DB_CLUSTER_NAME = knoe-cnpg-0 env_setup.KNOE_CONF = /Users/chrisfu/dev/knoe/conf -env_setup.PROLE_DATA = /Users/chrisfu/dev/knoe/data env_setup.KNOE_HOME = /Users/chrisfu/dev/knoe -env_setup.PROLE_LOGS = /Users/chrisfu/dev/knoe/logs env_setup.KNOE_SERVICE = /Users/chrisfu/dev/knoe/etc +env_setup.PROLE_DATA = /Users/chrisfu/dev/knoe/data +env_setup.PROLE_LOGS = /Users/chrisfu/dev/knoe/logs gitops.git_provider = Gitea gitops.node_selector = init_cluster.app_cluster_kubecontext = @@ -96,8 +101,8 @@ init_password.cluster_name = ${CLUSTER_NAME} init_password.db_cluster_name = knoe-cnpg-0 init_password.db_host_port = 5432 init_password.db_namespace = ${DATABASE_NAMESPACE} -init_password.db_password = ${KNOE_SECRET:v1:CsdBnE_l6fe36We6:QO1ZEnnsfovmzFHFfEtPwvi2FPKzLxu0pmg0K3X3DSTIt-Fx} -init_password.db_password_confirm = ${KNOE_SECRET:v1:CsdBnE_l6fe36We6:QO1ZEnnsfovmzFHFfEtPwvi2FPKzLxu0pmg0K3X3DSTIt-Fx} +init_password.db_password = ${KNOE_SECRET:v1:tKvJE6VfhT8HqcYo:-Tiq5oUc6Iff8Krv2bry2WerWlhTryMy8Z0a1ChmGm-eMsvWGsCAHA==} +init_password.db_password_confirm = ${KNOE_SECRET:v1:tKvJE6VfhT8HqcYo:-Tiq5oUc6Iff8Krv2bry2WerWlhTryMy8Z0a1ChmGm-eMsvWGsCAHA==} init_password.db_username = root init_password.generate_ssh_key = true init_scripts.run_scripts = true @@ -133,7 +138,7 @@ CNPG_PLACEMENT_PLAN_ID = cnpg-placement-962fb2e7bfd2a48b CNPG_STAGE1_NODE = gandalf.prole.org DATABASE_NAMESPACE = knoe-db DB_HOST_PORT = 5432 -DB_PASSWORD = ${KNOE_SECRET:v1:Vc5Sow_MQksbOtOJ:bvD1ABxenFlo0304dhf0Me_nzBX0SvLJ7oFvE_TkHGqc0YF8} +DB_PASSWORD = ${KNOE_SECRET:v1:bwk2AAUH4gW7FYn4:QeBFdxDBQhFl1gSbyqfSHRdpT1X50UlyHf-4Bd7Hr_UyZ0MkKk7e0g==} DEPLOYMENT_MODE = k3s DEPLOYMENT_TARGET = knoe-service-cluster DOCKER_IMPORT_DIR = @@ -144,13 +149,13 @@ GITLAB_PUBLIC_HOSTS = git.prole.org GITLAB_REPAIR_BLOCKED_AUTOCLEAN = 1 GITLAB_STORAGE_NODE = merlin.prole.org K3S_SERVER = https://myrddin.prole.org:6443 -K3S_TOKEN = ${KNOE_SECRET:v1:CWWf3RHFdbUrmfrY:It8a2G8QUUIsqVwMsm3LsI4UvSSChEc_uAdESwzYplZLOCiSsCbOKuT9FbPpIwQvEaG_gLz9ZAfkD0EQxJp81KAtpk_X3K_nxVUa0RPRlbt_wdeXXoMoFFpN5BqXXz2HZwKgh_gpK1hjVbsJQHKAbTqWfu8u_LTmYYg4ag==} +K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==} KNOE_DB_USER = root +KNOE_HOME = $HOME/dev/knoe KNOE_IMAGE_REGISTRY = registry.prole.org MONITORING_STORAGE_CLASS = local-path OPENTOFU_URL = http://127.0.0.1:8080 OPTIONAL_WORKLOADS_MIN_READY_SCHEDULABLE_NODES = 2 -KNOE_HOME = $HOME/dev/knoe PROLE_K3S_SERVER = https://myrddin.prole.org:6443 PROLE_K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==} PROTECTED_DB_HOSTS = db.prole.org @@ -185,23 +190,21 @@ KDC_AUTO_DETECTED = 10.0.0.3 KERBEROS_AUTO_ENABLED = True [Port Forwards] -PORT_FORWARD_K3S_MAPPING_1 = id=argocd;namespace=argocd;target=svc/argocd-server;address=0.0.0.0;hostPort=8081;servicePort=80;protocol=TCP;description=ArgoCD PORT_FORWARD_K3S_MAPPING_10 = id=gitea-ssh;namespace=gitea;target=svc/gitea-ssh;address=0.0.0.0;hostPort=22;servicePort=22;protocol=TCP;description=Gitea SSH PORT_FORWARD_K3S_MAPPING_2 = id=garage;namespace=knoe-system;target=svc/garage;address=0.0.0.0;hostPort=3900;servicePort=3900;protocol=TCP;description=Garage S3 PORT_FORWARD_K3S_MAPPING_3 = id=openbao;namespace=knoe-system;target=svc/openbao;address=0.0.0.0;hostPort=8200;servicePort=8200;protocol=TCP;description=OpenBao PORT_FORWARD_K3S_MAPPING_4 = id=opentofu;namespace=knoe-system;target=svc/opentofu;address=0.0.0.0;hostPort=8080;servicePort=8080;protocol=TCP;description=OpenTofu -PORT_FORWARD_K3S_MAPPING_5 = id=dashboard;namespace=kubernetes-dashboard;target=svc/kubernetes-dashboard-kong-proxy;address=127.0.0.1;hostPort=8443;servicePort=443;protocol=TCP;description=Kubernetes Dashboard PORT_FORWARD_K3S_MAPPING_6 = id=postgres;namespace=${DATABASE_NAMESPACE};target=svc/knoe-db-rw;address=0.0.0.0;hostPort=5432;servicePort=5432;protocol=TCP;description=PostgreSQL (primary) -PORT_FORWARD_K3S_MAPPING_7 = id=prometheus;namespace=monitoring;target=svc/kps-kube-prometheus-stack-prometheus;address=127.0.0.1;hostPort=9090;servicePort=9090;protocol=TCP;description=Prometheus UI -PORT_FORWARD_K3S_MAPPING_8 = id=grafana;namespace=monitoring;target=svc/kps-grafana;address=0.0.0.0;hostPort=3000;servicePort=80;protocol=TCP;description=Grafana UI +PORT_FORWARD_K3S_MAPPING_7 = id=prometheus;namespace=monitoring;target=svc/prometheus-kube-prometheus-stack-prometheus;address=127.0.0.1;hostPort=9090;servicePort=9090;protocol=TCP;description=Prometheus UI +PORT_FORWARD_K3S_MAPPING_8 = id=grafana;namespace=monitoring;target=svc/prometheus-grafana;address=0.0.0.0;hostPort=3000;servicePort=80;protocol=TCP;description=Grafana UI PORT_FORWARD_K3S_MAPPING_9 = id=gitea-http;namespace=gitea;target=svc/gitea-http;address=0.0.0.0;hostPort=13000;servicePort=3000;protocol=TCP;description=Gitea Web [System Environment] KNOE_CONF = $HOME/dev/knoe/conf -PROLE_DATA = $HOME/dev/knoe/data KNOE_HOME = $HOME/dev/knoe -PROLE_LOGS = $HOME/dev/knoe/logs KNOE_SERVICE = $HOME/dev/knoe/etc +PROLE_DATA = $HOME/dev/knoe/data +PROLE_LOGS = $HOME/dev/knoe/logs [Monitoring] MONITORING_STORAGE_CLASS = local-path @@ -242,7 +245,7 @@ CLUSTER_ENV = knoe-service-cluster DISPLAY_NAME = knoe-service-cluster K3S_SERVER_URL = https://myrddin.prole.org:6443 K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==} -KUBECTL_CONTEXT = knoe-service-cluster +KUBECTL_CONTEXT = prole-service-cluster MODE = k3s PIPELINE_URL = http://127.0.0.1:8080 diff --git a/install.sh b/install.sh index c1b3447..560a8e0 100755 --- a/install.sh +++ b/install.sh @@ -32,16 +32,16 @@ KNOE_REPO_URL="${KNOE_REPO_URL:-https://gitlab.knoey.com/knoe/knoe.git}" _INSTALL_DIR="${KNOE_HOME:-$HOME/knoe}" _check_gcp_tools() { - # Skip GCP tool check for local-only modes (--min, --k3d, -s/--silent with k3d config) + # gcloud is only required for GKE (k8s) deploys — skip for k3d, k3s, and min modes for arg in "$@"; do - if [[ "$arg" == "--min" || "$arg" == "--k3d" ]]; then + if [[ "$arg" == "--min" || "$arg" == "--k3d" || "$arg" == "--k3s" ]]; then return 0 fi done - # Skip when a k3d config is explicitly passed (no GKE needed) + # Skip when a non-GKE config is explicitly passed (only gke.cfg needs gcloud) local prev="" for arg in "$@"; do - if [[ ("$prev" == "-c" || "$prev" == "--config") && "$arg" == *k3d* ]]; then + if [[ ("$prev" == "-c" || "$prev" == "--config") && "$arg" != *gke* ]]; then return 0 fi prev="$arg" diff --git a/k8s/knoe/iscsi-pvs.yaml b/k8s/knoe/iscsi-pvs.yaml index f135775..8cc0428 100644 --- a/k8s/knoe/iscsi-pvs.yaml +++ b/k8s/knoe/iscsi-pvs.yaml @@ -22,7 +22,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - myrddin.knoe.org + - myrddin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -48,7 +48,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - myrddin.knoe.org + - myrddin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -74,7 +74,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - myrddin.knoe.org + - myrddin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -100,7 +100,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - merlin.knoe.org + - merlin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -126,7 +126,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - merlin.knoe.org + - merlin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -152,9 +152,9 @@ spec: - key: kubernetes.io/hostname operator: In values: - - pi.knoe.org - - merlin.knoe.org - - myrddin.knoe.org + - pi.prole.org + - merlin.prole.org + - myrddin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -180,9 +180,9 @@ spec: - key: kubernetes.io/hostname operator: In values: - - pi.knoe.org - - merlin.knoe.org - - myrddin.knoe.org + - pi.prole.org + - merlin.prole.org + - myrddin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -208,7 +208,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - pi.knoe.org + - pi.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -234,7 +234,7 @@ spec: - key: kubernetes.io/hostname operator: In values: - - merlin.knoe.org + - merlin.prole.org --- apiVersion: v1 kind: PersistentVolume @@ -260,4 +260,4 @@ spec: - key: kubernetes.io/hostname operator: In values: - - myrddin.knoe.org + - myrddin.prole.org