0Pricing
Cloud & IT Cert Prep · Ders

Azure'a Sürekli Dağıtım

Derleme çıktısını bir App Service yuvasına gönderen, duman sınamalarını çalıştıran ve onayla üretime geçen bir dağıtım aşaması ekleyerek işlem hattını genişletin.

Azure'a Sürekli Dağıtım, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

Sürekli Dağıtım Nedir?

Sürekli Dağıtım (CD), CI testlerini geçen her değişikliği manuel müdahale olmadan otomatik olarak üretime yayımlar. Sürekli Teslim bunun daha esnek biçimidir; dağıtımı bir hazırlama ortamına kadar otomatikleştirir ve üretime geçmeden önce insan onayı kapısı gerektirir. Her iki uygulama da aynı pipeline altyapısı üzerine kuruludur. Azure Pipelines'ta CD, CI aşamasından sonra dağıtım aşamaları eklenerek ve gerektiğinde onay kapılarına sahip Azure ortamları hedeflenerek uygulanır.

Çok Aşamalı Pipeline: CI + CD

Tam bir CI/CD pipeline'ı en az üç aşamaya sahiptir: Build (derleme, test etme, yapıt yayımlama), Deploy to Staging (yapıtı üretim dışı bir yuvaya dağıtma) ve Deploy to Production (onaydan sonra yuvayı değiştirme veya dağıtım yapma). Aşamalar yapıtı pipeline yapıt depolama alanı üzerinden aktarır. Hazırlama aşaması tümleştirme veya duman testlerini otomatik olarak çalıştırır; üretim aşaması ilerlemeden önce manuel onay bekler.

# azure-pipelines.yml: multi-stage CI/CD
trigger:
  branches:
    include: [main]

pool:
  vmImage: ubuntu-latest

stages:
- stage: Build
  jobs:
  - job: BuildApp
    steps:
    - script: npm ci && npm run build
    - task: PublishPipelineArtifact@1
      inputs: {targetPath: dist, artifactName: webapp}

- stage: DeployStaging
  dependsOn: Build
  jobs:
  - deployment: StagingDeploy
    environment: Staging
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp-staging, package: '$(Pipeline.Workspace)/webapp'}

- stage: DeployProduction
  dependsOn: DeployStaging
  jobs:
  - deployment: ProductionDeploy
    environment: Production   # Has manual approval gate
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs: {appName: myapp, package: '$(Pipeline.Workspace)/webapp'}

Dağıtım İşleri ve Ortamlar

Dağıtım aşamaları için normal job yerine deployment işleri kullanın. Dağıtım işleri dağıtım stratejilerini (runOnce, rolling, canary) destekler, her ortamın dağıtım geçmişini izler ve Azure DevOps Environments'a başvurmak zorundadır. Bir ortam, hangi pipeline çalıştırmalarının kendisine dağıtım yaptığını ve hangi sürümün o anda canlı olduğunu kaydeder; ayrıca onay kapılarını, denetimleri ve kaynak sağlık durumunu tek bir panoda sunar.

# Deployment job with rolling strategy
- job: RollingDeploy
  strategy:
    rolling:
      maxParallel: 2     # Deploy to 2 targets at a time
      preDeploy:
        steps:
        - script: echo 'Pre-deploy checks'
      deploy:
        steps:
        - task: AzureWebApp@1
          inputs:
            appName: myapp
            package: '$(Pipeline.Workspace)/webapp'
      postRouteDeploy:
        steps:
        - script: curl -f https://myapp.azurewebsites.net/health

Azure App Service'e Dağıtım

AzureWebApp@1 görevi bir web uygulamasını Azure App Service'e dağıtır. Belirli bir yuvaya (örneğin staging) dağıtımı, ZIP paketlerini, Docker görüntülerini veya JAR/WAR dosyalarını destekler. Bir hazırlama yuvasına dağıtım yaptıktan sonra, hazırlama yuvasını üretime değiştirmek için AzureAppServiceManage@0 görevini kullanın. Bu, App Service için tercih edilen sıfır kesinti süreli dağıtım modelidir.

# Deploy to staging slot, then swap to production
steps:
- task: AzureWebApp@1
  displayName: 'Deploy to staging slot'
  inputs:
    azureSubscription: 'AzureProductionSC'
    appType: webAppLinux
    appName: myUniqueWebApp
    deployToSlotOrASE: true
    resourceGroupName: MyRG
    slotName: staging
    package: '$(Pipeline.Workspace)/webapp/app.zip'
    runtimeStack: 'NODE|18-lts'

- task: AzureAppServiceManage@0
  displayName: 'Swap staging into production'
  inputs:
    azureSubscription: 'AzureProductionSC'
    action: Swap Slots
    webAppName: myUniqueWebApp
    resourceGroupName: MyRG
    sourceSlot: staging

CD Pipeline'ında Duman Testleri

Hazırlama ortamına dağıtım yaptıktan sonra duman testlerini çalıştırın. Bunlar, dağıtımın başarılı olduğunu ve uygulamanın doğru yanıt verdiğini doğrulayan en temel test kümesidir. Duman testleri genellikle temel API uç noktalarını çağırır ve beklenen durum kodlarını ve yanıt içeriğini doğrular. Duman testleri başarısız olursa pipeline, üretime geçmeden veya onay istemeden önce durur; böylece hatalı bir sürümün kullanıcılara ulaşması önlenir.

# Smoke test step after staging deployment
- script: |
    MAX_RETRY=10
    COUNT=0
    until curl -sf https://myUniqueWebApp-staging.azurewebsites.net/health; do
      COUNT=$((COUNT+1))
      if [ $COUNT -ge $MAX_RETRY ]; then
        echo 'Health check failed after $MAX_RETRY attempts'
        exit 1
      fi
      echo 'Waiting for app to start... attempt '$COUNT
      sleep 10
    done
    echo 'App is healthy'
  displayName: 'Smoke test: health endpoint'

Ortam Onay Kapıları

Dağıtımların ilerlemeden önce manuel onay gerektirmesi için Azure DevOps Environments'a onay kapıları ekleyin. Ortam ayarlarına gidin ve Approvals ekleyin; onay vermesi gereken kullanıcıları veya grupları belirtin. Pipeline, bu ortamı hedefleyen bir dağıtım işine ulaştığında duraklar ve e-posta bildirimi gönderir. Onaylayanlar dağıtım ayrıntılarını görüntüleyebilir ve Azure DevOps portalında ya da bildirim e-postasındaki bağlantı üzerinden onaylayabilir veya reddedebilir.

# Pipeline YAML: deployment to production environment
# (Approval configured in Azure DevOps portal on 'Production' environment)
- stage: DeployProduction
  displayName: 'Deploy to Production'
  dependsOn: DeployStaging
  condition: succeeded('DeployStaging')
  jobs:
  - deployment: ProdDeploy
    environment: Production   # <-- Triggers approval gate configured in portal
    strategy:
      runOnce:
        deploy:
          steps:
          - task: AzureWebApp@1
            inputs:
              appName: myapp-prod
              package: '$(Pipeline.Workspace)/webapp/app.zip'

Azure Kubernetes Service'e Dağıtım

Kapsayıcılı uygulamaları KubernetesManifest@0 görevini kullanarak AKS'ye dağıtın. Bu görev, yerleşik imagePullSecrets ve canary dağıtımı desteğiyle Kubernetes YAML bildirimlerini kümeye uygular. Azure DevOps'ta yapılandırılmış bir Kubernetes hizmet bağlantısını kullanarak AKS kümesine bağlanın. Görev, arka planda kubectl apply komutunu kullanır ve adımı başarılı olarak işaretlemeden önce kullanıma alma işleminin tamamlanmasını bekler.

# AKS deployment step in Azure Pipelines
- task: KubernetesManifest@0
  displayName: 'Deploy to AKS'
  inputs:
    action: deploy
    kubernetesServiceConnection: 'AKS-Production-SC'
    namespace: production
    manifests: |
      k8s/deployment.yaml
      k8s/service.yaml
    containers: 'mycontainerregistry.azurecr.io/myapp:$(Build.BuildId)'
    imagePullSecrets: acr-secret

Görüntü Etiketleme Stratejisi

Kapsayıcı görüntülerini derleme kimliğiyle ($(Build.BuildId)) veya Git işleme SHA'sıyla ($(Build.SourceVersion)) etiketleyin. Böylece çalışan bir kapsayıcıyı, onu oluşturan kodun tam sürümüne her zaman geri izleyebilirsiniz. Üretimde latest etiketini kullanmaktan kaçının; Kubernetes bu etiketi önbelleğe alabilir ve yeni sürümü çekmeyebilir. Belirli görüntü etiketini bir pipeline değişkeni olarak depolayın ve dağıtım sırasında envsubst veya sed kullanarak bunu Kubernetes bildirimlerine ekleyin.

# Tag and push image with build ID in CI stage
- script: |
    IMAGE='mycontainerregistry.azurecr.io/myapp'
    TAG='$(Build.BuildId)'
    docker build -t $IMAGE:$TAG -t $IMAGE:latest .
    az acr login --name mycontainerregistry
    docker push $IMAGE:$TAG
    docker push $IMAGE:latest
    echo "##vso[task.setvariable variable=imageTag;isOutput=true]$TAG"
  name: BuildImage
  displayName: 'Build and push container image'

Geri Alma Stratejileri

Üretim dağıtımları için bir geri alma stratejisi tanımlayarak hatalı bir sürümden hızlıca kurtulabilmenizi sağlayın. App Service için geri alma, üretim yuvasını önceki hazırlama sürümüne geri değiştirmek anlamına gelir. AKS için kubectl rollout undo komutunu kullanın. Özel bir geri alma işlem hattı oluşturun veya Azure DevOps portalından tetiklenebilecek bir el ile geri alma işi ekleyin. Geri alma prosedürünü belgeleyin ve düzenli olarak uygulayın — test edilmemiş bir geri alma, geri alma sayılmaz.

# Rollback job triggered manually
- job: Rollback
  condition: and(failed(), eq(variables['Build.Reason'], 'Manual'))
  steps:
  # App Service rollback: swap production back to previous
  - task: AzureAppServiceManage@0
    inputs:
      azureSubscription: 'AzureProductionSC'
      action: Swap Slots
      webAppName: myUniqueWebApp
      resourceGroupName: MyRG
      sourceSlot: production  # Swap production back to staging version
      targetSlot: staging

Dağıtım Bildirimleri ve İzleme

Her üretim dağıtımından sonra yeni sürümün sağlıklı olduğunu doğrulamak için otomatik olarak bir izleme denetimi çalıştırın. Azure Monitor ölçümlerini sorgulamak için AzureMonitor@1 işlem hattı denetimini kullanın — dağıtımdan sonra hata oranları yükselirse işlem hattının ilerlemesini engelleyin ve geri almayı tetikleyin. Ekibin bir dağıtımın ne zaman tamamlandığını ve hangi sürümün yayında olduğunu bilmesi için dağıtım bildirimlerini webhook görevleri aracılığıyla Microsoft Teams veya Slack'e gönderin.

# Send Teams notification on deployment completion
- task: InvokeRestAPI@1
  displayName: 'Notify Teams channel'
  inputs:
    connectionType: connectedServiceName
    serviceConnection: 'TeamsWebhookSC'
    method: POST
    body: '{
      "text": "Deployed **$(Build.BuildId)** to Production. Committed by $(Build.RequestedFor). <br>View: https://myapp.contoso.com"
    }'
    waitForCompletion: false

CD En İyi Uygulamaları

Şu sürekli dağıtım en iyi uygulamalarını izleyin: sık sık dağıtım yapın (küçük gruplar riski azaltır), dağıtımı sürümden ayırmak için özellik bayraklarını kullanın, üretimden önce tüm kalite kapılarını otomatikleştirin, farklılıkların hataları gizlememesi için üretime benzer hazırlama ortamları kullanın, dağıtım pencerelerini otomatik durum denetimleriyle izleyin ve her zaman test edilmiş bir geri alma planınız olsun. Olgun bir CD işlem hattı, dağıtımı yüksek stresli bir işlem yerine sıradan bir etkinlik hâline getirir.

Hızlı Kontrol

Bu derste ele alınan Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: çok aşamalı YAML işlem hatları, Build, Staging ve Production aşamalarını yapıt aktarımıyla birbirine bağlar; Environments içeren dağıtım işleri, onay kapılarını ve dağıtım takibini etkinleştirir; hazırlama dağıtımından sonraki duman testleri ise bozuk sürümlerin üretime ulaşmasını önler. Sırada Azure üzerinde GitHub Actions'ı inceleyeceğiz.

Sıkça Sorulan Sorular

“Azure'a Sürekli Dağıtım” dersi ücretsiz mi?

Evet — “Azure'a Sürekli Dağıtım” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“Azure'a Sürekli Dağıtım” dersinde ne öğreneceğim?

Derleme çıktısını bir App Service yuvasına gönderen, duman sınamalarını çalıştıran ve onayla üretime geçen bir dağıtım aşaması ekleyerek işlem hattını genişletin. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Azure'a Sürekli Dağıtım” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Azure DevOps Services Genel Bakış
  2. Azure Pipelines ile CI İşlem Hattı Oluşturma
  3. Azure'a Sürekli Dağıtım
  4. Azure'da GitHub Actions
← Cloud & IT Cert Prep Sayfasına Dön