Blogchevron_rightSunucu Yönetimichevron_rightDocker Swarm Secret ve Config Yönetimi: Kapsamlı Rehber

Docker Swarm Secret ve Config Yönetimi: Kapsamlı Rehber

S
Serversium
calendar_today26 Mayıs 2026
schedule5 dk okuma
Docker Swarm Secret ve Config Yönetimi: Kapsamlı Rehber

Docker Swarm'da Secret ve Config Yönetimi: Kapsamlı Rehber

Docker Swarm, Kubernetes'e alternatif olarak sunulan yerel orkestrasyon çözümüdür ve container tabanlı uygulamaların yönetimini kolaylaştırır. Ancak production ortamlarında güvenlik ve konfigürasyon yönetimi kritik önem taşır. Docker Swarm'ın sunduğu Secret ve Config özellikleri, hassas verilerin ve uygulama ayarlarının güvenli bir şekilde yönetilmesini sağlar. Bu rehberde, Docker Swarm'da secret ve config yönetiminin tüm inceliklerini detaylı olarak ele alacağız.

Docker Swarm Secret Nedir ve Neden Kullanılır?

Docker Swarm Secret (sır), Docker Swarm servislerine güvenli bir şekilde iletilen hassas verileri kapsüller. Parolalar, API anahtarları, TLS sertifikaları ve veritabanı kimlik bilgileri gibi sensitive bilgiler secret olarak yönetilir. Bu veriler, Swarm manager node'lar arasında RAKT (Raft Consensus Algorithm) ile şifrelenmiş olarak iletilir ve yalnızca yetkili container'lara erişim hakkı tanınır.

Geleneksel yöntemlerde hassas bilgiler ortam değişkenleri (environment variables) aracılığıyla aktarılırdı. Ancak bu yaklaşım ciddi güvenlik açıklarına yol açar. Ortam değişkenleri, container metadata'sında ve Docker inspect çıktılarında düz metin olarak görüntülenebilir. Docker Swarm secret'leri ise Linux tmpfs üzerinde saklanır ve container durdurulduğunda otomatik olarak silinir.

Docker Swarm Config Nedir?

Config, secret'ten farklı olarak hassas olmayan konfigürasyon verilerini yönetmek için kullanılır. Nginx yapılandırma dosyaları, uygulama ayar dosyaları (JSON, YAML, TOML), sistem yapılandırmaları ve diğer statik içerikler config olarak tanımlanır. Config'ler secret'ler gibi şifrelenmiş olarak saklanır ancak container içinde düz metin olarak erişilebilir durumdadır.

Config kullanmanın en büyük avantajlarından biri, uygulama kodunu değiştirmeden yapılandırma güncellemeleri yapabilmektir. Bu sayede infrastructure as code prensipleri daha etkin uygulanır ve deployment süreçleri otomatize edilir.

Docker Swarm Secret Oluşturma ve Kullanma

Secret Oluşturma Komutları

Docker Swarm'da secret oluşturmak için docker secret create komutu kullanılır. Aşağıdaki örnekler temel secret oluşturma yöntemlerini göstermektedir:

# Dosyadan secret oluşturma
echo "veritabani_parolasi123" | docker secret create db_password -

# Direkt olarak secret oluşturma
docker secret create my_api_key api_key_degeri

# Dosyadan secret oluşturma
docker secret create nginx_ssl_cert /path/to/certificate.crt

Secret oluşturulduktan sonra docker secret ls komutu ile listelenebilir. Ancak secret değerleri güvenlik nedeniyle doğrudan görüntülenemez.

Servislere Secret Ekleme

Oluşturulan secret'ler, servis oluşturulurken veya güncellenirken container'lara monte edilir. Aşağıdaki örnek, bir MySQL servisine secret eklemeyi göstermektedir:

# Secret ile birlikte servis oluşturma
docker service create \
  --name mysql_db \
  --secret db_root_password \
  --secret db_user_password \
  -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db_root_password \
  -e MYSQL_PASSWORD_FILE=/run/secrets/db_user_password \
  mysql:8.0

Secret'ler container içinde /run/secrets/ dizinine monte edilir. Dosya adı, secret adı ile aynıdır. Örneğin, db_password secret'i /run/secrets/db_password olarak erişilebilir olur.

External Secret Kullanımı

Bazı durumlarda harici secret yönetim sistemlerinden (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault) secret'leri Docker Swarm'a entegre etmek gerekebilir. Bu durumda docker-compose dosyasında external secrets tanımlaması yapılabilir:

secrets:
  db_password:
    external: true
    name: "external-secret-name"

Bu yaklaşım, mevcut secret yönetim altyapınızı Docker Swarm ile entegre etmenize olanak tanır ve Docker Compose kullanım esnekliği sağlar.

Docker Swarm Config Oluşturma ve Kullanma

Config Oluşturma

Config oluşturma süreci secret oluşturmaya benzer. docker config create komutu kullanılarak yapılandırma dosyaları Swarm'a eklenir:

# Nginx yapılandırma dosyasından config oluşturma
docker config create nginx_config /path/to/nginx.conf

# Uygulama yapılandırmasından config oluşturma
docker config create app_config config.json

# Stdinput'dan config oluşturma
cat config.yaml | docker config create app_yaml -

Servislere Config Ekleme

Config'ler, secret'lerden farklı olarak / dizinine monte edilir. Nginx servisi için config ekleme örneği:

# Nginx servisi oluşturma ve config ekleme
docker service create \
  --name nginx_web \
  --config src=nginx_config,target=/etc/nginx/nginx.conf \
  -p 80:80 \
  nginx:alpine

Config'lerin mount noktası target parametresi ile özelleştirilebilir. Birden fazla config eklemek için --config flag'i tekrarlanabilir.

Config Güncelleme

Config güncellemeleri, servis yeniden başlatılmadan uygulanamaz. Ancak Docker Swarm'ın update özelliği ile kademeli güncelleme yapılabilir:

# Config güncelleme
docker config create nginx_config_v2 /path/to/nginx_new.conf

# Servisi yeni config ile güncelleme
docker service update \
  --config-rm nginx_config \
  --config-add source=nginx_config_v2,target=/etc/nginx/nginx.conf \
  nginx_web

Bu yakışım, zero-downtime deployment için kritik öneme sahiptir ve production ortamlarında kesintisiz hizmet sunumunu sağlar.

Secret ve Config Arasındaki Farklar

Hem secret hem de config, Docker Swarm'da encrypted olarak saklanır ve yönetilir. Ancak kullanım amaçları ve güvenlik düzeyleri farklıdır:

td> Veriler kalıcı olarak saklanır
Özellik Secret Config
Kullanım Amacı Hassas veriler (parolalar, API anahtarları) Genel yapılandırma dosyaları
Şifreleme RAKT ile şifreli, tmpfs'te saklanır Şifreli saklanır
Container Erişimi /run/secrets/ dizininde dosya olarak Belirtilen hedef dizinde
Görünürlük Container içinde düz metin ama inspect'te görünmez Container içinde düz metin
Otomatik Temizleme Container durduğunda silinir

Docker Compose ile Secret ve Config Yönetimi

Docker Compose dosyalarında secret ve config tanımlamak, geliştirme ve test ortamlarında büyük kolaylık sağlar. Aşağıda kapsamlı bir örnek verilmiştir:

version: '3.8'

services:
  web:
    image: nginx:alpine
    configs:
      - source: nginx_conf
        target: /etc/nginx/nginx.conf
    secrets:
      - db_password
      - api_key

configs:
  nginx_conf:
    file: ./nginx.conf

secrets:
  db_password:
    file: ./secrets/db_password.txt
  api_key:
    external: true

Bu yapılandırma, hem local dosyalardan hem de harici sistemlerden secret ve config yönetimini destekler. Docker Compose kullanımı ile stack deploy komutu tek seferde tüm yapılandırmayı uygulayabilir.

En İyi Uygulamalar ve Güvenlik Önerileri

Secret Yönetimi En İyi Uygulamaları

  1. Minimal Yetki Prensibi: Her servise yalnızca ihtiyaç duyduğu secret'leri ekleyin. Gereksiz secret erişimi güvenlik riski oluşturur.
  2. Düzenli Rotasyon: Secret'leri düzenli aralıklarla güncelleyin. Özellikle personelin ayrılması veya güvenlik ihlali şüphesi durumunda immediately değiştirin.
  3. Harici Secret Yönetimi: Büyük ölçekli ortamlarda HashiCorp Vault veya bulut tabanlı secret yönetim servislerini kullanın.
  4. Log İzleme: Secret'lere erişim log'larını izleyin ve şüpheli aktiviteleri tespit edin.
  5. Encryption at Rest: Docker Swarm, secret'leri disk üzerinde şifreli saklar. Ancak ek güvenlik katmanı için Volume Encryption kullanın.

Config Yönetimi En İyi Uygulamaları

  1. Versiyon Kontrolü: Config dosyalarını Git gibi versiyon kontrol sistemlerinde saklayın.
  2. Şablon Kullanımı: Environment bazlı değişkenler için template sistemleri kullanın.
  3. Config Validation: Deploy öncesi config dosyalarını doğrulayın.
  4. Immutable Config: Mümkünse config'leri immutable olarak deploy edin ve değişiklik için yeni versiyon oluşturun.

Production Ortamında Dikkat Edilmesi Gerekenler

Yüksek Erişilebilirlik

Production ortamlarında en az 3 manager node kullanılması önerilir. Bu, RAKT consensus algoritmasının sağlıklı çalışması ve yüksek erişilebilirlik için gereklidir. Manager node sayısı arttıkça, secret ve config yönetimi daha güvenli hale gelir.

Felaket kurtarma planlaması kapsamında secret ve config yedekleme stratejileri oluşturulmalıdır. Manager node'lar arasında secret dağılımı otomatik yapılır, ancak emergency durumları için yedekleme prosedürleri belgelenmelidir.

Network Güvenliği

Docker Swarm overlay ağları, secret'lerin node'lar arasında şifrelenmiş iletilmesini sağlar. Ancak ek güvenlik için:

  • Manager ve worker node'ları ayrı ağlarda izole edin
  • Güvenlik duvarı kuralları ile port erişimini kısıtlayın
  • Node authentication için mutual TLS kullanın

Monitoring ve Logging

Secret ve config operasyonlarını izlemek için merkezi log sistemi kurun. Aşağıdaki metrikler takip edilmelidir:

  • Secret oluşturma/güncelleme/silme operasyonları
  • Config değişiklikleri ve deployment'lar
  • Yetkisiz erişim denemeleri
  • Servis restart'ları ve config reload olayları

Bu metrikler için Prometheus ve Grafana gibi araçlar kullanılabilir. Özellikle kendi analytics servisinizi host etmek gibi izleme gereksinimleri için altyapı oluşturulabilir.

Örnek: Tam Stack Uygulama Yapılandırması

Aşağıda, Docker Swarm üzerinde çalışan çok katmanlı bir uygulamanın secret ve config yapılandırması verilmiştir:

# Stack dosyası: docker-stack.yml
version: '3.8'

services:
  api:
    image: myapp/api:latest
    environment:
      - NODE_ENV=production
    secrets:
      - db_credentials
      - redis_password
      - jwt_secret
    configs:
      - source: api_config
        target: /app/config/production.json
    deploy:
      replicas: 3
      update_config:
        parallelism: 1
        delay: 10s

  nginx:
    image: nginx:alpine
    ports:
      - "80:80"
      - "443:443"
    configs:
      - source: nginx_main
        target: /etc/nginx/nginx.conf
      - source: nginx_ssl_certs
        target: /etc/nginx/ssl/cert.pem
    secrets:
      - source: ssl_key
        target

library_booksBenzer İçerikler

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber
Sunucu Yönetimi
calendar_today5 Nisan 2026
schedule5 dk

Cloud Sunucu Nedir? Avantajları ve Detaylı Rehber

Cloud sunucular, dinamik kaynak dağıtımıyla işletmelerin kesintisiz büyümesini sağlar. Avantajlardan karşılaştırmalara tüm detaylar bu rehberde yer alıyor.

S
Serversiumarrow_forward
Linux vs Windows Sunucu: Hangisi Projeye Uygun?
Sunucu Yönetimi
calendar_today6 Nisan 2026
schedule5 dk

Linux vs Windows Sunucu: Hangisi Projeye Uygun?

Linux ve Windows Sunucu arasındaki teknik farkları, maliyet avantajlarını ve proje uyumluluğunu detaylı olarak karşılaştırıyoruz. Yazılım stack'inize en uygun işletim sistemini seçmek için kapsamlı rehberimizle doğru altyapı kararını verin.

S
Serversiumarrow_forward
Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber
Sunucu Yönetimi
calendar_today16 Nisan 2026
schedule5 dk

Plesk Kurulumu - Ubuntu 24 Üzerinde Adım Adım Rehber

Ubuntu 24 üzerinde Plesk kurulumunu adım adım öğrenin. Bu rehberde sistem gereksinimleri, kurulum adımları ve temel yapılandırma ayarlarını bulabilirsiniz.

S
Serversiumarrow_forward