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

# API Integration

> Apinizer Integration'ın Kubernetes üzerinde kurulumunu ve yapılandırmasını sağlar. Bir veya birden fazla uç noktanın akıcı bir şekilde birbirine bağlanmasını sağlayarak iş akışları oluşturma yeteneği sunar. API Manager ile entegrasyon detaylarını içerir.

## Giriş

API integration, bir veya birden fazla uç noktanın akıcı bir şekilde birbirine bağlanmasını sağlayarak, iş akışlarını oluşturma yeteneği sunar.

## Kurulum Öncesi Adımlar

Apinizer API Integration'ın kurulumuna başlamadan önce şunlara dikkat edilmelidir:

<CardGroup cols={2}>
  <Card title="Apinizer Kurulumu" icon="server" href="/tr/setup/apinizer/apinizer">
    API Manager kurulumunu öğrenin
  </Card>
</CardGroup>

<Warning>
  API Manager'ın kurulu olması gerekmektedir. Ayrıca lisans anahtarınızda API Integration'ın bulunması gerekmektedir.
</Warning>

## Kurulum Adımları

API Integration Kurulumu iki şekilde yapılmaktadır.

* Kubernetes yönetimi Apinizer üzerinden **yapılıyorsa**, API Manager üzerinden API Integration kurulumu yapabilirsiniz.
* Kubernetes yönetimi Apinizer üzerinden **yapılmıyorsa**, Kubernetes'e manuel kurulum yapılabilir ve ardından API Manager ile bağlantı sağlanabilir.

### API Integration Kurulumu

#### API Integration Kurulumu API Manager Üzerinden Yapılacaksa

API Manager üzerinden API Integration kurulumu için Genel Ayarlar menüsünde aşağıdaki bölümün aktif olması gerekmektedir.

<Warning>
  Kubernetes yönetimi Apinizer üzerinden yapılıyorsa, Genel Ayarlar sayfasında "Kubernetes Yönetimi" seçeneğinin aktif olması gerekmektedir.
</Warning>

<Frame caption="API Integration kurulum diyaloğu - Gerekli ayarların yapılandırılması">
  <img src="https://mintcdn.com/apinizer/sRY2Jg4_hXPTC-Dh/images/setup/apinizer/api-integration/02-integration-dialog.png?fit=max&auto=format&n=sRY2Jg4_hXPTC-Dh&q=85&s=04423d3bcfad58c83684a59afda17e74" alt="API Integration Kurulum Diyaloğu" width="1200" height="800" style={{ borderRadius: '0.5rem' }} data-path="images/setup/apinizer/api-integration/02-integration-dialog.png" />
</Frame>

API Manager'da, **Yönetim → Sunucu Yönetimi → Kubernetes Resources** sayfasına gidin. Deployment & Pods sekmesinden API Integration'ı etkinleştirin. Gerekli tanımları yaparak kurulumu tamamlayın.

<Frame caption="Kubernetes Resources sayfası - API Integration etkinleştirme">
  <img src="https://mintcdn.com/apinizer/sRY2Jg4_hXPTC-Dh/images/setup/apinizer/api-integration/01-kubernetes-resources.png?fit=max&auto=format&n=sRY2Jg4_hXPTC-Dh&q=85&s=e249e9ccfa93b6302cc3513a9e2298cb" alt="Kubernetes Resources Sayfası" width="1200" height="600" style={{ borderRadius: '0.5rem' }} data-path="images/setup/apinizer/api-integration/01-kubernetes-resources.png" />
</Frame>

Açılan diyalogda, kurumunuza uygun olarak zorunlu alanları tanımlayın.

<Frame caption="Genel Ayarlar sayfası - API Integration modülü yapılandırması">
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/apinizer/api-integration/04-genel-ayarlar.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=5d3f2f231604f3b0fbee9549725f6b7a" alt="Genel Ayarlar Sayfası" width="1200" height="800" style={{ borderRadius: '0.5rem' }} data-path="images/setup/apinizer/api-integration/04-genel-ayarlar.png" />
</Frame>

| Alan                                      | Açıklama                                                                                                                                                                                                                                                                                               |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Erişim Adresi (Access URL)**            | API Integration erişim adresidir. Örnek adres: `http://<API_INTEGRATION_ACCESS_URL>:<PORT>`.                                                                                                                                                                                                           |
| **Sayısı (Count)**                        | API Integration uygulama sayısı, Kubernetes Cluster'daki replicaSet ayarını düzenler.                                                                                                                                                                                                                  |
| **Servis Portu (Service Port)**           | API Integration erişim portu.                                                                                                                                                                                                                                                                          |
| **Node Listesi (Node List)**              | Pod'ların hangi Kubernetes Worker sunucularında çalışacağını ayarlar. Kubernetes'teki NodeAffinity ayarını düzenler.                                                                                                                                                                                   |
| **CPU**                                   | Pod'un kullanacağı maksimum CPU core sayısı bilgisidir.                                                                                                                                                                                                                                                |
| **Bellek (Memory)**                       | Pod'un kullanacağı maksimum bellek değeridir.                                                                                                                                                                                                                                                          |
| **Bellek Birimi (Memory Unit)**           | Bellek için gerekli olan değerin birimi seçilir; MB, GB.                                                                                                                                                                                                                                               |
| **Ek Değişkenler (Additional Variables)** | Pod içinde çalıştırılacak değişkenler ve değerleri tanımlanır.                                                                                                                                                                                                                                         |
| **Host Takma Adlar (Host Aliases)**       | Ağda bulunan IP adresleri bazen host isimleri arkasına konulabilir, bunlar eğer nameserver üzerinden çözülemiyorsa ya da host dosyasına tanımlanmamışsa, uygulama podlarının bu isimleri çözmesi için **Host Alias** tanımı yapılmalıdır. Her bir IP adresi için birden fazla domain ismi girilebilir. |

<Info>
  **Ek Değişkenler**

  Ek değişkenler alanındaki **Java Options** ayarını yapılandırırken aşağıdaki uyarı dikkate alınmalıdır:

  * **-Xmx** ve **-Xms** parametreleri kullanıldığında, otomatik yığın (heap) boyutlandırması devre dışı bırakılır.
  * Apinizer, **JVM Yığın (Heap)** değerlerini konteyner içinde çalıştığından konteynere verilen belleğin **%75.0**'ini kullanacak şekilde ayarlar.
  * **UseContainerSupport** varsayılan olarak aktif gelmektedir.
  * Eski bayraklar (flag) **-XX: \{Min | Max} RAMFraction** artık kullanımdan kaldırıldı. 0.0 ve 100.0 arasında bir değer alan ve varsayılan olarak 75.0 olan yeni bir **-XX: MaxRAMPercentage** bayrağı (flag) vardır. Bu nedenle, 1 GB bellek sınırı varsa, JVM yığını (heap) varsayılan olarak \~ 750 MB ile sınırlıdır.

  Detaylı bilgi için [tıklayınız](https://www.eclipse.org/openj9/docs/xxinitialrampercentage/).
</Info>

Yukarıdaki adımlar tamamlandıktan ve Kubernetes üzerinde API Integration'a ait olan Pod'ların hazır durumda olduğundan emin olduktan sonra **Project → Geliştirme(Development)→ API Entegratörü (Integration)→ Görev Akışları (Task Flows)** menüsünden kullanmaya başlayabilirsiniz.

#### API Integration Kurulumu API Manager Üzerinden Yapılmayacaksa

Integration için bir namespace oluşturulur.

```bash theme={null}
kubectl create ns apinizer-integration
```

Apinizer namespace'inde bulunan 'mongo-db-credentials' secret'ı apinizer-integration namespace'ine kopyalanır.

```bash theme={null}
kubectl get secret mongo-db-credentials -n apinizer -o yaml | sed 's/namespace: apinizer/namespace: apinizer-integration/' | kubectl create -f -
```

Integration için Deployment yaml oluşturulur.

```bash theme={null}
vi integration-deployment.yaml
```

```yaml theme={null}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: integration
  namespace: apinizer-integration
spec:
  replicas: 1
  selector:
    matchLabels:
      app: integration
      version: v1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 75%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: integration
        version: v1
    spec:
      containers:
        - env:
            - name: JAVA_OPTS
              value: -server -XX:MaxRAMPercentage=75.0 -Dlog4j.formatMsgNoLookups=true
            - name: SPRING_DATA_MONGODB_URI
              valueFrom:
                secretKeyRef:
                  key: dbUrl
                  name: mongo-db-credentials
            - name: SPRING_DATA_MONGODB_DATABASE
              valueFrom:
                secretKeyRef:
                  key: dbName
                  name: mongo-db-credentials
            - name: SPRING_PROFILES_ACTIVE
              value: prod
          image: apinizercloud/integration:<APINIZER_VERSION>
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /apinizer/management/health
              port: 8092
              scheme: HTTP
            initialDelaySeconds: 120
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 30
          name: integration
          ports:
            - containerPort: 8092
              protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /apinizer/management/health
              port: 8092
              scheme: HTTP
            initialDelaySeconds: 120
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 30
          resources:
            limits:
              cpu: "1"
              memory: 1024Mi
          startupProbe:
            failureThreshold: 3
            httpGet:
              path: /apinizer/management/health
              port: 8092
              scheme: HTTP
            initialDelaySeconds: 91
            periodSeconds: 30
            successThreshold: 1
            timeoutSeconds: 30
      hostAliases:
        - ip: "<IP_ADDRESS>"
          hostnames:
            - "<DNS_ADDRESS_1>"
            - "<DNS_ADDRESS_2>"
```

```bash theme={null}
kubectl apply -f integration-deployment.yaml
```

Oluşturulan Pod'un durumunu görmek için, aşağıdaki Kubectl komutunu kullanabilirsiniz:

```bash theme={null}
kubectl get pods -n apinizer-integration
```

Servis oluşturulmasında eğer Ingress kullanılmayacaksa tanım NodePort tipiyle oluşturulur ve pod'un cluster dışı erişimi ayarlanır.

```bash theme={null}
vi apinizer-integration-service.yaml
```

```yaml theme={null}
apiVersion: v1
kind: Service
metadata:
  name: integration
  namespace: apinizer-integration
  labels:
    app: integration
spec:
  ports:
    - nodePort: 32090
      port: 8092
      protocol: TCP
      targetPort: 8092
  selector:
    app: integration
  type: NodePort
```

```bash theme={null}
kubectl apply -f apinizer-integration-service.yaml
```

**Oluşturulan API Integration Uygulamasının API Management Konsoluna Bağlanması**

API Manager'da, **Sistem Ayarları → Genel Ayarlar** sayfasına gidin. "API Entegrasyon (Task Flow) Modülünün bilgilerini tanımlayın." bölümünden API Integration'ı etkinleştirin. Gerekli tanımları yaparak kurulumu tamamlayın.

<Frame caption="Task Flows menüsü - API Integration görev akışları yönetimi">
  <img src="https://mintcdn.com/apinizer/74TMnSOZDvjtaICJ/images/setup/apinizer/api-integration/05-task-flows.png?fit=max&auto=format&n=74TMnSOZDvjtaICJ&q=85&s=317efa9e17408a18656eae9edd334f1f" alt="Task Flows Menüsü" width="1200" height="800" style={{ borderRadius: '0.5rem' }} data-path="images/setup/apinizer/api-integration/05-task-flows.png" />
</Frame>

## Sonraki Adımlar

<CardGroup cols={2}>
  <Card title="API Integration Genel Bakış" icon="plug" href="/api-reference/overview">
    API Integration hakkında detaylı bilgi alın
  </Card>

  <Card title="Multi-Region Kurulum" icon="globe" href="/tr/setup/apinizer/multi-region">
    Multi-Region kurulumunu öğrenin
  </Card>

  <Card title="API Portal Kurulumu" icon="window-maximize" href="/tr/setup/apinizer/api-portal">
    API Portal kurulumunu öğrenin
  </Card>

  <Card title="Apinizer Kurulumu" icon="server" href="/tr/setup/apinizer/apinizer">
    Apinizer kurulumunu öğrenin
  </Card>
</CardGroup>
