Ana içeriğe atla

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:
API Manager’ın kurulu olması gerekmektedir. Ayrıca lisans anahtarınızda API Integration’ın bulunması gerekmektedir.

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.
Kubernetes yönetimi Apinizer üzerinden yapılıyorsa, Genel Ayarlar sayfasında “Kubernetes Yönetimi” seçeneğinin aktif olması gerekmektedir.
API Integration Kurulum Diyaloğu

API Integration kurulum diyaloğu - Gerekli ayarların yapılandırılması

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.
Kubernetes Resources Sayfası

Kubernetes Resources sayfası - API Integration etkinleştirme

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

Genel Ayarlar sayfası - API Integration modülü yapılandırması

AlanAçı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.
CPUPod’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.
Ek DeğişkenlerEk 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.
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.
kubectl create ns apinizer-integration
Apinizer namespace’inde bulunan ‘mongo-db-credentials’ secret’ı apinizer-integration namespace’ine kopyalanır.
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.
vi integration-deployment.yaml
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>"
kubectl apply -f integration-deployment.yaml
Oluşturulan Pod’un durumunu görmek için, aşağıdaki Kubectl komutunu kullanabilirsiniz:
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.
vi apinizer-integration-service.yaml
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
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.
Task Flows Menüsü

Task Flows menüsü - API Integration görev akışları yönetimi

Sonraki Adımlar