Moder veri dünyasında, kendi kendine barındırılan İş Zekası (BI) çözümleri güvenlik, özelleştirme ve maliyet üzerinde eşsiz bir kontrol sağlar. Apache Superset, veri keşfi ve görselleştirme için güçlü bir platform sunan önde gelen açık kaynaklı bir araç haline gelmiştir. Bulut tabanlı sürümler mevcut olsa da, Superset'i kendi altyapınızda dağıtmak mevcut veri ambarlarıyla daha derin entegrasyon ve sıkı uyumluluk gereksinimleri sağlar.
Bu kılavuz, Apache Superset'i Docker Compose kullanarak dağıtmanızı adım adım anlatır. Bu yöntem, tam bir Kubernetes kümesinin karmaşıklığı olmadan tekrarlanabilir, izole ve kolayca yönetilebilir bir ortam isteyen orta seviye geliştiriciler için idealdir. Gerekli yapılandırmayı, veritabanı başlatmasını ve başlatma prosedürlerini ele alacağız.
Ön Koşullar ve Ortam Kurulumu
Dağıtıma başlamadan önce, yerel makinenizin veya sunucunuzun aşağıdaki gereksinimleri karşıladığından emin olun:
- Docker ve Docker Compose: Yüklenmiş ve çalışır durumda olmalıdır. Bunu
docker --versionkomutunu çalıştırarak doğrulayabilirsiniz. - Python Bilgisi: Python ortamlarıyla aşinalık faydalıdır, ancak Docker ağır işlerin çoğunu soyutlar.
- Veri Ambarı Erişimi: Hedef veri kaynağınız (örneğin PostgreSQL, Redshift, BigQuery veya Snowflake) için kimlik bilgilerini hazır bulundurun.
Superset projeniz için yeni bir dizin oluşturun ve içine gidin. Bu dizin yapılandırmanızı ve Docker Compose dosyasını barındıracaktır.
Yığın Yapılandırması
Superset bağımlılıklarını yönetmenin en verimli yolu bir docker-compose.yml dosyası kullanmaktır. Bu dosya hizmetleri (Superset, Veritabanı, Redis) ve aralarındaki bağlantıları tanımlar.
Aşağıda sağlam bir yapılandırma şablonu bulunmaktadır. Meta veriler için kalıcı bir PostgreSQL veritabanı ve önbellekleme ile görev kuyruğu yönetimi için Redis içerir.
version: '3.9'
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 50
postgres:
image: postgres:15-alpine
ports:
- "5432:5432"
environment:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
POSTGRES_DB: superset
volumes:
- superset-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "superset"]
interval: 10s
timeout: 5s
retries: 5
superset:
image: apache/superset:latest
restart: unless-stopped
ports:
- "8088:8088"
command: superset init
environment:
SUPERSET_SECRET_KEY: 'your-very-secure-secret-key-here'
DATABASE_HOST: postgres
DATABASE_PORT: 5432
DATABASE_USER: superset
DATABASE_PASSWORD: superset
DATABASE_DB: superset
volumes:
- superset-home:/app/superset_home
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
volumes:
superset-home:
superset-db:
Önemli Güvenlik Notu: Yukarıdaki yapılandırmada, your-very-secure-secret-key-here metnini güçlü ve rastgele bir dizeyle değiştirin. Bu anahtar oturum çerezlerini imzalamak için kullanılır ve oturum hırsızlığına karşı uygulamanızı güvence altına almak için kritik öneme sahiptir.
Başlatma ve İlk Çalıştırma
docker-compose.yml dosyası kaydedildikten sonra, veritabanı şemasını başlatmak ve hizmetleri başlatmaya hazırsınız. Superset Docker görüntüsü, superset init komutu geçirildiğinde veritabanı geçişlerini otomatik olarak işleyen bir komut giriş noktası içerir.
Terminalde, compose dosyanızı içeren dizinden aşağıdaki komutu çalıştırın:
docker compose up -d
Bu komut kapsayıcıları arka plan modunda başlatır. Bu komutu ilk kez çalıştırdığınızda, Superset veritabanı geçişlerini gerçekleştirecektir ve bu işlem bir veya iki dakika sürebilir. İşlemin başarıyla tamamlandığından emin olmak için günlükleri izleyebilirsiniz:
docker compose logs -f superset
Günlüklerde "Superset çalışıyor" mesajını gördüğünüzde, örneğiniz yayında demektir. Tarayıcınızda http://localhost:8088 adresine gidin. Varsayılan kimlik bilgileri admin / admin'dir. İlk giriş yaptığınızda, şifrenizi hemen değiştirmeniz istenecektir.
Üretim Düşünceleri
Yukarıdaki kurulum geliştirme ve aşama (staging) için mükemmel olsa da, üretim dağıtımları ek güvenlik önlemleri gerektirir:
- Ters Proxy: SSL/TLS sonlandırmasını işlemek için Superset'in önüne Nginx veya Apache yerleştirin.
- Kalıcı Depolama: Veritabanı hacimlerinin düzenli olarak yedeklendiğinden emin olun.
- Gizli Bilgi Yönetimi: Hassas veriler için ortam değişkenleri yerine Docker Secrets veya Harici bir gizli bilgi yöneticisi (HashiCorp Vault gibi) kullanın.
- İşçi Ölçeklendirme: Büyük ölçekli panolar için asenkron görevleri işlemek üzere Docker Compose yığınağına Celery işçileri eklemeyi düşünün.
Sonuç
Docker Compose aracılığıyla Apache Superset dağıtmak, güçlü bir BI aracını hızlı bir şekilde çalıştırmaya yönelik akıcı bir yol sağlar. Veritabanını, önbelleği ve uygulama katmanını izole ederek, veri ekibiniz için yönetilebilir ve ölçeklenebilir bir temel oluşturursunuz.
Buradan itibaren, veri kaynaklarınızı bağlamaya, panolar oluşturmaya ve içgörülerinizi kuruluşunuzda paylaşmaya başlayabilirsiniz. İhtiyaçlarınız büyüdükçe, bu Docker tabanlı temel, Kubernetes veya Terraform ile daha karmaşık orkestrasyonlar için bir şablon olarak hizmet verebilir. İyi analizler!