recruiter-responder: vault DB role + switch proactive push to Telegram
- stacks/vault/main.tf: register pg-recruiter-responder static role on the postgresql connection (7d password rotation). Adds the role to allowed_roles and creates vault_database_secret_backend_static_role for `recruiter_responder` user. - stacks/recruiter-responder/main.tf: drop TASK_WEBHOOK_URL env, swap TASK_WEBHOOK_TOKEN secret for TELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID. Updated header doc. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
89e9471e87
commit
a72590db7d
2 changed files with 15 additions and 8 deletions
|
|
@ -38,8 +38,9 @@ resource "kubernetes_namespace" "recruiter_responder" {
|
||||||
# imap_spam_pass — IMAP password for spam@
|
# imap_spam_pass — IMAP password for spam@
|
||||||
# smtp_password — SMTP password for me@viktorbarzin.me
|
# smtp_password — SMTP password for me@viktorbarzin.me
|
||||||
# claude_agent_token — Bearer for claude-agent-service (Tier-2)
|
# claude_agent_token — Bearer for claude-agent-service (Tier-2)
|
||||||
# task_webhook_token — Bearer for OpenClaw task-webhook (optional;
|
# telegram_bot_token — Bot token for @ViktorBarzinOpenClawBot
|
||||||
# empty allowed if task-webhook is unauthed)
|
# (same as secret/openclaw.telegram_bot_token)
|
||||||
|
# telegram_chat_id — Viktor's Telegram chat id (8281953845)
|
||||||
#
|
#
|
||||||
# Schema in CNPG: `recruiter_responder` (alembic creates on first migrate).
|
# Schema in CNPG: `recruiter_responder` (alembic creates on first migrate).
|
||||||
# DB user: created via Vault database engine — see static-creds/pg-recruiter-responder.
|
# DB user: created via Vault database engine — see static-creds/pg-recruiter-responder.
|
||||||
|
|
@ -75,7 +76,8 @@ resource "kubernetes_manifest" "external_secret" {
|
||||||
{ secretKey = "IMAP_SPAM_PASS", remoteRef = { key = "recruiter-responder", property = "imap_spam_pass" } },
|
{ secretKey = "IMAP_SPAM_PASS", remoteRef = { key = "recruiter-responder", property = "imap_spam_pass" } },
|
||||||
{ secretKey = "SMTP_PASSWORD", remoteRef = { key = "recruiter-responder", property = "smtp_password" } },
|
{ secretKey = "SMTP_PASSWORD", remoteRef = { key = "recruiter-responder", property = "smtp_password" } },
|
||||||
{ secretKey = "CLAUDE_AGENT_TOKEN", remoteRef = { key = "recruiter-responder", property = "claude_agent_token" } },
|
{ secretKey = "CLAUDE_AGENT_TOKEN", remoteRef = { key = "recruiter-responder", property = "claude_agent_token" } },
|
||||||
{ secretKey = "TASK_WEBHOOK_TOKEN", remoteRef = { key = "recruiter-responder", property = "task_webhook_token" } },
|
{ secretKey = "TELEGRAM_BOT_TOKEN", remoteRef = { key = "recruiter-responder", property = "telegram_bot_token" } },
|
||||||
|
{ secretKey = "TELEGRAM_CHAT_ID", remoteRef = { key = "recruiter-responder", property = "telegram_chat_id" } },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -240,11 +242,7 @@ resource "kubernetes_deployment" "recruiter_responder" {
|
||||||
name = "CLAUDE_AGENT_URL"
|
name = "CLAUDE_AGENT_URL"
|
||||||
value = "http://claude-agent-service.claude-agent.svc.cluster.local:8080"
|
value = "http://claude-agent-service.claude-agent.svc.cluster.local:8080"
|
||||||
}
|
}
|
||||||
# OpenClaw proactive push
|
# Telegram bot (no URL env needed — token in secret)
|
||||||
env {
|
|
||||||
name = "TASK_WEBHOOK_URL"
|
|
||||||
value = "http://task-webhook.openclaw.svc.cluster.local"
|
|
||||||
}
|
|
||||||
|
|
||||||
readiness_probe {
|
readiness_probe {
|
||||||
http_get {
|
http_get {
|
||||||
|
|
|
||||||
|
|
@ -577,6 +577,7 @@ resource "vault_database_secret_backend_connection" "postgresql" {
|
||||||
"pg-terraform-state", "pg-payslip-ingest", "pg-job-hunter",
|
"pg-terraform-state", "pg-payslip-ingest", "pg-job-hunter",
|
||||||
"pg-wealthfolio-sync", "pg-fire-planner",
|
"pg-wealthfolio-sync", "pg-fire-planner",
|
||||||
"pg-postiz", "pg-instagram-poster",
|
"pg-postiz", "pg-instagram-poster",
|
||||||
|
"pg-recruiter-responder",
|
||||||
]
|
]
|
||||||
|
|
||||||
postgresql {
|
postgresql {
|
||||||
|
|
@ -765,6 +766,14 @@ resource "vault_database_secret_backend_static_role" "pg_instagram_poster" {
|
||||||
rotation_period = 604800
|
rotation_period = 604800
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "vault_database_secret_backend_static_role" "pg_recruiter_responder" {
|
||||||
|
backend = vault_mount.database.path
|
||||||
|
db_name = vault_database_secret_backend_connection.postgresql.name
|
||||||
|
name = "pg-recruiter-responder"
|
||||||
|
username = "recruiter_responder"
|
||||||
|
rotation_period = 604800
|
||||||
|
}
|
||||||
|
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
# Kubernetes Secrets Engine — Dynamic K8s Credentials
|
# Kubernetes Secrets Engine — Dynamic K8s Credentials
|
||||||
# =============================================================================
|
# =============================================================================
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue