Murat ÖZDEMİR 87df1b3a5c docs(prod): mark initial deployment pipeline completed
Update the production installation history to show the initial deployment pipeline as completed.

Normalize the historical status table formatting while keeping the recorded setup milestones unchanged.
2026-06-18 19:32:34 +03:00

iklim.co Altyapı ve Sunucu Yönetimi

Bu depo, iklim.co test ve production ortamlarını provision etmek, yapılandırmak, işletmek ve modernize etmek için kullanılan Infrastructure-as-Code varlıklarını, kurulum runbook'larını, operasyonel facts dokümanlarını ve planlama notlarını içerir.

Altyapı yönetimi Hetzner Cloud üzerinde Terraform ile kaynak provisioning, Ansible ile işletim sistemi ve Swarm bootstrap, Docker Swarm üzerinde altyapı ve uygulama servislerinin deploy edilmesi süreçlerini kapsar.

Depo Yapısı

Terraform (terraform/)

Terraform, uzak test ve production ortamları için Hetzner Cloud kaynaklarını tanımlar:

  • terraform/hetzner/test: test sunucuları, network, firewall, Floating IP, placement ve outputs.
  • terraform/hetzner/prod: production app/service node'ları, DB node'ları, private networking, firewall'lar, placement group'lar, Floating IP ve outputs.

Dev ortamı lokal ve Docker Compose tabanlıdır; bu Terraform stack'leri tarafından provision edilmez.

Ansible (ansible/)

Ansible, Terraform provisioning sonrası uzak host'ları hazırlar:

  • ansible/test: test bootstrap playbook'ları, inventory ve ortama özel değişkenler.
  • ansible/prod: production bootstrap playbook'ları, inventory, değişkenler ve prod'a özel rol override'ları.
  • ansible/roles: base, hardening, docker, swarm, node_dirs, storagebox, storagebox_ssh_key, act_runner ve ortak db_stack gibi paylaşılan roller.

Production, ansible/prod/ansible.cfg içinde roles_path = roles:../roles kullanır. Bu nedenle ansible/prod/roles/db_stack gibi prod-local roller mevcut olduğunda paylaşılan rollerden önce çalışır.

Setup Runbook'ları (setup/)

Setup dokümanları, ortamları ayağa kaldırmak veya büyük altyapı değişikliklerini uygulamak için kullanılan kanonik uygulama runbook'larıdır. Güncel dosyalar:

Bu dokümanlar Terraform, Ansible, Swarm label'ları, StorageBox path'leri, runner ön koşulları, DB servisleri ve production Swarm deploy modelinin birlikte nasıl çalıştığınııklar.

Roadmap (roadmap/)

Roadmap dokümanları test ve production değişiklikleri için gereksinimleri, tasarım hedeflerini ve migration planlarınııklar:

Roadmap dokümanlarını amaç ve tasarım bağlamı için kullanın. Güncel uygulama akışı için setup runbook'larını kullanın.

Setup vs Roadmap Map

setup-vs-roadmap-map.md, roadmap maddelerini bu maddeleri hayata geçiren setup dokümanları ve implementation alanları ile eşler.

Facts (facts/)

Facts dokümanları güncel durum detaylarını ve operasyonel geçmişi korur:

Facts dokümanlarını “sistem şu an nasıl çalışıyor?” sorusu, tarihsel bağlam ve setup sonrası doğrulama için kullanın.

Hetzner Sizing Report

hetzner-sizing-report.md, altyapı servisleri, veritabanları, broker'lar ve uygulama workload'ları için sunucu sizing, CPU/RAM seçimleri ve maliyet/performans değerlendirmelerini açıklar.

Confluence Export (confluence-wiki/)

confluence-wiki/, altyapı notlarının repository dışına yayınlanması veya mirror edilmesi gerektiğinde kullanılan wiki odaklı/export edilmiş dokümantasyon materyallerini içerir.

Güncel Production Modeli

Production şu anda ayrık altyapı modeli kullanır:

  • Ana infra ve DB stack: root docker-stack-infra_db-prod.yml.
  • Vault stack: root docker-stack-vault.yml.
  • Vault bootstrap: root init/vault/vault-bootstrap.sh; production deploy akışında init-infra-prod.sh üzerinden çağrılır.
  • Production pipeline source of truth: root .gitea/workflows/deploy-prod.yml ve root prod_env-ci_dc-pipeline.md.

docker-stack-infra_db-prod.yml bilinçli olarak karma bir stack'tir:

  • Patroni/PostgreSQL, MongoDB ve etcd gibi DB/cluster servisleri iklim-db-* node'larında çalışır ve gerektiği yerde host-mode cluster portları kullanır.
  • Redis, Redis Sentinel ve RabbitMQ gibi service-node altyapı servisleri node.labels.type == service app/service node'larında çalışır ve stack veya reverse proxy tarafından açıkça expose edilmedikçe Docker overlay network üzerinde kalır.

Kanonik Kurulum Akışı

Yeni bir ortam veya büyük bir altyapı güncellemesi için:

  1. hetzner-sizing-report.md dosyasını inceleyin.
  2. Tasarım amacını anlamak için ilgili roadmap/ dokümanlarını inceleyin.
  3. Her roadmap maddesinin hangi setup runbook'u ile uygulandığını görmek için setup-vs-roadmap-map.md dosyasını kontrol edin.
  4. Hedef ortam için numaralı setup/ runbook'larını sırayla takip edin.
  5. Güncel davranışı, recovery prosedürlerini, firewall durumunu ve production geçmişini doğrulamak için facts/ dokümanlarını kullanın.

Gerekli Araçlar

  • Terraform >= 1.6
  • Ansible
  • Hedef ortam için Hetzner Cloud API token
  • Sunucu erişimi için yetkili SSH key pair

Notlar

  • Dev ortamı lokal ve Docker Compose tabanlıdır; uzak Terraform/Ansible otomasyonu test ve production ortamlarını hedefler.
  • Test daha küçük bir uzak ortamdır ve single-node DB/App varsayımlarına dayanır.
  • Production üç app/service node ve üç DB node içeren high-availability uzak ortamdır.
Description
No description provided
Readme 2.6 MiB
Languages
HCL 83.6%
Jinja 16.4%