Ana içeriğe atla

Giriş

Bu doküman, Apinizer API Developer (Geliştirici) Portal üzerinde yeni bir portal kurulumunun nasıl yapılacağını açıklamaktadır. Oluşturulan yeni API Developer Portal, varsayılan (default) olarak gelen API Developer Portal’den bağımsız bir yapı olarak çalışmaktadır. Yeni portal, aşağıdaki bileşenler kullanılarak izole bir şekilde sunulmaktadır:
  • Ayrı Namespace
  • Ayrı Pod
  • Ayrı Secret
  • Ayrı Service
Bu yapı sayesinde her portalın konfigürasyonu ve yönetimi birbirinden etkilenmeden sürdürülebilir.

Kurulum Öncesi Adımlar

Apinizer API Portalı’nın kurulumuna başlamadan önce aşağıdaki ön koşulların sağlandığından emin olunmalıdır:
Lisans anahtarınızda API Developer Portal modülünün tanımlı ve aktif olması gerekmektedir.

Kurulum Adımları

API Portal kurulumu, Kubernetes yönetim şekline göre iki farklı yöntemle yapılabilir:
  1. Otomatik Kurulum: Kubernetes yönetimi Apinizer üzerinden yapılıyorsa, API Manager arayüzü kullanılarak kurulum yapılabilir.
  2. Manuel Kurulum: Kubernetes yönetimi Apinizer üzerinden yapılmıyorsa, Kubernetes kümesine manuel manifest (YAML) dosyaları uygulanarak kurulum yapılır ve ardından API Manager ile bağlantı sağlanır.

3.1. Kişisel API Erişimi İçin Token Oluşturma

Kurulum sırasında API Manager ile iletişim kurmak için yetkili bir token gereklidir. Token bilgileri, yeni bir token oluşturarak veya Profilim sayfasında mevcut bir token kullanılarak elde edilebilir. Personel tokenları genellikle apnz_ öneki ile başlar.
Token oluşturma işlemi için API Manager’da Profilim sayfasına giderek yeni bir token oluşturabilirsiniz.
Token Oluşturma Ekranı

Token oluşturma - Profilim sayfasından kişisel API token oluşturma

3.2. API Developer Portal Kurulumu

Yönetim şeklinize göre aşağıdaki başlıklardan sadece birini uygulayınız.

3.2.1. API Developer Portal Kurulumu (API Manager Üzerinden)

Kubernetes yönetimi Apinizer üzerinden yapılıyorsa, Genel Ayarlar menüsünde “Kubernetes Yönetimi” seçeneğinin aktif olduğundan emin olun.
  1. API Manager’da Yönetim → Sunucu Yönetimi → Kubernetes Resources sayfasına gidin.
  2. Deployment & Pods sekmesinden yeni API Portal’ı etkinleştirin.
Kubernetes Resources Menüsü

Kubernetes Resources sayfası - API Portal etkinleştirme

  1. Açılan diyalog penceresinde, yeni portal için gerekli tanımları yapın.
API Portal Kurulum Diyaloğu

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

Portal ID Bilgisi: Kurulum sırasında istenecek olan Portal ID bilgisini; Administration > Portal > Settings > Portal menüsünde, ilgili portalın kartında bulabilirsiniz.
Portal ID Konumu Konfigürasyon Parametreleri:
AlanAçıklama
Apinizer Portal Management API URLPortalın Apinizer yönetim API’lerini tüketebilmesi için gerekli adrestir.
Örnek: http://<API_MANAGER_ACCESS_URL>:<PORT>/
Apinizer Portal Management API Key/TokenPortalın yönetim API’lerine erişimi için gereken token bilgisidir (Bölüm 3.1’de oluşturulan).
API Portal IDOluşturulacak yeni portalın benzersiz kimliğini (UNIQ ID) belirtir.
Sayısı (Count)Çalışacak Gateway engine (Pod) sayısını belirtir (ReplicaSet).
Servis Portu (Service Port)Servisin dışarıya açılacağı portu belirtir (NodePort).
Node Listesi (Node List)Pod’ların hangi Kubernetes Worker sunucularında çalışacağını belirler (NodeAffinity).
CPU / BellekPod başına ayrılacak maksimum CPU ve RAM limitleridir.
Ek DeğişkenlerPod içinde çalıştırılacak ortam değişkenleridir (Environment Variables).
Host Takma Adlarıetc/hosts dosyasına eklenecek IP-Host eşleşmeleridir (HostAlias).
Java Options ve Bellek AyarıEk değişkenler alanındaki Java Options ayarı için:
  • -Xmx ve -Xms yerine dinamik bellek yönetimi kullanılır.
  • Varsayılan olarak -XX:MaxRAMPercentage=75.0 kullanılır (Konteyner belleğinin %75’i).
  • 1 GB limitli bir pod için JVM Heap yaklaşık 750 MB olacaktır.

3.2.2. API Developer Portal Kurulumu (Manuel / API Manager Dışı)

Apinizer, Kubernetes kümesini yönetmiyorsa, aşağıdaki adımları takip ederek manuel kurulum yapabilirsiniz.
Önemli: Bu kurulumda apinizer-portal-2 gibi farklı bir isimlendirme kullanılarak varsayılan portaldan ayrıştırma yapılır.
Adım 1: Secret Oluşturma Öncelikle API Manager erişim bilgilerini ve Portal ID’yi içeren bir Kubernetes Secret oluşturulmalıdır.
# Değişkenleri kendi ortamınıza göre düzenleyin
API_MANAGER_URL='<APINIZER_MANAGEMENT_API_BASE_URL>' # Örn: http://apimanager-ui-ip:port
API_MANAGER_APIKEY='<API_KEY>' # Bölüm 3.1'den alınan token
API_PORTAL_ID='<API_PORTAL_ID>' # Portal Ayarlarından alınan ID

# Base64 Encode İşlemi
echo -n ${API_MANAGER_URL} | base64
# Çıktıyı <ENCODED_URL> yerine yazın

echo -n ${API_MANAGER_APIKEY} | base64
# Çıktıyı <ENCODED_API_KEY> yerine yazın

echo -n ${API_PORTAL_ID} | base64
# Çıktıyı <ENCODED_API_PORTAL_ID> yerine yazın
Adım 2: Secret Dosyasının Oluşturulması Aşağıdaki içeriğe sahip api-portal-secret-2.yaml dosyasını oluşturunuz.
apiVersion: v1
kind: Namespace
metadata:
  name: apinizer-portal-2
---
apiVersion: v1
kind: Secret
metadata:
  name: apinizer-portal-secret-2
  namespace: apinizer-portal-2
type: Opaque
data:
  apinizerManagementApiBaseUrl: <ENCODED_URL>
  apiKey: <ENCODED_API_KEY>
  apiPortalId: <ENCODED_API_PORTAL_ID>
Oluşturulan secret dosyasını uygulayınız:
kubectl apply -f api-portal-secret-2.yaml
Adım 3: Deployment ve Service Oluşturma Aşağıdaki içeriğe sahip apinizer-portal-deployment-2.yaml dosyasını oluşturunuz. Bu dosya hem Deployment hem de Service tanımlarını içerir.
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: apinizer-portal-2
  namespace: apinizer-portal-2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: apinizer-portal-2
      version: v1
  template:
    metadata:
      labels:
        app: apinizer-portal-2
        version: v1
    spec:
      containers:
        - name: apinizer-portal-app
          image: apinizercloud/apiportal:<APINIZER_VERSION>
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: prod
            - name: JAVA_OPTS
              value: -XX:MaxRAMPercentage=75.0
            - name: API_PORTAL_MANAGEMENT_API_BASE_URL
              valueFrom:
                secretKeyRef:
                  key: apinizerManagementApiBaseUrl
                  name: apinizer-portal-secret-2
            - name: API_PORTAL_MANAGEMENT_API_KEY
              valueFrom:
                secretKeyRef:
                  key: apiKey
                  name: apinizer-portal-secret-2
            - name: API_PORTAL_ID
              valueFrom:
                secretKeyRef:
                  key: apiPortalId
                  name: apinizer-portal-secret-2
          livenessProbe:
            failureThreshold: 13
            httpGet:
              path: /apinizer/management/health
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 30
          ports:
            - containerPort: 8080
              protocol: TCP
          readinessProbe:
            failureThreshold: 13
            httpGet:
              path: /apinizer/management/health
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 30
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 30
          resources:
            limits:
              cpu: "1"
              memory: 1Gi
          startupProbe:
            failureThreshold: 13
            httpGet:
              path: /apinizer/management/health
              port: 8080
              scheme: HTTP
            initialDelaySeconds: 60
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 30
---
apiVersion: v1
kind: Service
metadata:
  name: apinizer-portal-service-2
  namespace: apinizer-portal-2
  labels:
    app: apinizer-portal-2
spec:
  selector:
    app: apinizer-portal-2
  type: NodePort
  ports:
    - name: http
      port: 8080
      nodePort: <API_DEVELOPER_PORTAL_2_PORT>
Oluşturulan deployment ve service dosyasını uygulayınız:
kubectl apply -f apinizer-portal-deployment-2.yaml

3.3. API Developer Portal’in API Manager ile Entegrasyonu

Önemli: Bu aşamaya kadar portalın teknik kurulumu tamamlanmıştır ancak API’lerin görüntülenmesi ve yetkilendirme işlemleri için entegrasyonun tamamlanması şarttır.
API Manager’da, Portal → Ayarlar → Portal sayfasına giderek, kurumunuza uygun tanımları yapınız. Detaylı bilgi için Portal Ayarları dökümanını inceleyebilirsiniz.

3.4. API Developer Portal’i SSL ile Başlatma

İstenilen durumlarda API Developer Portal SSL sertifikası ile güvenli erişime (HTTPS) açılabilir. Detaylı bilgi için API Developer Portal SSL Yapılandırması dökümanını inceleyebilirsiniz.

Erişim

Yukarıdaki adımlar tamamlandıktan ve Kubernetes üzerinde Pod’lar Running durumuna geldikten sonra, yeni portala aşağıdaki adresten erişebilirsiniz:
http://<KUBERNETES_WORKER_IP>:<API_DEVELOPER_PORTAL_2_PORT>