2026-04-07 13:13:58 -03:00
|
|
|
# /etc/ananke/ananke.yaml
|
|
|
|
|
kubeconfig: /etc/ananke/kubeconfig
|
2026-04-03 01:43:16 -03:00
|
|
|
ssh_user: atlas
|
2026-04-04 12:44:15 -03:00
|
|
|
ssh_port: 2277
|
2026-04-04 12:56:58 -03:00
|
|
|
ssh_config_file: ""
|
2026-04-04 12:44:15 -03:00
|
|
|
ssh_identity_file: /home/atlas/.ssh/id_ed25519
|
|
|
|
|
ssh_node_hosts: {}
|
|
|
|
|
ssh_node_users: {}
|
|
|
|
|
ssh_managed_nodes: []
|
|
|
|
|
ssh_jump_host: ""
|
|
|
|
|
ssh_jump_user: ""
|
2026-04-03 01:43:16 -03:00
|
|
|
iac_repo_path: /opt/titan-iac
|
|
|
|
|
expected_flux_branch: main
|
2026-04-07 13:13:58 -03:00
|
|
|
expected_flux_source_url: ssh://git@scm.bstein.dev:2242/bstein/titan-iac.git
|
2026-04-03 01:43:16 -03:00
|
|
|
control_planes:
|
|
|
|
|
- titan-0a
|
|
|
|
|
- titan-0b
|
|
|
|
|
- titan-0c
|
|
|
|
|
workers: []
|
|
|
|
|
local_bootstrap_paths:
|
|
|
|
|
- infrastructure/core
|
2026-04-04 12:44:15 -03:00
|
|
|
- clusters/atlas/flux-system
|
2026-04-03 01:43:16 -03:00
|
|
|
- infrastructure/sources/helm
|
|
|
|
|
- infrastructure/metallb
|
|
|
|
|
- infrastructure/traefik
|
2026-04-05 00:15:09 -03:00
|
|
|
- infrastructure/cert-manager
|
2026-04-03 01:43:16 -03:00
|
|
|
- infrastructure/vault-csi
|
|
|
|
|
- infrastructure/vault-injector
|
|
|
|
|
- services/vault
|
|
|
|
|
- infrastructure/postgres
|
|
|
|
|
- services/gitea
|
2026-04-05 00:15:09 -03:00
|
|
|
- services/keycloak
|
|
|
|
|
- services/oauth2-proxy
|
2026-04-03 01:43:16 -03:00
|
|
|
excluded_namespaces:
|
|
|
|
|
- kube-system
|
|
|
|
|
- kube-public
|
|
|
|
|
- kube-node-lease
|
|
|
|
|
- flux-system
|
|
|
|
|
- traefik
|
|
|
|
|
- metallb-system
|
|
|
|
|
- cert-manager
|
|
|
|
|
- longhorn-system
|
|
|
|
|
- vault
|
|
|
|
|
- postgres
|
|
|
|
|
- maintenance
|
2026-04-04 12:44:15 -03:00
|
|
|
startup:
|
|
|
|
|
api_wait_seconds: 1200
|
|
|
|
|
api_poll_seconds: 2
|
2026-04-05 20:25:14 -03:00
|
|
|
shutdown_cooldown_seconds: 45
|
2026-04-07 13:13:58 -03:00
|
|
|
minimum_battery_percent: 20
|
2026-04-09 01:38:06 -03:00
|
|
|
require_node_inventory_reachability: true
|
|
|
|
|
node_inventory_reachability_wait_seconds: 300
|
|
|
|
|
node_inventory_reachability_poll_seconds: 5
|
2026-04-07 13:13:58 -03:00
|
|
|
required_node_labels:
|
|
|
|
|
titan-09:
|
|
|
|
|
ananke.bstein.dev/harbor-bootstrap: "true"
|
2026-04-04 22:24:56 -03:00
|
|
|
require_time_sync: true
|
|
|
|
|
time_sync_wait_seconds: 240
|
|
|
|
|
time_sync_poll_seconds: 5
|
2026-04-05 01:55:56 -03:00
|
|
|
time_sync_mode: quorum
|
|
|
|
|
time_sync_quorum: 2
|
2026-04-04 22:24:56 -03:00
|
|
|
reconcile_access_on_boot: true
|
2026-04-04 20:50:58 -03:00
|
|
|
auto_etcd_restore_on_api_failure: true
|
|
|
|
|
etcd_restore_control_plane: titan-0a
|
2026-04-05 01:55:56 -03:00
|
|
|
require_storage_ready: true
|
|
|
|
|
storage_ready_wait_seconds: 420
|
|
|
|
|
storage_ready_poll_seconds: 5
|
|
|
|
|
storage_min_ready_nodes: 2
|
|
|
|
|
storage_critical_pvcs:
|
|
|
|
|
- vault/data-vault-0
|
|
|
|
|
- postgres/postgres-data-postgres-0
|
|
|
|
|
- gitea/gitea-data
|
|
|
|
|
- sso/keycloak-data
|
|
|
|
|
require_post_start_probes: true
|
|
|
|
|
post_start_probe_wait_seconds: 240
|
|
|
|
|
post_start_probe_poll_seconds: 5
|
|
|
|
|
post_start_probes:
|
2026-04-07 13:13:58 -03:00
|
|
|
- https://scm.bstein.dev/api/healthz
|
|
|
|
|
- https://metrics.bstein.dev/api/health
|
|
|
|
|
require_service_checklist: true
|
|
|
|
|
service_checklist_wait_seconds: 420
|
|
|
|
|
service_checklist_poll_seconds: 5
|
|
|
|
|
service_checklist_stability_seconds: 120
|
2026-04-09 01:38:06 -03:00
|
|
|
service_checklist_auth:
|
|
|
|
|
mode: keycloak_robotuser
|
|
|
|
|
keycloak_base_url: https://sso.bstein.dev
|
|
|
|
|
realm: atlas
|
|
|
|
|
robot_username: robotuser
|
|
|
|
|
admin_secret_namespace: sso
|
|
|
|
|
admin_secret_name: keycloak-admin
|
|
|
|
|
admin_secret_username_key: username
|
|
|
|
|
admin_secret_password_key: password
|
2026-04-07 13:13:58 -03:00
|
|
|
service_checklist:
|
|
|
|
|
- name: gitea-api
|
|
|
|
|
url: https://scm.bstein.dev/api/healthz
|
|
|
|
|
accepted_statuses: [200]
|
|
|
|
|
body_contains: pass
|
|
|
|
|
timeout_seconds: 12
|
|
|
|
|
- name: grafana-api
|
|
|
|
|
url: https://metrics.bstein.dev/api/health
|
|
|
|
|
accepted_statuses: [200]
|
|
|
|
|
body_contains: '"database":"ok"'
|
|
|
|
|
timeout_seconds: 12
|
2026-04-07 14:19:48 -03:00
|
|
|
- name: keycloak-oidc
|
|
|
|
|
url: https://sso.bstein.dev/realms/atlas/.well-known/openid-configuration
|
|
|
|
|
accepted_statuses: [200]
|
|
|
|
|
body_contains: '"issuer":"https://sso.bstein.dev/realms/atlas"'
|
|
|
|
|
timeout_seconds: 12
|
|
|
|
|
- name: harbor-registry
|
|
|
|
|
url: https://registry.bstein.dev/v2/
|
|
|
|
|
accepted_statuses: [401]
|
|
|
|
|
body_contains: unauthorized
|
|
|
|
|
timeout_seconds: 12
|
2026-04-09 01:38:06 -03:00
|
|
|
- name: longhorn-api-user-session
|
|
|
|
|
url: https://longhorn.bstein.dev/v1
|
|
|
|
|
accepted_statuses: [200]
|
|
|
|
|
require_robot_auth: true
|
|
|
|
|
follow_redirects: true
|
|
|
|
|
final_url_contains: /v1
|
|
|
|
|
final_url_not_contains: /oauth2/sign_in
|
|
|
|
|
body_contains: '"id":"v1"'
|
2026-04-07 14:19:48 -03:00
|
|
|
timeout_seconds: 12
|
2026-04-09 01:38:06 -03:00
|
|
|
require_critical_service_endpoints: true
|
|
|
|
|
critical_service_endpoint_wait_seconds: 420
|
|
|
|
|
critical_service_endpoint_poll_seconds: 5
|
|
|
|
|
critical_service_endpoints:
|
|
|
|
|
- monitoring/victoria-metrics-single-server
|
2026-04-07 22:40:15 -03:00
|
|
|
require_ingress_checklist: true
|
|
|
|
|
ingress_checklist_wait_seconds: 420
|
|
|
|
|
ingress_checklist_poll_seconds: 5
|
|
|
|
|
ingress_checklist_accepted_statuses: [200, 301, 302, 307, 308, 401, 403, 404]
|
|
|
|
|
ingress_checklist_ignore_hosts: []
|
|
|
|
|
ingress_checklist_insecure_skip_tls: false
|
|
|
|
|
require_node_ssh_auth: true
|
|
|
|
|
node_ssh_auth_wait_seconds: 240
|
|
|
|
|
node_ssh_auth_poll_seconds: 5
|
2026-04-07 13:13:58 -03:00
|
|
|
require_flux_health: true
|
|
|
|
|
flux_health_wait_seconds: 900
|
|
|
|
|
flux_health_poll_seconds: 5
|
|
|
|
|
ignore_flux_kustomizations: []
|
|
|
|
|
require_workload_convergence: true
|
|
|
|
|
workload_convergence_wait_seconds: 900
|
|
|
|
|
workload_convergence_poll_seconds: 5
|
|
|
|
|
ignore_workload_namespaces: []
|
|
|
|
|
ignore_workloads: []
|
|
|
|
|
ignore_unavailable_nodes: []
|
|
|
|
|
auto_recycle_stuck_pods: true
|
|
|
|
|
stuck_pod_grace_seconds: 180
|
|
|
|
|
vault_unseal_key_file: /var/lib/ananke/vault-unseal.key
|
2026-04-05 11:30:54 -03:00
|
|
|
vault_unseal_breakglass_command: ""
|
|
|
|
|
vault_unseal_breakglass_timeout_seconds: 15
|
2026-04-03 01:43:16 -03:00
|
|
|
shutdown:
|
2026-04-04 18:34:50 -03:00
|
|
|
default_budget_seconds: 1380
|
2026-04-05 00:15:09 -03:00
|
|
|
history_min_samples: 3
|
|
|
|
|
emergency_budget_seconds: 420
|
|
|
|
|
emergency_history_min_samples: 3
|
|
|
|
|
emergency_skip_etcd_snapshot: true
|
|
|
|
|
emergency_skip_drain: true
|
2026-04-03 01:43:16 -03:00
|
|
|
skip_etcd_snapshot: false
|
|
|
|
|
skip_drain: false
|
2026-04-04 15:15:34 -03:00
|
|
|
drain_parallelism: 6
|
|
|
|
|
scale_parallelism: 8
|
|
|
|
|
ssh_parallelism: 8
|
2026-04-03 01:43:16 -03:00
|
|
|
ups:
|
|
|
|
|
enabled: true
|
|
|
|
|
provider: nut
|
2026-04-04 05:50:38 -03:00
|
|
|
target: pyrphoros@localhost
|
2026-04-03 14:46:03 -03:00
|
|
|
targets:
|
2026-04-04 05:50:38 -03:00
|
|
|
- name: Pyrphoros
|
|
|
|
|
target: pyrphoros@localhost
|
2026-04-03 01:43:16 -03:00
|
|
|
poll_seconds: 5
|
2026-04-04 18:34:50 -03:00
|
|
|
runtime_safety_factor: 1.25
|
2026-04-03 01:43:16 -03:00
|
|
|
debounce_count: 3
|
|
|
|
|
telemetry_timeout_seconds: 90
|
2026-04-03 14:46:03 -03:00
|
|
|
coordination:
|
|
|
|
|
forward_shutdown_host: ""
|
|
|
|
|
forward_shutdown_user: atlas
|
2026-04-07 13:13:58 -03:00
|
|
|
forward_shutdown_config: /etc/ananke/ananke.yaml
|
2026-04-05 13:18:34 -03:00
|
|
|
peer_hosts: []
|
2026-04-03 14:46:03 -03:00
|
|
|
fallback_local_shutdown: true
|
|
|
|
|
command_timeout_seconds: 25
|
2026-04-04 20:50:58 -03:00
|
|
|
startup_guard_max_age_seconds: 900
|
2026-04-04 12:44:15 -03:00
|
|
|
role: coordinator
|
|
|
|
|
allow_startup_on_battery: false
|
2026-04-03 14:46:03 -03:00
|
|
|
metrics:
|
|
|
|
|
enabled: true
|
|
|
|
|
bind_addr: 0.0.0.0:9560
|
|
|
|
|
path: /metrics
|
2026-04-03 01:43:16 -03:00
|
|
|
state:
|
2026-04-07 13:13:58 -03:00
|
|
|
dir: /var/lib/ananke
|
2026-04-09 01:38:06 -03:00
|
|
|
reports_dir: /var/lib/ananke/reports
|
2026-04-07 13:13:58 -03:00
|
|
|
run_history_path: /var/lib/ananke/runs.json
|
|
|
|
|
lock_path: /var/lib/ananke/ananke.lock
|
|
|
|
|
intent_path: /var/lib/ananke/intent.json
|