feat(infra): replace GitLab with Gitea on git.prole.org

- Remove GitLab hostname/storage config from k3s.cfg; GitLab is gone.
- Update GITEA_HOSTNAME git-internal → git.prole.org
- Fix MONITORING_STORAGE_CLASS local-path → merlin-local-iscsi-prometheus
- Kong: route git.prole.org → gitea-http.gitea:3000
- Add svc-knoe-ingress.yaml as source-of-truth for the prole ingress (was
  missing; live object named svc-knoe-ingress, routes git.prole.org through
  Traefik → Kong → Gitea)
- DNS: add git.prole.org A record → 73.15.20.166 (public front-door)
- monitoring/kps-values-k3s.yaml: fix storage class for Prometheus/Alertmanager

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
chrisfu 2026-05-07 01:25:32 -04:00
parent 3848d49077
commit 1892e137c1
18 changed files with 174 additions and 84 deletions

View File

@ -9,7 +9,7 @@
<env name="PYTHONPATH" value="$PROJECT_DIR$" /> <env name="PYTHONPATH" value="$PROJECT_DIR$" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.14 (knoe-db)" /> <option name="SDK_NAME" value="Python 3.14 (prole)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />

View File

@ -1,17 +1,22 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="pytest — gke mode" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="pytest — gke mode" type="PythonConfigurationType" factoryName="Python">
<module name="knoe-db" /> <module name="knoe-db" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="PYTHONPATH" value="$PROJECT_DIR$" /> <env name="PYTHONPATH" value="$PROJECT_DIR$" />
<env name="KNOE_MODE" value="gke" /> <env name="KNOE_MODE" value="gke" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.14 (prole)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<option name="DEBUG_JUST_MY_CODE" value="true" />
<option name="RUN_TOOL" value="" />
<option name="SCRIPT_NAME" value="-m pytest" /> <option name="SCRIPT_NAME" value="-m pytest" />
<option name="PARAMETERS" value="-m gke --cov=knoe --cov-report=term-missing -v tests/" /> <option name="PARAMETERS" value="-m gke --cov=knoe --cov-report=term-missing -v tests/" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />

View File

@ -1,17 +1,22 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="pytest — k3d mode" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="pytest — k3d mode" type="PythonConfigurationType" factoryName="Python">
<module name="knoe-db" /> <module name="knoe-db" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="PYTHONPATH" value="$PROJECT_DIR$" /> <env name="PYTHONPATH" value="$PROJECT_DIR$" />
<env name="KNOE_MODE" value="k3d" /> <env name="KNOE_MODE" value="k3d" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.14 (prole)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<option name="DEBUG_JUST_MY_CODE" value="true" />
<option name="RUN_TOOL" value="" />
<option name="SCRIPT_NAME" value="-m pytest" /> <option name="SCRIPT_NAME" value="-m pytest" />
<option name="PARAMETERS" value="-m k3d --cov=knoe --cov-report=term-missing -v tests/" /> <option name="PARAMETERS" value="-m k3d --cov=knoe --cov-report=term-missing -v tests/" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />

View File

@ -1,17 +1,22 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="pytest — min mode" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="pytest — min mode" type="PythonConfigurationType" factoryName="Python">
<module name="knoe-db" /> <module name="knoe-db" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="PYTHONPATH" value="$PROJECT_DIR$" /> <env name="PYTHONPATH" value="$PROJECT_DIR$" />
<env name="KNOE_MODE" value="min" /> <env name="KNOE_MODE" value="min" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.14 (prole)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<option name="DEBUG_JUST_MY_CODE" value="true" />
<option name="RUN_TOOL" value="" />
<option name="SCRIPT_NAME" value="-m pytest" /> <option name="SCRIPT_NAME" value="-m pytest" />
<option name="PARAMETERS" value="-m min --cov=knoe --cov-report=term-missing -v tests/" /> <option name="PARAMETERS" value="-m min --cov=knoe --cov-report=term-missing -v tests/" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />

View File

@ -1,16 +1,21 @@
<component name="ProjectRunConfigurationManager"> <component name="ProjectRunConfigurationManager">
<configuration default="false" name="pytest — unit (fast, no deps)" type="PythonConfigurationType" factoryName="Python"> <configuration default="false" name="pytest — unit (fast, no deps)" type="PythonConfigurationType" factoryName="Python">
<module name="knoe-db" /> <module name="knoe-db" />
<option name="ENV_FILES" value="" />
<option name="INTERPRETER_OPTIONS" value="" /> <option name="INTERPRETER_OPTIONS" value="" />
<option name="PARENT_ENVS" value="true" /> <option name="PARENT_ENVS" value="true" />
<envs> <envs>
<env name="PYTHONUNBUFFERED" value="1" />
<env name="PYTHONPATH" value="$PROJECT_DIR$" /> <env name="PYTHONPATH" value="$PROJECT_DIR$" />
</envs> </envs>
<option name="SDK_HOME" value="" /> <option name="SDK_HOME" value="" />
<option name="SDK_NAME" value="Python 3.14 (prole)" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" /> <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="IS_MODULE_SDK" value="false" /> <option name="IS_MODULE_SDK" value="false" />
<option name="ADD_CONTENT_ROOTS" value="true" /> <option name="ADD_CONTENT_ROOTS" value="true" />
<option name="ADD_SOURCE_ROOTS" value="true" /> <option name="ADD_SOURCE_ROOTS" value="true" />
<option name="DEBUG_JUST_MY_CODE" value="true" />
<option name="RUN_TOOL" value="" />
<option name="SCRIPT_NAME" value="-m pytest" /> <option name="SCRIPT_NAME" value="-m pytest" />
<option name="PARAMETERS" value="-m &quot;unit and not integration&quot; --cov=knoe --cov-report=term-missing -v tests/" /> <option name="PARAMETERS" value="-m &quot;unit and not integration&quot; --cov=knoe --cov-report=term-missing -v tests/" />
<option name="SHOW_COMMAND_LINE" value="false" /> <option name="SHOW_COMMAND_LINE" value="false" />

View File

@ -1,5 +1,5 @@
; Knoe Master Configuration File ; Knoe Master Configuration File
; Generated by install.py on 2026-05-03 19:40:53 ; Generated by install.py on 2026-05-04 02:15:57
; This file is used as input for Ansible deployment and k8s cluster creation. ; This file is used as input for Ansible deployment and k8s cluster creation.
[User] [User]
@ -53,7 +53,7 @@ env_setup.PROLE_DATA = /Users/chrisfu/dev/prole/data
env_setup.PROLE_LOGS = /Users/chrisfu/dev/prole/logs env_setup.PROLE_LOGS = /Users/chrisfu/dev/prole/logs
gitops.git_provider = Gitea gitops.git_provider = Gitea
gitops.node_selector = gitops.node_selector =
init_cluster.argocd_enabled = false init_cluster.argocd_enabled = true
init_cluster.at_rest_encryption_enabled = true init_cluster.at_rest_encryption_enabled = true
init_cluster.cluster_env = dev init_cluster.cluster_env = dev
init_cluster.deployment_target = knoe-dev-cluster init_cluster.deployment_target = knoe-dev-cluster
@ -70,26 +70,27 @@ init_db_build.run_build = true
init_password.cluster_name = ${CLUSTER_NAME} init_password.cluster_name = ${CLUSTER_NAME}
init_password.db_host_port = 5432 init_password.db_host_port = 5432
init_password.db_namespace = ${DATABASE_NAMESPACE} init_password.db_namespace = ${DATABASE_NAMESPACE}
init_password.db_password = ${KNOE_SECRET:v1:dZtt1snkOcvvfKLT:InElcG1YzL86l6ZPP03cf9Zx07Tq5-qt} init_password.db_password = ${KNOE_SECRET:v1:v00gnU0lZjZUF__L:3tlFaJnbjpK1_Ufggmfp8T91VSuq1uMO}
init_password.db_password_confirm = ${KNOE_SECRET:v1:dZtt1snkOcvvfKLT:InElcG1YzL86l6ZPP03cf9Zx07Tq5-qt} init_password.db_password_confirm = ${KNOE_SECRET:v1:v00gnU0lZjZUF__L:3tlFaJnbjpK1_Ufggmfp8T91VSuq1uMO}
init_password.db_username = chrisfu init_password.db_username = root
init_password.generate_ssh_key = true init_password.generate_ssh_key = true
init_scripts.run_scripts = true init_scripts.run_scripts = true
kerberos_config.enabled = true kerberos_config.enabled = true
kerberos_config.kdc = 10.0.0.3 kerberos_config.kdc = 10.0.0.3
kerberos_config.password = ${KNOE_SECRET:v1:FIPsTmrzljDXRhwf:Hfp05VmT2yAOJIUFoSG1utMJHMvNP7reGAkoXyvmIp_lAftCI6NyHSj0AqrHPI0Q} kerberos_config.password = ${KNOE_SECRET:v1:b3l7OBzEaKrOf04_:HQL8wPSazmkCgAjevoW0eNjsoOUkPi11OxZSQyOqvcD347WCoUKcztiyqubQwMj5}
kerberos_config.realm = PROLE.ORG kerberos_config.realm = PROLE.ORG
kerberos_config.test_connection = true kerberos_config.test_connection = true
kerberos_config.user = administrator kerberos_config.user = administrator
network_scan.run = true network_scan.run = true
ollama_config.model = ollama_config.model =
ollama_config.server_host = fairyland.prole.org ollama_config.server_host =
ollama_config.server_port = 11434 ollama_config.server_port = 11434
supabase_config.pv_base_dir = /synology/d005 supabase_config.pv_base_dir = /synology/d005
supabase_config.pv_node = supabase_config.pv_node =
[Global] [Global]
; Variables used by name in more than one place or assumed global scope ; Variables used by name in more than one place or assumed global scope
ARGOCD_NAMESPACE = argocd
CLUSTER_ENV = dev CLUSTER_ENV = dev
CLUSTER_NAME = knoe-db CLUSTER_NAME = knoe-db
CNPG_PLACEMENT_PLAN_FILE = /Users/chrisfu/dev/prole/conf/cnpg-placement/knoe-system-knoe-db.json CNPG_PLACEMENT_PLAN_FILE = /Users/chrisfu/dev/prole/conf/cnpg-placement/knoe-system-knoe-db.json
@ -97,16 +98,21 @@ CNPG_PLACEMENT_PLAN_HASH = 965d2fde4035059f
CNPG_PLACEMENT_PLAN_ID = cnpg-placement-965d2fde4035059f CNPG_PLACEMENT_PLAN_ID = cnpg-placement-965d2fde4035059f
DATABASE_NAMESPACE = knoe-db DATABASE_NAMESPACE = knoe-db
DB_HOST_PORT = 5432 DB_HOST_PORT = 5432
DB_PASSWORD = ${KNOE_SECRET:v1:LJJ4Y6WIqRMV5Pp6:UD3iURPdk8_3xDqlakAg0eY_81kppn4g} DB_PASSWORD = ${KNOE_SECRET:v1:UHU7cGaV3F206SiN:iWT-KbxciZyijyU2W3d_toKCoTRyCKfp}
DEPLOYMENT_MODE = k3d DEPLOYMENT_MODE = k3d
DEPLOYMENT_TARGET = knoe-dev-cluster DEPLOYMENT_TARGET = knoe-dev-cluster
DOCKER_PRELOAD = false DOCKER_PRELOAD = false
KNOE_DB_USER = chrisfu K3S_SERVER = https://myrddin.prole.org:6443
K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==}
KNOE_DB_USER = root
KNOE_HOME = /Users/chrisfu/dev/prole KNOE_HOME = /Users/chrisfu/dev/prole
KUBECONTEXT = k3d-knoe-dev-cluster
OPENTOFU_URL = http://127.0.0.1:8080
OPTIONAL_WORKLOADS_MIN_READY_SCHEDULABLE_NODES = 2 OPTIONAL_WORKLOADS_MIN_READY_SCHEDULABLE_NODES = 2
PROLE_K3S_SERVER = https://myrddin.prole.org:6443 PROLE_K3S_SERVER = https://myrddin.prole.org:6443
PROLE_K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==} PROLE_K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==}
PROLE_OPENTOFU_URL = http://127.0.0.1:8080 PROLE_OPENTOFU_URL = http://127.0.0.1:8080
REGISTRY_NAMESPACE = knoe-system
SERVICE_NAMESPACE = knoe-system SERVICE_NAMESPACE = knoe-system
SUPABASE_PV_BASE = /synology/d005 SUPABASE_PV_BASE = /synology/d005
SUPABASE_PV_BASE_DIR = /synology/d005 SUPABASE_PV_BASE_DIR = /synology/d005
@ -115,7 +121,7 @@ SUPABASE_PV_BASE_DIR = /synology/d005
; No configuration values captured yet for this section. ; No configuration values captured yet for this section.
[Dependencies] [Dependencies]
; No configuration values captured yet for this section. STATUS = All installed
[Network] [Network]
AD_DC_HOST = myrddin.prole.org AD_DC_HOST = myrddin.prole.org
@ -138,7 +144,7 @@ PROLE_DATA = $HOME/dev/prole/data
PROLE_LOGS = $HOME/dev/prole/logs PROLE_LOGS = $HOME/dev/prole/logs
[Monitoring] [Monitoring]
GRAFANA_ADMIN_PASSWORD = ${KNOE_SECRET:v1:T80z8G4SXuY96xLZ:HFX0qAPJIOz7Fevc5m2Ml2YL8qmpbES3} GRAFANA_ADMIN_PASSWORD = ${KNOE_SECRET:v1:KjciJR7E96MaNboA:dLAYw8xx0bQt9qoh7CYqnbOUUCwFU4bY}
[Kerberos Authentication] [Kerberos Authentication]
AD_PORT_FORWARD = 1 AD_PORT_FORWARD = 1
@ -149,18 +155,17 @@ AD_TCP_PORTS = 88 389 445 464 636
AD_UDP_PORTS = 88 464 AD_UDP_PORTS = 88 464
ENABLED = True ENABLED = True
KDC = 10.0.0.3 KDC = 10.0.0.3
PASSWORD = ${KNOE_SECRET:v1:SwR1_S3KrYbGj7k8:Qi4fnGhMAaMetBAhql2FhskJgVVIvj3mcN3Po5TCk7JyZaVzDZuYEjwpPjevODjC} PASSWORD = ${KNOE_SECRET:v1:LRsb2eBOIlB3CksO:73aNgprchcwifxIEiaGBLLj-kZCpry1v34DADJIfUaA4ltfVQc2V6kvoBmznYBmH}
REALM = PROLE.ORG REALM = PROLE.ORG
SERVER = 10.0.0.3 SERVER = 10.0.0.3
STATUS = Attempted
USER = administrator USER = administrator
[Ollama] [Ollama]
OLLAMA_HOST = http://fairyland.prole.org:11434
OLLAMA_SERVERS = fairyland.prole.org:11434,k3d.localhost:11434,morgoth.prole.org:11434 OLLAMA_SERVERS = fairyland.prole.org:11434,k3d.localhost:11434,morgoth.prole.org:11434
OLLAMA_SERVER_HOST = fairyland.prole.org
OLLAMA_SERVER_PORT = 11434
[Optional Features] [Optional Features]
ARGOCD_ENABLED = True
AT_REST_ENCRYPTION_ENABLED = True AT_REST_ENCRYPTION_ENABLED = True
GITOPS_ENABLED = False GITOPS_ENABLED = False
KERBEROS_ENABLED = True KERBEROS_ENABLED = True
@ -170,7 +175,9 @@ SUPABASE_ENABLED = False
; No configuration values captured yet for this section. ; No configuration values captured yet for this section.
[Database Creation] [Database Creation]
; No configuration values captured yet for this section. APP_CLUSTER_NAME = knoe-dev-0
DB_CLUSTER_NAME = knoe-dev-cnpg-0
DB_USER = root
[Initialize Cluster] [Initialize Cluster]
ENVIRONMENT = dev ENVIRONMENT = dev
@ -180,6 +187,7 @@ K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWk
[Dev Cluster (k3d)] [Dev Cluster (k3d)]
CLUSTER_ENV = dev CLUSTER_ENV = dev
DISPLAY_NAME = knoe-dev-cluster DISPLAY_NAME = knoe-dev-cluster
KUBECTL_CONTEXT = k3d-knoe-dev-cluster
MODE = k3d MODE = k3d
[Service Cluster (k3s)] [Service Cluster (k3s)]
@ -191,7 +199,10 @@ MODE = k3s
PIPELINE_URL = http://127.0.0.1:8080 PIPELINE_URL = http://127.0.0.1:8080
[GCP] [GCP]
; No configuration values captured yet for this section. BILLING_ACCOUNT = 01193C-25783B-3211AD
BILLING_PROJECT = plenary-truck-485623-p7
ORG_ID = 584001916389
PROJECT_ID = plenary-truck-485623-p7
[Prod Cluster (k8s)] [Prod Cluster (k8s)]
ARTIFACTS_DIR = $HOME/dev/prole/data/staging ARTIFACTS_DIR = $HOME/dev/prole/data/staging
@ -212,4 +223,4 @@ MODE = k3d
TARGET = knoe-dev-cluster TARGET = knoe-dev-cluster
[Install] [Install]
; No configuration values captured yet for this section. STATUS = Failed

View File

@ -143,18 +143,14 @@ DEPLOYMENT_MODE = k3s
DEPLOYMENT_TARGET = knoe-service-cluster DEPLOYMENT_TARGET = knoe-service-cluster
DOCKER_IMPORT_DIR = DOCKER_IMPORT_DIR =
DOCKER_PRELOAD = false DOCKER_PRELOAD = false
GITEA_HOSTNAME = git-internal.prole.org GITEA_HOSTNAME = git.prole.org
GITEA_PV_NODE = gandalf.prole.org GITEA_PV_NODE = gandalf.prole.org
GITLAB_GITALY_STORAGE_CLASS = synology-iscsi
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_SERVER = https://myrddin.prole.org:6443
K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==} K3S_TOKEN = ${KNOE_SECRET:v1:-cslrAhG8WhxxJLY:vAx5MGOBcU1NBMjf4U-3y1djMDmwwOjiWkrutxPa4Li5P8RBjCBhEOCEdGP2CiPJJ6UQK-ietX-mu_5nO3yNNjpwDququT4U6lWHPEInSvUNH6ImU-HzPvm_diL2FwJtZm3sY5HgecIy2dwXB_vLnYaA_7VXt9zf0T70rw==}
KNOE_DB_USER = root KNOE_DB_USER = root
KNOE_HOME = $HOME/dev/knoe KNOE_HOME = $HOME/dev/knoe
KNOE_IMAGE_REGISTRY = registry.prole.org KNOE_IMAGE_REGISTRY = registry.prole.org
MONITORING_STORAGE_CLASS = local-path MONITORING_STORAGE_CLASS = merlin-local-iscsi-prometheus
OPENTOFU_URL = http://127.0.0.1:8080 OPENTOFU_URL = http://127.0.0.1:8080
OPTIONAL_WORKLOADS_MIN_READY_SCHEDULABLE_NODES = 2 OPTIONAL_WORKLOADS_MIN_READY_SCHEDULABLE_NODES = 2
PROLE_K3S_SERVER = https://myrddin.prole.org:6443 PROLE_K3S_SERVER = https://myrddin.prole.org:6443
@ -208,7 +204,7 @@ PROLE_DATA = $HOME/dev/knoe/data
PROLE_LOGS = $HOME/dev/knoe/logs PROLE_LOGS = $HOME/dev/knoe/logs
[Monitoring] [Monitoring]
MONITORING_STORAGE_CLASS = local-path MONITORING_STORAGE_CLASS = merlin-local-iscsi-prometheus
[Kerberos Authentication] [Kerberos Authentication]
STATUS = Initialized STATUS = Initialized

View File

@ -1,9 +1,11 @@
# Port mappings for Knoe Tools (generated). # Port mappings for Knoe Tools (generated).
# Format: key: local=... remote=... ns=... svc=... address=... # Format: key: local=... remote=... ns=... svc=... address=...
gitea-ssh: local=22 remote=22 ns=gitea svc=gitea-ssh address=0.0.0.0
garage: local=3900 remote=3900 ns=knoe-system svc=garage address=0.0.0.0 garage: local=3900 remote=3900 ns=knoe-system svc=garage address=0.0.0.0
openbao: local=8200 remote=8200 ns=knoe-system svc=openbao address=127.0.0.1 openbao: local=8200 remote=8200 ns=knoe-system svc=openbao address=0.0.0.0
opentofu: local=8080 remote=8080 ns=knoe-system svc=opentofu address=0.0.0.0 opentofu: local=8080 remote=8080 ns=knoe-system svc=opentofu address=0.0.0.0
postgres: local=5432 remote=5432 ns=knoe-db svc=knoe-db-rw address=0.0.0.0 postgres: local=5432 remote=5432 ns=knoe-db svc=knoe-db-rw address=0.0.0.0
prometheus: local=9090 remote=9090 ns=monitoring svc=prometheus-kube-prometheus-stack-prometheus address=127.0.0.1 prometheus: local=9090 remote=9090 ns=monitoring svc=prometheus-kube-prometheus-stack-prometheus address=127.0.0.1
grafana: local=3000 remote=80 ns=monitoring svc=prometheus-grafana address=0.0.0.0 grafana: local=3000 remote=80 ns=monitoring svc=prometheus-grafana address=0.0.0.0
gitea-http: local=13000 remote=3000 ns=gitea svc=gitea-http address=0.0.0.0

View File

@ -82,7 +82,7 @@ data:
routes: routes:
- name: gitea-root - name: gitea-root
hosts: hosts:
- git-internal.prole.org - git.prole.org
paths: paths:
- / - /
strip_path: false strip_path: false

View File

@ -0,0 +1,69 @@
# svc-knoe-ingress.yaml
# Traefik ingress for *.prole.org — routes all public domains through
# knoe-svc-kong (declarative Kong in knoe-system). cert-manager issues a
# Let's Encrypt cert (svc-prole-org-tls) for all hosts via HTTP-01.
#
# Kong routing (kong-configmap.yaml):
# api.prole.org → knoe-auth.knoe-system:8080
# db.prole.org → oauth2-proxy.supabase:4180 (Supabase Studio + Google gate)
# svc.prole.org → knoe-grafana-proxy.monitoring:80 (Grafana)
# git.prole.org → gitea-http.gitea:3000 (Gitea)
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: svc-knoe-ingress
namespace: knoe-system
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
kubernetes.io/ingress.class: traefik
traefik.ingress.kubernetes.io/router.priority: "10"
spec:
rules:
- host: svc.prole.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: knoe-svc-kong
port:
number: 8000
- host: api.prole.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: knoe-svc-kong
port:
number: 8000
- host: db.prole.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: oauth2-proxy
port:
number: 80
- host: git.prole.org
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: knoe-svc-kong
port:
number: 8000
tls:
- hosts:
- svc.prole.org
- api.prole.org
- db.prole.org
- git.prole.org
secretName: svc-prole-org-tls

8
env.sh
View File

@ -4,10 +4,10 @@
# "$KNOE_HOME/env.sh" <command> [args…] # "$KNOE_HOME/env.sh" <command> [args…]
# shellcheck shell=bash # shellcheck shell=bash
export KNOE_HOME="$HOME/dev/prole" export KNOE_HOME="$HOME/dev/prole"
export KNOE_CONF="$HOME/dev/prole/conf" export KNOE_CONF="$KNOE_HOME/conf"
export PROLE_DATA="$HOME/dev/prole/data" export PROLE_DATA="$KNOE_HOME/data"
export PROLE_LOGS="$HOME/dev/prole/logs" export PROLE_LOGS="$KNOE_HOME/logs"
export KNOE_SERVICE="$HOME/dev/prole/etc" export KNOE_SERVICE="$KNOE_HOME/etc"
# Ensure PATH works for GUI-launched shells (Docker, etc.) # Ensure PATH works for GUI-launched shells (Docker, etc.)
_knoe_add_path() { case ":${PATH}:" in *":$1:"*) ;; *) PATH="$1:${PATH:-}" ;; esac; } _knoe_add_path() { case ":${PATH}:" in *":$1:"*) ;; *) PATH="$1:${PATH:-}" ;; esac; }

0
etc/init_grafana_oauth_prole.sh Executable file → Normal file
View File

0
etc/init_oauth2_proxy_prole.sh Executable file → Normal file
View File

View File

@ -111,6 +111,11 @@ prole_dns_records:
value: 10.0.0.207 value: 10.0.0.207
ttl: 300 ttl: 300
- name: git
type: A
value: 73.15.20.166
ttl: 300
- name: svc - name: svc
type: A type: A
value: 73.15.20.166 value: 73.15.20.166

View File

@ -1 +1 @@
19 25

View File

@ -1,10 +1,10 @@
{ {
"values": "/Users/chrisfu/dev/knoe/supabase/helm/generated/values.generated.json", "values": "/Users/chrisfu/dev/prole/supabase/helm/generated/values.generated.json",
"manifests": "/Users/chrisfu/dev/knoe/supabase/k8s/supabase-helm.yaml", "manifests": "/Users/chrisfu/dev/prole/supabase/k8s/supabase-helm.yaml",
"manifests_app": "/Users/chrisfu/dev/knoe/supabase/helm/generated/supabase-helm.app.yaml", "manifests_app": "/Users/chrisfu/dev/prole/supabase/helm/generated/supabase-helm.app.yaml",
"manifests_frontdoor_db": "/Users/chrisfu/dev/knoe/supabase/helm/generated/supabase-helm.frontdoor-db.yaml", "manifests_frontdoor_db": "/Users/chrisfu/dev/prole/supabase/helm/generated/supabase-helm.frontdoor-db.yaml",
"manifests_public_ingress_tls": "/Users/chrisfu/dev/knoe/supabase/k8s/public-ingress-tls.yaml", "manifests_public_ingress_tls": "/Users/chrisfu/dev/prole/supabase/k8s/public-ingress-tls.yaml",
"manifests_public_ingress_kong": "/Users/chrisfu/dev/knoe/supabase/k8s/public-ingress-kong.yaml", "manifests_public_ingress_kong": "/Users/chrisfu/dev/prole/supabase/k8s/public-ingress-kong.yaml",
"db_host": "10.180.15.236", "db_host": "knoe-db-rw.knoe-db.svc.cluster.local",
"supabase_namespace": "supabase" "supabase_namespace": "supabase"
} }

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,9 @@
{"apiVersion": "v1", "kind": "Service", "metadata": {"name": "supabase-functions", "labels": {"helm.sh/chart": "knoe-supabase-0.5.0-knoe.1", "app.kubernetes.io/name": "supabase", "app.kubernetes.io/instance": "supabase-frontdoor-db", "app.kubernetes.io/managed-by": "Helm"}, "namespace": "supabase"}, "spec": {"type": "ClusterIP", "ports": [{"port": 9000, "targetPort": 9000, "protocol": "TCP", "name": "http"}], "selector": {"app.kubernetes.io/name": "knoe-supabase-functions", "app.kubernetes.io/instance": "supabase-frontdoor-db"}}}
---
{"apiVersion": "v1", "kind": "Service", "metadata": {"name": "supabase-kong", "labels": {"helm.sh/chart": "knoe-supabase-0.5.0-knoe.1", "app.kubernetes.io/name": "supabase", "app.kubernetes.io/instance": "supabase-frontdoor-db", "app.kubernetes.io/managed-by": "Helm"}, "namespace": "supabase"}, "spec": {"type": "ClusterIP", "ports": [{"port": 8000, "targetPort": 8000, "protocol": "TCP", "name": "http"}], "selector": {"app.kubernetes.io/name": "knoe-supabase-kong", "app.kubernetes.io/instance": "supabase-frontdoor-db"}}}
---
{"apiVersion": "v1", "kind": "Service", "metadata": {"name": "supabase-studio", "labels": {"helm.sh/chart": "knoe-supabase-0.5.0-knoe.1", "app.kubernetes.io/name": "supabase", "app.kubernetes.io/instance": "supabase-frontdoor-db", "app.kubernetes.io/managed-by": "Helm"}, "namespace": "supabase"}, "spec": {"type": "ClusterIP", "ports": [{"port": 3000, "targetPort": 3000, "protocol": "TCP", "name": "http"}], "selector": {"app.kubernetes.io/name": "knoe-supabase-studio", "app.kubernetes.io/instance": "supabase-frontdoor-db"}}}
---
{"apiVersion": "networking.k8s.io/v1", "kind": "Ingress", "metadata": {"name": "supabase-kong", "labels": {"helm.sh/chart": "knoe-supabase-0.5.0-knoe.1", "app.kubernetes.io/name": "supabase", "app.kubernetes.io/instance": "supabase-frontdoor-db", "app.kubernetes.io/managed-by": "Helm"}, "annotations": {"nginx.ingress.kubernetes.io/rewrite-target": "/"}, "namespace": "supabase"}, "spec": {"ingressClassName": "traefik", "rules": [{"host": "db.knoe.org", "http": {"paths": [{"path": "/", "pathType": "Prefix", "backend": {"service": {"name": "supabase-kong", "port": {"number": 8000}}}}]}}]}}
---
{"apiVersion": "networking.k8s.io/v1", "kind": "Ingress", "metadata": {"name": "supabase-studio", "labels": {"helm.sh/chart": "knoe-supabase-0.5.0-knoe.1", "app.kubernetes.io/name": "supabase", "app.kubernetes.io/instance": "supabase-frontdoor-db", "app.kubernetes.io/managed-by": "Helm"}, "annotations": {"nginx.ingress.kubernetes.io/auth-response-headers": "X-Knoe-User,X-Knoe-Email,X-Knoe-Groups", "nginx.ingress.kubernetes.io/auth-signin": "https://api.knoe.org/auth/login?next=$scheme://$host$escaped_request_uri", "nginx.ingress.kubernetes.io/auth-url": "https://api.knoe.org/auth/verify"}, "namespace": "supabase"}, "spec": {"ingressClassName": "traefik", "rules": [{"host": "db.knoe.org", "http": {"paths": [{"path": "/", "pathType": "Prefix", "backend": {"service": {"name": "supabase-studio", "port": {"number": 3000}}}}]}}]}}