Skip to main content

Genel Bakış

Bu kılavuz, modern bir CI/CD pipeline’ı kullanarak API’lerinizi otomatik olarak Apinizer’a nasıl deploy edeceğinizi gösterir. Örnek senaryo, GitHub Actions ile Docker image oluşturma, Jenkins ile Kubernetes deployment ve Apinizer üzerinde API proxy yönetimini kapsar.

Kullanılan Teknolojiler ve Versiyonlar

Pipeline Akışı

Mimari Genel Bakış

Bu entegrasyon senaryosu şu bileşenleri kullanır:
  • GitHub Actions: Docker image build ve versiyonlama işlemleri GitHub tarafında yürütülür.
  • Jenkins: Orchestration ve deployment yönetimi Jenkins sunucunuzda gerçekleşir.
  • Kubernetes: Container orchestration cluster’ınızda çalışır.
  • Apinizer: API Gateway ve API proxy yönetimi Apinizer instance’ınız üzerinden yapılır.

1. GitHub Actions Workflow

GitHub Actions, her main branch’e push işleminde otomatik olarak:
  • Yeni bir semantic version oluşturur
  • Docker image build eder ve Docker Hub’a push eder
  • Jenkins pipeline’ını tetikler

Workflow Dosyası

Workflow dosyası, projenizin GitHub reposunda yer almalıdır. Yerel geliştirme ortamınızda (IDE veya metin editörü) aşağıdaki dosya yolunda oluşturun ve reponuza push edin: .github/workflows/docker-build-push.yml

GitHub Secrets Yapılandırması

Repository Settings > Secrets and Variables > Actions bölümünden şu secret’ları ekleyin:

2. Jenkins Pipeline Yapılandırması

Jenkins pipeline, aşağıdaki aşamaları gerçekleştirir:
  1. K8s Deploy: Yeni Docker image’ı Kubernetes’e deploy eder
  2. Health Check: API’nin sağlıklı çalıştığını doğrular
  3. Sync Apinizer API Proxy: API Proxy’yi günceller veya oluşturur
  4. Deploy to Apinizer: Proxy’yi belirtilen environment’a deploy eder

Jenkinsfile

Jenkins pipeline’ı, Jenkins arayüzünden yeni bir Pipeline job oluşturularak tanımlanabilir. Aşağıdaki içeriği Jenkins UI’daki Pipeline script alanında kullanabilirsiniz. Jenkinsfile

Jenkins Credentials Yapılandırması

Jenkins’de Manage Jenkins > Credentials bölümünden şu credential’ı ekleyin:
Apinizer API token oluşturma hakkında detaylı bilgi için Token Alma Yöntemleri dokümanını inceleyebilirsiniz.

3. Pipeline Aşamalarının Detayları

Stage 1: Kubernetes Deployment

Bu aşama Jenkins sunucusunda çalışır. GitHub Actions tarafından oluşturulan Docker image Kubernetes cluster’ına deploy edilir. kubectl set image komutu kullanılarak deployment güncellenir ve rollout durumu kontrol edilir.

Stage 2: Health Check

API’nin başarıyla deploy edildiğini doğrulamak için health endpoint’i kontrol edilir. Bu adım, Apinizer’a deploy etmeden önce API’nin çalışır durumda olduğundan emin olmak için kritiktir. API_HEALTH_ENDPOINT değişkeni, pipeline’ı uyguladığınız uygulamanın health check endpoint’ini belirtir. Bu adres uygulamanıza özgüdür; örnek:
Uygulamanızın farklı bir health check endpoint’i varsa API_HEALTH_ENDPOINT değişkenini buna göre güncelleyin.

Stage 3: Apinizer API Proxy Senkronizasyonu

Bu kritik aşamada:
  1. Proxy Kontrolü: İlgili API Proxy’nin var olup olmadığı kontrol edilir
  2. Güncelleme veya Oluşturma:
    • Proxy varsa: OpenAPI spec’i güncellenir (PUT request)
    • Proxy yoksa: Yeni proxy oluşturulur (POST request)

Proxy Güncelleme (PUT)

Mevcut bir proxy’yi güncellerken reParse: true parametresi ile OpenAPI specification yeniden parse edilir:
Detaylı bilgi için Update API Proxy API referansını inceleyebilirsiniz.

Yeni Proxy Oluşturma (POST)

Yeni proxy oluştururken backend routing bilgileri de tanımlanır:
Detaylı bilgi için Create API Proxy from URL API referansını inceleyebilirsiniz.
deploy: false parametresi ile proxy otomatik olarak deploy edilmez. Bu, bir sonraki stage’de kontrollü deployment yapılmasını sağlar.

Stage 4: Apinizer Environment’a Deploy

Son aşamada, güncellenen veya yeni oluşturulan proxy belirtilen environment’a deploy edilir. Bu işlem Apinizer’ın deployment API’si kullanılarak gerçekleştirilir:
Detaylı bilgi için Deploy API Proxy API referansını inceleyebilirsiniz.

Konfigürasyon Parametreleri

Environment Variables

Pipeline’da kullanılan temel environment variable’lar:

Apinizer API Endpoints

Bu pipeline’da kullanılan Apinizer API endpoint’leri:
Apinizer Management API hakkında detaylı bilgi için API Genel Bakış dokümanını inceleyebilirsiniz.

Kendi Pipeline’ınızı Uyarlamak

Bu örnek senaryo, Kubernetes üzerinde çalışan bir API için tasarlanmıştır. Kendi altyapınıza göre uyarlamak için:
1

Deployment Mekanizması

Kubernetes yerine farklı bir orchestrator veya doğrudan VM deployment kullanıyorsanız, K8s Deploy stage’ini kendi deployment metodunuza göre değiştirin.
2

Health Check

API’nizin farklı bir health check mekanizması varsa, API_HEALTH_ENDPOINT değişkenini ilgili endpoint ile güncelleyin.
3

OpenAPI Spec

API’nizin OpenAPI specification’ının erişilebilir bir URL’de olduğundan emin olun. Bu URL Apinizer tarafından erişilebilir olmalıdır.
4

Environment

Apinizer’da kullanmak istediğiniz environment’ı (dev, test, prod vb.) APINIZER_ENVIRONMENT değişkeninde belirtin.
5

Security

Credential’larınızı Jenkins Credentials Manager üzerinden yönetmeniz, pipeline güvenliği açısından daha uygun bir yaklaşım olacaktır.

Sonuç

Bu kılavuz, GitHub Actions, Jenkins ve Apinizer’ı kullanarak tam otomatik bir CI/CD pipeline’ının nasıl kurulacağını göstermiştir. Her kod değişikliği otomatik olarak build edilir ve Apinizer’a deploy edilir. Bu yaklaşım, manuel işlemleri minimize ederek deployment sürecinizi hızlandırır ve hata olasılığını azaltır.