API Integration Kurulumu
Bu doküman, Apinizer Integration kurulumunu anlatmaktadır.
1) 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.
2) Kurulum öncesi adımlar
Apinizer API Integration'ın kurulumuna başlamadan önce şunlara dikkat edilmelidir:
- API Manager'ın kurulu olması gerekmektedir. API Manager Kurulumu için Apinizer Kurulumu ve Ayarları dökümanını inceleyiniz.
- Lisans anahtarınızda API Integration'ın bulunması gerekmektedir.
3) 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.
3.1) API Integration Kurulumu
3.1.1) 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.
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.
Açılan diyalogda, kurumunuza uygun olarak zorunlu alanları tanımlayın.
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. |
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.
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'ını 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.
3.1.2) 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 Podun durumunu görmek için, aşağıdaki Kubectl komutunu kullanabilirsiniz:
Pod durumu
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.
Pod durumu
vi apinizer-integration-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
name: integration
namespace: apinizer-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.