Kuruluma başlamadan önce sisteminizin aşağıdaki gereksinimleri karşıladığından emin olun: 

  • Deb / rpm uyumlu bir Linux işletim sistemi çalıştıran bir veya daha fazla makine; örneğin: Ubuntu 20.04.2.0 LTS veya CentOS 7.9
  • Tavsiye edilen minimum sistem gereksinimleri 8 Core CPU, 8 GB RAM ve 80 GB depolama alanı. Farklı kurulum senaryoları için → Kurulum Topolojileri

  • Replicaset MongoDB 4.2+. Kurulumun bir örneğini görmek için → Installing Replica Set MongoDB
  • Elasticsearch 7.9.+.  Kurulumun bir örneğini görmek için → Installing Elasticsearch Cluster
  • Kubernetes 1.18.4 . Kurulumun bir örneğini görmek için → Kubernetes Cluster Kurulumu

Kurulum adımları

Deployment öncesi konfigüre edilmesi gereken değişkenler

Environment Variables

  • APINIZER_VERSION - Hangi Apinizer versiyonunu kuracağınızı belirten parametredir. Versiyonları görmek için → Apinizer Versiyonları
  • SPRING_DATA_MONGODB_DATABASE - Apinizer konfigurasyonları için kullanılacak veritabanı adı
  • SPRING_DATA_MONGODB_URI - Apinizer konfigurasyonları için kullanılacak veritabanı URL bilgisi


Örnek Veritabanı Bağlantı Cümlesi

Example : mongodb://apinizer:********@YOURMONGOIPADDRESS:25080/?authSource=admin&replicaSet=apinizer-replicaset
POWERSHELL


  • JAVA_OPTS - Yönetim Konsolu'nun işletim sisteminde kullanıcağı Java Memory bilgisi

Örnek JAVA_OPTS

name: JAVA_OPTS
value: ' -Xmx2048m -Xms2048m'
POWERSHELL

Apinizer Yönetim Konsolu Uygulamasının Kurulumu

Aşağıdaki şekilde Kubernetes Master sunucunuz üzerinde bir yaml dosyası oluşturup yukarıdaki değişkenlerin değerlerini ortamınıza uygun olacak şekilde değiştirerek kaydedin.

$ vi apinizer-deployment.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: apinizer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: manager
  namespace: apinizer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: manager
      version: 'v1'
  template:
    metadata:
      labels:
        app: manager
        version: 'v1'
    spec:
      containers:
        - name: manager
          image: apinizercloud/manager:2021.08.1
          imagePullPolicy: IfNotPresent
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: prod
            - name: SPRING_DATA_MONGODB_DATABASE
              value: apinizerdb
            - name: SPRING_DATA_MONGODB_URI
              value: 'your-mongo-connection-string'
            - name: JAVA_OPTS
              value: ' -Xmx2400m -Xms2400m'
          resources:
            requests:
              memory: '3Gi'
              cpu: '1'
            limits:
              memory: '3Gi'
              cpu: '1'
          ports:
            - name: http
              containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: manager
  namespace: apinizer
  labels:
    app: manager
spec:
  selector:
    app: manager
  type: NodePort
  ports:
    - name: http
      port: 8080
      nodePort: 32080
YML
apinizer-deployment.yaml dosyası hazırlandıktan sonra aşağıdaki komut satırını Kubernetes Master sunucunuz üzerinde çalıştırın.

kubectl apply -f apinizer-deployment.yaml
BASH


Bu işlem sonrasında oluşturulan pod'u takip etmek ve logunu incelemek için aşağıdaki ilk kodu çalıştırıp pod ismi alınır ve ikinci kodda kullanılır.

kubectl get pods -n apinizer

kubectl logs podAdı -n apinizer
BASH

Apinizer imajları Kubernetes ortamına deploy edildikten sonra Apinizer tarafından size verilen Lisans Anahtarını veri tabanına eklemeniz gerekir.


Apinizer tarafından size verilen Lisans Anahtarını aşağıdaki gibi bir .js dosyasında güncelleyip veri tabanındaki lisans bilgisi güncellenebilir.

vi license.js

db.general_settings.updateOne(
{"_class":"GeneralSettings"},
    { $set: { licenseKey: 'YOURLICENSEKEY'}}
)

POWERSHELL


Oluşturulan license.js dosyası çalıştırılır. Sonuçlarda Matched = 1 gibi bir değer görülmesi beklenir.

mongo mongodb://YOURMONGOSIPADDRESS:25080/apinizerdb --authenticationDatabase "admin" -u "apinizer" -p "********" < license.js
VB


Kurulum testi

Kurulum işlemi başarılı olduysa aşağıdaki adresten Apinizer Yönetim Konsolu'na erişebilirsiniz.

Apinizer Yönetim Konsolu

http://ipAddressOfAnyWorker:32080
POWERSHELL

Log Sunucuların Tanımlanması

Apinizer API trafigini ve metrik bilgilerini Elasticsearch veri tabanında tutar. Kurulum işlemine devam edebilmek için Elasticsearch Cluster tanımlarının yapılması gerekmektedir.

Apinizer Yönetim Konsolu uygulamasında Administration → Server Management → altındaki Elasticsearch Kümeleri sayfasına gidilir.

Elasticsearch Kümesi tanımlamak için Elasticsearch Kümeleri dokümanına bakabilirsiniz.

Ortam Tanımlama

Bir API Proxy'nin erişilebilir olması için en az bir ortama (Environment) yüklenmesi (deployment) gerekmektedir. Apinizer bir API Proxy'nin aynı anda birden fazla ortama yüklenmesine izin verir.

Ortam tanımlama için aşağıdaki adımları takip ediniz.

Yeni Ortam (Environment) tanımlamak için Ortamlar (Environment) dokümanına bakabilirsiniz.

Ortam oluşturulmasıyla birlikte Apinizer kurulumu tamamlanmış olur. 


Not : Eğer Host alias yapısı kullanılmak istenirse

https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/


---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: manager
  namespace: apinizer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: manager
      version: 'v1'
  template:
    metadata:
      labels:
        app: manager
        version: 'v1'
    spec:
      hostAliases:
        - ip: 10.x.x.x
          hostnames:
            - myhost1
        - ip: 10.x.x.x
          hostnames:
            - myhost2
            - myhost3
        - ip: 10.x.x.x
          hostnames:
            - myhost4
      containers:
        - name: manager
          image: apinizercloud/manager:2021.06.1
          imagePullPolicy: IfNotPresent
          env:
            - name: SPRING_PROFILES_ACTIVE
              value: prod
            - name: SPRING_DATA_MONGODB_DATABASE
              value: apinizerdb
            - name: SPRING_DATA_MONGODB_URI
              value: 'mongodb://apinizer:**********@uyg101:25080,uyg102:25080,uyg103:25080/admin?replicaSet=rs0'
            - name: JAVA_OPTS
              value: ' -Xmx4096m -Xms4096m'
          resources:
            requests:
              memory: '3Gi'
              cpu: '1'
            limits:
              memory: '3Gi'
              cpu: '1'
          ports:
            - name: http
              containerPort: 8080
POWERSHELL