> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ortam Değişkenleri Yönetimi

> Ortam değişkenlerini oluşturabilir, düzenleyebilir ve API Proxy yapılandırmalarında kullanabilirsiniz. Global veya ortam özelinde değişkenler tanımlayabilir, secret değerleri güvenli şekilde saklayabilir ve deployment sırasında otomatik olarak çözümlenmesini sağlayabilirsiniz.

<Info>
  Ortam Değişkenleri kavramı hakkında detaylı bilgi için [Environment Variable](/tr/concepts/temel-kavramlar/environment-variable) temel kavramlar sayfasına bakabilirsiniz.
</Info>

Bu sayfa, Ortam Değişkenleri'nin nasıl oluşturulacağı, düzenleneceği ve kullanılacağına dair pratik bilgileri içerir. Ortam Değişkenleri, 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:**

* **Development Ortamı**: `BACKEND_URL = dev-api.example.com`
* **Production Ortamı**: `BACKEND_URL = api.example.com`
* **Yapılandırmada**: `${BACKEND_URL}`
* **Runtime'da Development'ta**: `dev-api.example.com`
* **Runtime'da Production'da**: `api.example.com`

## 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:

<img src="https://mintcdn.com/apinizer/Ku5drz7BLIhaC8K7/images/develop/environment-variables/ortam-degiskeni-olusturma.png?fit=max&auto=format&n=Ku5drz7BLIhaC8K7&q=85&s=64e8a6519470a6a8e6693249f48aec5a" alt="Ortam Değişkeni Oluşturma" width="1000" height="510" data-path="images/develop/environment-variables/ortam-degiskeni-olusturma.png" />

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

<Steps>
  <Step title="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
  </Step>

  <Step title="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
  </Step>

  <Step title="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

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

  <Step title="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
  </Step>

  <Step title="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
  </Step>
</Steps>

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

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

### Düzenleme Modal'ının Açılması

Düzenleme modal'ı aşağıdaki yollarla açılabilir:

| Yöntem                | Açıklama                               |
| --------------------- | -------------------------------------- |
| **Liste'den Tıklama** | Ortam değişkeni adına tıklanır         |
| **Menü'den Seçim**    | Satır sonundaki menüden "Edit" seçilir |

### Düzenleme Modal'ındaki Farklılıklar

| Özellik             | Yeni Kayıt                 | Düzenleme                                      |
| ------------------- | -------------------------- | ---------------------------------------------- |
| **Modal Başlığı**   | "Add Environment Variable" | "Edit Environment Variable"                    |
| **Type Seçimi**     | Aktif (değiştirilebilir)   | Pasif (değiştirilemez)                         |
| **Secret Değerler** | Normal görünür             | Maskelenmiş görünür (\*\*\*\*\*\*\*\*\*\*\*\*) |
| **Secret Checkbox** | Aktif                      | Kaydedilmiş 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ı**

| Format                             | Açıklama               | Örnek                                           |
| ---------------------------------- | ---------------------- | ----------------------------------------------- |
| `${variableName}`                  | Temel kullanım formatı | `${BACKEND_URL}`                                |
| `text${variableName}`              | Metin ile birleştirme  | `https://${API_HOST}`                           |
| `${variableName}text`              | Metin ile birleştirme  | `${API_PORT}/api`                               |
| `text${variable1}text${variable2}` | Birden fazla değişken  | `jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}` |

**Format Kuralları**

| Kural                   | Açı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 Harf**    | Değişken adı büyük/küçük harf duyarlıdır                 |
| **Özel Karakterler**    | Değ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

| Özellik      | Açıklama                                                       |
| ------------ | -------------------------------------------------------------- |
| **Konum**    | API Proxy > Upstream/Routing Tab > Define Address(es)          |
| **Alan**     | Backend API adresi input alanı                                 |
| **Kullanım** | Backend API adreslerinde ortam bazlı yönlendirme               |
| **Erişim**   | Adres 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ı

| Özellik              | Açıklama                                                        |
| -------------------- | --------------------------------------------------------------- |
| **Konum**            | Administration > Connection Management > Connection Pool Def DB |
| **Alanlar**          | JDBC URL, Username, Password                                    |
| **Kullanım**         | Veritabanı bağlantı bilgilerinde ortam bazlı yönetim            |
| **Dialog Erişimi**   | Her 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ı

| Özellik              | Açıklama                                                          |
| -------------------- | ----------------------------------------------------------------- |
| **Konum**            | Administration > Connection Management > Connection Pool Def LDAP |
| **Alanlar**          | LDAP URL, Bind DN, Bind Password                                  |
| **Kullanım**         | LDAP bağlantı bilgilerinde ortam bazlı yönetim                    |
| **Dialog Erişimi**   | Her alanın sağındaki liste ikonu butonuna tıklanarak              |
| **Secret Kullanımı** | Bind Password mutlaka secret olarak işaretlenmelidir              |

### Kullanım Senaryoları ve Örnekler

<Tabs>
  <Tab title="Backend API Adresi Yönetimi">
    **Problem:** Farklı ortamlarda farklı backend API adresleri kullanılıyor.

    **Çözüm:**

    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ç:**

    * 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
  </Tab>

  <Tab title="Veritabanı Bağlantı Yönetimi">
    **Problem:** Her ortamda farklı veritabanı kullanılıyor.

    **Çözüm:**

    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ç:**

    * Development: `jdbc:mysql://dev-db.example.com:3306/dev_db`
    * Production: `jdbc:mysql://prod-db.example.com:3306/prod_db`

    <Info>
      Veritabanı adında alt çizgi (\_) karakteri varsa, URL encoding ile `%5F` olarak gösterilir. Örneğin `dev_db` → `dev%5Fdb`.
    </Info>
  </Tab>

  <Tab title="API Anahtarı Yönetimi">
    **Problem:** Dış servisler için farklı API anahtarları kullanılıyor.

    **Çözüm:**

    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`
  </Tab>
</Tabs>

## İlgili Sayfalar

<CardGroup cols={2}>
  <Card title="Environment Variable" icon="book" href="/tr/concepts/temel-kavramlar/environment-variable">
    Ortam Değişkenleri kavramını öğrenin
  </Card>

  <Card title="Variable" icon="code" href="/tr/concepts/temel-kavramlar/variable">
    Variable kavramını öğrenin
  </Card>
</CardGroup>
