fix(k3s): repair iscsi-pvs node names and kubectl context after prole→knoe rename

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 <noreply@anthropic.com>
This commit is contained in:
chrisfu 2026-05-04 02:48:48 -07:00
parent 2df7c91926
commit 4f3280002c
3 changed files with 37 additions and 34 deletions

View File

@ -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

View File

@ -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"

View File

@ -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