Use when deploying or operating silken_net infrastructure — Kamal/Terraform GCP, Akash decentralized cloud, secrets, observability (Grafana Alloy → Grafana Cloud), disaster-recovery, CI/CD, resilience/failover. This is Module 06 'The Matrix'. Routes to the 06_xx canon docs and the load-bearing infra invariants; does not restate them.
التثبيت
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Use when deploying or operating silken_net infrastructure — Kamal/Terraform GCP, Akash decentralized cloud, secrets, observability (Grafana Alloy → Grafana Cloud), disaster-recovery, CI/CD, resilience/failover. This is Module 06 'The Matrix'. Routes to the 06_xx canon docs and the load-bearing infra invariants; does not restate them.
Deploy & Infrastructure (Module 06 — The Matrix)
DevOps/Infra шар: Rails на Akash (децентралізовано, цензуростійко) +
GCP (Cloud SQL / Redis / failover). Деплой через Kamal, IaC через
Terraform, спостережуваність через Grafana Alloy → Grafana Cloud.
Канон — читати ПЕРЕД зміною інфри/секретів/метрик
SSOT One-Home: цей skill лише маршрутизує; факти живуть у docs/ + config-SSOT.
Не дублюй сюди значення/інвентар і не хардкодь file:line (дрейфує — стале вже за
комітом). Посилайся на стабільні якорі: канон-§ + імена символів/шляхів.
Що треба
Канон-дім
Деплой Kamal + Terraform GCP, Canopy vs Production
Будь-хто, хто чіпає деплой, МУСИТЬ це знати (суть тут, механіка — за canon-§):
Akash + GCP — failover, не «або-або». Rails-ворклоад на Akash; GCP тримає
Cloud SQL + є failover-ціллю (Redis — зовнішній Upstash Serverless TLS, не GCP). → 06_01 / 06_02.
CoAP-інтейк: PRIMARY = демон на Ingress Anchor (docker+systemd, приватний IP Cloud SQL
БЕЗ Auth Proxy; секрети /etc/silkennet/coap.env, НЕ metadata). Akash coap = idle-fallback
за socat (перемикання 2×systemctl); money/web лишаються на Akash. coap.env = 3-тя
boot-contract поверхня поза sdl_consistency (pure UDP glue, нуль key-derivation → несе
AR-encryption-трійку, НЕPROVISIONING_MASTER_KEY; guard spec/deploy/anchor_coap_env_spec.rb).
→ 06_01 / 06_02 / 06_04 §5.7.
Cloud SQL Auth Proxy авторизує через Google API, але СОКЕТ іде на IP інстанса —
з Akash (поза VPC) досяжний лише ПУБЛІЧНИЙ IP → ipv4_enabled = true обов'язковий
(authorized_networks порожній — доступ тільки IAM-proxy; ENCRYPTED_ONLY). private-only
= crash-loop усіх сервісів. Проксі активується лише коли CLOUD_SQL_INSTANCE_CONNECTION_NAME
заданий; Kamal-шлях (у VPC) — приватний IP напряму. → 06_02 (+ terraform/database.tf at-use).
Observability = Alloy → Grafana Cloud SaaS; self-hosted Prometheus НЕ потрібен (OBS.1).
Реєстр in-process → web:80 НЕ бачить job/coap-інкрементів напряму → Alloy скрейпить
три таргети (web:80+job:9394+coap:9395, лейбл process). Топологія/стелі → 06_03 §2.9;
реєстр+кількість метрик → 06_03 §2.8 (не хардкодь).
jemalloc через LD_PRELOAD у Docker-образі (libjemalloc.so) — менше пам'яті
й латентності. Не прибирай без бенчмарку.
SENTRY_DSN задається at deploy time (.kamal/secrets-common); без нього Sentry
інертний — нуль crash-репортів.
Старт через Thruster (thrust ./bin/rails server) за замовчуванням; overridable at runtime.
WIF рантайм = ТРИ GCP API — iam (default-on) + sts + iamcredentials; останні два увімкнути ЯВНО. Пропущений sts.googleapis.com → перший keyless CI-run падає SERVICE_DISABLED (STS робить OIDC→federated exchange ПЕРЕД impersonation), а terraform validate/local-apply це НЕ ловлять (STS не викликається при create pool).
keyless AUTH ≠ terraform-apply CAPABILITY — CI імперсонує least-privilege deploy-SA БЕЗ IAM/WIF/serviceusage-admin → CI terraform apply/drift-plan рефреш IAM/WIF-ресурсів = 403. Модель: apply founder-local (рек.) АБО SA-privesc (god-credential concern). → 00_07 INF.22.
gh run watch --exit-status бреше (exit 0 on fail / 1 on empty) — щоб перевірити, чи Deploy·Canopy/Production реально пройшов, довіряй gh run view --json conclusion, не watch.