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
| Teknoloji | Versiyon |
|---|---|
| Jenkins | jenkins/jenkins:lts |
| Apinizer | v2026.01.5 |
| GitHub Actions | — |
| Kubernetes | Ortamınıza bağlı |
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, hermain 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:| Secret | Açıklama |
|---|---|
DOCKERHUB_USERNAME | Docker Hub kullanıcı adınız |
DOCKERHUB_TOKEN | Docker Hub access token |
JENKINS_URL | Jenkins instance URL’iniz |
JENKINS_JOB_NAME | Jenkins job adı |
JENKINS_USER | Jenkins kullanıcı adı |
JENKINS_TOKEN | Jenkins API token |
2. Jenkins Pipeline Yapılandırması
Jenkins pipeline, aşağıdaki aşamaları gerçekleştirir:- K8s Deploy: Yeni Docker image’ı Kubernetes’e deploy eder
- Health Check: API’nin sağlıklı çalıştığını doğrular
- Sync Apinizer API Proxy: API Proxy’yi günceller veya oluşturur
- 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:| Credential ID | Tip | Açıklama |
|---|---|---|
APINIZER_TOKEN | Secret text | Apinizer API token |
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:
API_HEALTH_ENDPOINT değişkenini buna göre güncelleyin.
Stage 3: Apinizer API Proxy Senkronizasyonu
Bu kritik aşamada:- Proxy Kontrolü: İlgili API Proxy’nin var olup olmadığı kontrol edilir
- Güncelleme veya Oluşturma:
- Proxy varsa: OpenAPI spec’i güncellenir (
PUTrequest) - Proxy yoksa: Yeni proxy oluşturulur (
POSTrequest)
- Proxy varsa: OpenAPI spec’i güncellenir (
Proxy Güncelleme (PUT)
Mevcut bir proxy’yi güncellerkenreParse: 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.
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:| Değişken | Açıklama | Örnek Değer |
|---|---|---|
APINIZER_BASE_URL | Apinizer platform URL’i | YOUR_APINIZER_URL |
APINIZER_PROJECT | Apinizer proje adı | YOUR_PROJECT_NAME |
APINIZER_ENVIRONMENT | Deploy edilecek environment | YOUR_ENVIRONMENT_NAME |
APINIZER_PROXY_NAME | API Proxy adı | YOUR_PROXY_NAME |
APINIZER_PROXY_PATH | Gateway’deki relative path | YOUR_PROXY_RELATIVE_PATH |
API_SPEC_URL | OpenAPI specification URL’i | YOUR_BACKEND_URL/openapi.json |
Apinizer API Endpoints
Bu pipeline’da kullanılan Apinizer API endpoint’leri:| İşlem | Endpoint |
|---|---|
| Proxy Kontrolü | GET /apiops/projects/{project}/apiProxies/{proxyName}/ |
| Proxy Güncelleme | PUT /apiops/projects/{project}/apiProxies/url/ |
| Proxy Oluşturma | POST /apiops/projects/{project}/apiProxies/url/ |
| Environment Deploy | POST /apiops/projects/{project}/apiProxies/{proxyName}/environments/{env}/ |
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: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.Health Check
API’nizin farklı bir health check mekanizması varsa,
API_HEALTH_ENDPOINT değişkenini ilgili endpoint ile güncelleyin.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.
Environment
Apinizer’da kullanmak istediğiniz environment’ı (
dev, test, prod vb.) APINIZER_ENVIRONMENT değişkeninde belirtin.
