Ana içeriğe atla

Environment Variable Kavramı

Ortam değişkenleri, hassas bilgileri (şifreler, API anahtarları, sertifikalar) veya yapılandırma değerlerini güvenli bir şekilde saklamak için kullanılır. Apinizer’da ortam değişkenleri proje seviyesinde tanımlanır ve iki tipte olabilir:
  • Global (Tüm Ortamlar): Tüm ortamlarda aynı değeri kullanır
  • Environment-Specific (Ortam Özelinde): Her ortam için farklı değerler tanımlanabilir

Şifreleme Desteği

Hassas bilgiler şifrelenmiş olarak saklanabilir

Seviye Bazlı

Ortam veya proje seviyesinde tanımlanabilir

Güvenlik

Şifrelenmiş değişkenler güvenli bir şekilde saklanır

Yeniden Kullanım

Birden fazla API Proxy veya Task Flow’da kullanılabilir

Environment Variable Çözümleme Akışı

Aşağıdaki diyagram, environment variable’ların runtime’da nasıl çözümlendiğini ve environment’a göre değerlerin nasıl alındığını gösterir:

Environment Variable Türleri

Şifrelenmiş (Encrypted)

Hassas bilgiler için kullanılırŞifreler, API anahtarları, sertifikalar, token’lar gibi hassas bilgiler şifrelenmiş olarak saklanır.
Önemli: Şifrelenmiş değişkenler geri dönüştürülemez şekilde şifrelenir. Değerler sadece kullanım sırasında çözülür.

Şifrelenmemiş (Unencrypted)

Yapılandırma değerleri için kullanılırURL’ler, port numaraları, flag’ler ve diğer yapılandırma değerleri şifrelenmeden saklanır.
  • Şifreler: Veritabanı şifreleri, API anahtarları
  • Sertifikalar: SSL/TLS sertifikaları
  • Token’lar: OAuth token’ları, JWT secret’ları
  • Diğer Hassas Bilgiler: Güvenlik gerektiren tüm değerler
  • URL’ler: Backend API URL’leri
  • Port Numaraları: Port değerleri
  • Flag’ler: Boolean değerler
  • Diğer Yapılandırmalar: Genel yapılandırma değerleri

Environment Variable Seviyeleri

Environment-Level (Ortam Seviyesi)

Belirli bir ortamda (Environment) geçerlidirO ortamdaki tüm API Proxy’ler ve Task Flow’lar tarafından kullanılabilir. Proje seviyesi değişkenlerden daha yüksek önceliğe sahiptir.

Project-Level (Proje Seviyesi)

Belirli bir projede (Project) geçerlidirO projedeki tüm API Proxy’ler ve Task Flow’lar tarafından kullanılabilir. Ortam seviyesi değişkenlerden daha düşük önceliğe sahiptir.
  • Ortam bazlı backend URL’leri
  • Ortam bazlı API anahtarları
  • Ortam bazlı yapılandırma değerleri
  • Ortam bazlı veritabanı bağlantı bilgileri
  • Proje bazlı yapılandırma değerleri
  • Proje bazlı API anahtarları
  • Proje bazlı genel ayarlar
  • Proje bazlı ortak değerler

Environment Variable Öncelik Sırası

Değişken çözümleme sırası (yüksekten düşüğe):

1. Environment-Level Encrypted

En yüksek öncelikOrtam seviyesinde şifrelenmiş değişkenler.

2. Environment-Level Unencrypted

İkinci öncelikOrtam seviyesinde şifrelenmemiş değişkenler.

3. Project-Level Encrypted

Üçüncü öncelikProje seviyesinde şifrelenmiş değişkenler.

4. Project-Level Unencrypted

En düşük öncelikProje seviyesinde şifrelenmemiş değişkenler.
Not: Aynı isimde bir değişken hem ortam hem de proje seviyesinde tanımlıysa, ortam seviyesindeki değişken kullanılır.

Çalışma Mantığı

1. Tanımlama

Ortam değişkenleri proje seviyesinde tanımlanır
  • Global: Tüm ortamlarda aynı değer
  • Environment-Specific: Her ortam için farklı değer

2. Kullanım

Yapılandırma alanlarında ${variableName} formatında kullanılır
  • Backend adresi: ${BACKEND_URL}
  • Veritabanı: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
  • API anahtarı: ${API_KEY}

3. Runtime Çözümleme

API Proxy çalışırken otomatik çözümlenir
  • Değişken ifadeleri tespit edilir
  • Ortam değeri alınır
  • Secret’lar decrypt edilir
  • Gerçek değerle değiştirilir
Yapılandırma:
  • Development: BACKEND_URL = dev-api.example.com
  • Production: BACKEND_URL = api.example.com
  • Yapılandırmada: ${BACKEND_URL}
Runtime Sonuçları:
  • Development ortamında: dev-api.example.com
  • Production ortamında: api.example.com

Environment Variable Kullanım Formatı

Ortam değişkenleri, yapılandırma alanlarında özel bir format kullanılarak referans edilir.

Format Yapısı

FormatAçıklamaÖrnek
${variableName}Temel kullanım formatı${BACKEND_URL}
text${variableName}Metin ile birleştirmehttps://${API_HOST}
${variableName}textMetin ile birleştirme${API_PORT}/api
text${variable1}text${variable2}Birden fazla değişkenjdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}

Format Kuralları

Başlangıç Karakteri

${ ile başlamalıdır

Bitiş Karakteri

} ile bitmelidir

Değişken Adı

Ortada değişken adı yer alır (boşluk olmadan)

Büyük/Küçük Harf

Değişken adı büyük/küçük harf duyarlıdır

Environment Variable Kullanım Yerleri

Ortam değişkenleri Apinizer platformunda çeşitli yapılandırma alanlarında kullanılabilir. Environment Variable Seçim Dialog’u sadece belirli alanlarda mevcuttur.

API Proxy - Routing

Upstream Routing adresleriKonum: API Proxy > Upstream/Routing Tab > Define Address(es)Backend API adreslerinde ortam bazlı yönlendirme için kullanılır.

Database Connection

Veritabanı bağlantı yapılandırmasıKonum: Administration > Connection Management > Database Connection PoolJDBC URL, Username, Password alanlarında ortam bazlı yönetim.

LDAP Connection

LDAP bağlantı yapılandırmasıKonum: Administration > Connection Management > LDAP Connection PoolLDAP URL, Bind DN, Bind Password alanlarında ortam bazlı yönetim.
ÖzellikAçıklama
KonumAPI Proxy > Upstream/Routing Tab > Define Address(es)
AlanBackend API adresi input alanı
KullanımBackend API adreslerinde ortam bazlı yönlendirme
ErişimAdres input alanının sağındaki liste ikonu butonuna tıklanarak
Kullanım Senaryosu: Farklı ortamlarda farklı backend adresleri kullanmak için
ÖzellikAçıklama
KonumAdministration > Connection Management > Connection Pool Def DB
AlanlarJDBC URL, Username, Password
KullanımVeritabanı bağlantı bilgilerinde ortam bazlı yönetim
Dialog ErişimiHer alanın sağındaki liste ikonu butonuna tıklanarak
Secret KullanımıPassword alanı mutlaka secret olarak işaretlenmelidir
Kullanım Senaryosu: Farklı ortamlarda farklı veritabanı bağlantı bilgileri kullanmak için
ÖzellikAçıklama
KonumAdministration > Connection Management > Connection Pool Def LDAP
AlanlarLDAP URL, Bind DN, Bind Password
KullanımLDAP bağlantı bilgilerinde ortam bazlı yönetim
Dialog ErişimiHer alanın sağındaki liste ikonu butonuna tıklanarak
Secret KullanımıBind Password mutlaka secret olarak işaretlenmelidir
Kullanım Senaryosu: Farklı ortamlarda farklı LDAP bağlantı bilgileri kullanmak için

Kullanım Senaryoları ve Örnekler

Problem: Farklı ortamlarda farklı backend API adresleri kullanılıyor.Çözüm:Ortam Değişkeni Oluşturma:
  • Key Name: BACKEND_API_URL
  • Type: Environment-Specific
  • Development: https://dev-api.example.com
  • Test: https://test-api.example.com
  • Production: https://api.example.com
Routing’de Kullanım:
  • Address: ${BACKEND_API_URL}
Sonuç:
  • Development ortamında istekler https://dev-api.example.com adresine gider
  • Test ortamında istekler https://test-api.example.com adresine gider
  • Production ortamında istekler https://api.example.com adresine gider
Problem: Her ortamda farklı veritabanı kullanılıyor.Çözüm:Ortam Değişkenleri:
  • DB_HOST: Development=dev-db.example.com, Production=prod-db.example.com
  • DB_PORT: Global=3306
  • DB_NAME: Development=dev_db, Production=prod_db
  • DB_USER: Development=dev_user, Production=prod_user
  • DB_PASSWORD: Development=dev_pass, Production=prod_pass (Secret)
Connector’da Kullanım:
  • Connection String: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
  • Username: ${DB_USER}
  • Password: ${DB_PASSWORD}
Sonuç:
  • Development: jdbc:mysql://dev-db.example.com:3306/dev_db
  • Production: jdbc:mysql://prod-db.example.com:3306/prod_db
Problem: Dış servisler için farklı API anahtarları kullanılıyor.Çözüm:Ortam Değişkeni:
  • Key Name: EXTERNAL_SERVICE_API_KEY
  • Type: Environment-Specific
  • Development: dev-key-abc123 (Secret)
  • Production: prod-key-xyz789 (Secret)
Policy’de Kullanım:
  • Header Name: X-API-Key
  • Header Value: ${EXTERNAL_SERVICE_API_KEY}
Sonuç:
  • Development: X-API-Key: dev-key-abc123
  • Production: X-API-Key: prod-key-xyz789

Environment Variable Oluşturma

Ortam değişkeni oluşturma adımları:
  • Ortam Değişkenleri sayfasına gidin
  • Sağ üst köşedeki “Oluştur” (Create) butonuna tıklayın
  • Ortam Değişkeni düzenleme penceresi açılır
  • Key Name (Değişken Adı):
    • Zorunlu alan
    • Proje içinde benzersiz olmalıdır
    • İsim kontrolü otomatik yapılır
    • Geçerli isim: Yeşil onay işareti
    • Mevcut isim: Kırmızı uyarı işareti
  • **Açıklama **:
    • İsteğe bağlı alan
    • Değişkenin ne için kullanıldığını açıklar
  • Environment-Specific (Ortam Özelinde):
    • Her ortam için farklı değer tanımlanabilir
    • Yeni kayıt oluştururken seçilir
    • Kayıt oluşturulduktan sonra değiştirilemez
  • Global (Tüm Ortamlar):
    • Tüm ortamlarda aynı değer kullanılır
    • Yeni kayıt oluştururken seçilir
    • Kayıt oluşturulduktan sonra değiştirilemez
Önemli: Tip seçimi sadece yeni kayıt oluştururken yapılabilir. Mevcut kayıtların tipi değiştirilemez.
Environment-Specific Değişkenler İçin:
  • Ortam Ekleme: “Ortam Ekle” butonuna tıklayarak yeni ortam ekleyin
  • Ortam Seçimi: Her değer için bir ortam seçin
    • Mevcut ortamlar listeden seçilir
    • “Custom…” seçeneği ile özel ortam adı girilebilir
  • Değer Girme: Her ortam için değer girin
  • Secret Ayarlama: Hassas bilgiler için “Secret” checkbox’ını işaretleyin
    • Secret değerler kaydedildikten sonra maskelenir (***********)
    • Secret değerler şifrelenerek saklanır
    • Güncelleme sırasında değer değiştirilmemişse mevcut değer korunur
Global Değişkenler İçin:
  • Global Değer: Tek bir değer girin (tüm ortamlar için geçerli)
  • Secret Ayarlama: Hassas bilgiler için “Secret” checkbox’ını işaretleyin
  • Form Kontrolü: Tüm zorunlu alanlar doldurulmalı ve isim geçerli olmalı
  • “Kaydet ve Deploy” butonuna tıklayın
  • Onay Dialog’u:
    • Değişken adını tekrar girmeniz istenir (güvenlik için)
    • Etkilenecek bileşenler listelenir:
      • API Proxy Routing ayarları
      • Policy Configuration ayarları
      • Connector ayarları
      • Diğer yapılandırma ayarları
  • Deployment Sonucu:
    • Tüm çalışan ortamlara (Environments) otomatik olarak deploy edilir
    • Deployment sonuçları gösterilir
Önemli: Secret olarak işaretlenen değerler kaydedildikten sonra bir daha görüntülenemez.

Environment Variable Düzenleme

Düzenleme Modal’ının Açılması

Düzenleme modal’ı aşağıdaki yollarla açılabilir:
YöntemAçıklama
Liste’den TıklamaOrtam değişkeni adına tıklanır
Menü’den SeçimSatır sonundaki menüden “Edit” seçilir

Düzenleme Modal’ındaki Farklılıklar

ÖzellikYeni KayıtDüzenleme
Modal Başlığı”Add Environment Variable""Edit Environment Variable”
Type SeçimiAktif (değiştirilebilir)Pasif (değiştirilemez)
Secret DeğerlerNormal görünürMaskelenmiş görünür (***********)
Secret CheckboxAktifKaydedilmiş secret’lar için pasif

Best Practices

  • Hassas bilgileri mutlaka şifrelenmiş olarak saklayın
  • Şifreler, API anahtarları, sertifikalar için encrypted kullanın
  • Düzenli olarak şifreleri değiştirin
  • Değişken isimlerini tutarlı bir şekilde adlandırın
  • Ortam ve proje seviyesi değişkenleri doğru şekilde ayırın
  • Dokümantasyon oluşturun
  • Kullanılmayan değişkenleri temizleyin
  • Değişken kullanımını düzenli olarak gözden geçirin
  • Versiyon kontrolü yapın

Sonraki Adımlar