Ortam Değişkenleri (Environment Variables), Apinizer API Management Platform'unda farklı ortamlarda (Development, Test, Production) farklı değerler kullanılması gereken yapılandırma bilgilerini merkezi olarak yönetmenizi sağlayan bir özelliktir. Bu özellik sayesinde aynı API Proxy yapılandırması farklı ortamlarda farklı backend adresleri, veritabanı bağlantı bilgileri, API anahtarları gibi değerleri dinamik olarak kullanabilir.

Çalışma Mantığı

1. Tanımlama Aşaması

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

2. Kullanım Aşaması

Ortam değişkenleri, yapılandırma alanlarında ${variableName} formatında kullanılır:

  • Örnek 1: Backend adresi için ${BACKEND_URL}
  • Örnek 2: Veritabanı bağlantı string'i için jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
  • Örnek 3: API anahtarı için ${API_KEY}

3. Runtime Çözümleme

API Proxy çalışırken (runtime):

  1. Yapılandırmadaki ${variableName} formatındaki ifadeler tespit edilir
  2. İlgili ortamın (Environment) değişken değeri alınır
  3. Secret değerler otomatik olarak decrypt edilir
  4. Değişken adı gerçek değerle değiştirilir
  5. İşlem gerçek değerle devam eder

Örnek Senaryo:

Ortam Değişkeni Oluşturma (Create)

Ortam değişkeni oluşturma adımlarını içeren görsel aşağıda verilmiştir:

Ortam değişkeni oluşturma konfigürasyonları adım adım aşağıdaki tabloda anlatılmıştır:

Adım İşlev

Adım 1: Yeni Ortam Değişkeni Ekleme

  1. Ortam Değişkenleri sayfasına gidin
  2. Sağ üst köşedeki "Oluştur" (Create) butonuna tıklayın
  3. Ortam Değişkeni düzenleme penceresi açılır

Adım 2: Temel Bilgileri Girme

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 (Description):

  • İsteğe bağlı alan
  • Değişkenin ne için kullanıldığını açıklar

Adım 3: Tip Seçimi

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

Tip seçimi sadece yeni kayıt oluştururken yapılabilir. Mevcut kayıtların tipi değiştirilemez.

Adım 4: Değer Tanımlama

Environment-Specific Değişkenler İçin:

  1. Ortam Ekleme: "Ortam Ekle" butonuna tıklayarak yeni ortam ekleyin
  2. 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
  3. Değer Girme: Her ortam için değer girin
  4. 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:

  1. Global Değer: Tek bir değer girin (tüm ortamlar için geçerli)
  2. Secret Ayarlama: Hassas bilgiler için "Secret" checkbox'ını işaretleyin


Adım 5: Kaydetme ve Deployment

  1. Form Kontrolü: Tüm zorunlu alanlar doldurulmalı ve isim geçerli olmalı
  2. "Kaydet ve Deploy" butonuna tıklayın
  3. 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ı
  4. Deployment Sonucu:
    • Tüm çalışan ortamlara (Environments) otomatik olarak deploy edilir
    • Deployment sonuçları gösterilir

Secret olarak işaretlenen değerler kaydedildikten sonra bir daha görüntülenemez.

Ortam Değişkeni Düzenleme (Edit)

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

Ortam Değişkenleri Kullanımı

Ortam değişkenleri, Apinizer API Manager platformunda çeşitli yapılandırma alanlarında kullanılabilir. Bu bölümde ortam değişkenlerinin nasıl kullanılacağı, hangi yapılandırmalarda kullanılabileceği ve pratik örnekler detaylı olarak açıklanmaktadır.

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ı

KuralAçıklama
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 HarfDeğişken adı büyük/küçük harf duyarlıdır
Özel KarakterlerDeğişken adında nokta (.), alt çizgi (_) kullanılabilir

Kullanım Yerleri

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

1. API Proxy - Routing (Yönlendirme)

Kullanım Alanı: Upstream Routing adresleri

Ö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

2. Database Connection (Veritabanı Bağlantısı)

Kullanım Alanı: Veritabanı bağlantı yapılandırması

Ö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

3. LDAP Connection (LDAP Bağlantısı)

Kullanım Alanı: LDAP bağlantı yapılandırması

Ö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 Senaryoları ve Örnekler

Senaryo

ProblemÇözüm

Backend API Adresi Yönetimi

Farklı ortamlarda farklı backend API adresleri kullanılıyor.
  1. 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
    
  2. Routing'de Kullanım:

    Address: ${BACKEND_API_URL}
    
  3. Sonuç:

Veritabanı Bağlantı Yönetimi

Her ortamda farklı veritabanı kullanılıyor.
  1. 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)
    
  2. Connector'da Kullanım:

    Connection String: jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
    Username: ${DB_USER}
    Password: ${DB_PASSWORD}
    
  3. Sonuç:

API Anahtarı Yönetimi

Dış servisler için farklı API anahtarları kullanılıyor.
  1. Ortam Değişkeni:

    Key Name: EXTERNAL_SERVICE_API_KEY
    Type: Environment-Specific
    Development: dev-key-abc123 (Secret)
    Production: prod-key-xyz789 (Secret)
    
  2. Policy'de Kullanım:

    Header Name: X-API-Key
    Header Value: ${EXTERNAL_SERVICE_API_KEY}
    
  3. Sonuç:

    • Development: X-API-Key: dev-key-abc123
    • Production: X-API-Key: prod-key-xyz789