Azure Pipelines ile Azure Resource Scale Otomasyonu – Bölüm 1: App Service Plan
  1. Anasayfa
  2. Microsoft Azure

Azure Pipelines ile Azure Resource Scale Otomasyonu – Bölüm 1: App Service Plan

0

Bu yazıyı okuyana kadar Azure üzerindeki kaynaklarınızın, belirli zamanlarda otomatik olarak pricing planlarını değiştirme ihtiyacınız oldu mu? Eğer olmadıysa ya da bunun için farklı bir yöntem tercih ettiyseniz, bu yazıda Azure Pipelines kullanarak Azure Web App’i, yani App Service Plan’ın pricing planını otomatik olarak nasıl scale up yapabileceğinizi göstereceğim. Web App’te autoscale yok muydu diye merak edenler için, o işlem maalesef scale out yani instance sayısı ile ilgili bir durum.

Örnekte app service planı mesai saati sonunda F1 yani Free plan olacak şekilde, mesai saatlerinde de B1 olacak şekilde güncellemek istiyorum.

Bu işlemi pipeline üzerinde yapabilmemiz için öncelike tahmin edeceğiniz gibi çalıştıracağımız bir kod parçacığına ihtiyacımız olacak. Tabii ki buradaki en pratik seçenek PowerShell.

Script içerisinde az cli komutlarından az appservice plan update kullanacağım. Parametre olarak da appServicePlan, resourceGroup ve sku değerlerini kullanacağım. Burada bütün parametreleri zorunlu olarak tanımladım ve SKU için de Resim-1‘de gördüğünüz pricing tier’lar ile sınırlı olması için parametre validasyonu ekledim.

Resim-1

Şimdi sırada pipeline yaml dosyasını tanımlama var. Burada içerisinde AzureCLI@2 task’ı olacak şekilde, az önce tanımladığım script’i çalıştıracak şekilde bir tanımlama yapıyorum.

Resim-2

NOT: Kaynak kodlara buradan ulaşabilirsiniz.

$(…) şeklinde tanımladığım değişkenler için ilgili değerli de pipeline değişkenleri içerisinde tanımlayacağım. Script ve pipeline dosyalarını Azure Repos üzerinde uygun bir isimlendirme ile publish ettikten sonra sırada pipeline oluşturma işlemi var. Burada new pipeline > Azure Repos Git > Oluşturduğunuz Repo > Existing Azure Pipelines YAML file seçeneklerini takip ederek, kullanacağımız branch (main) içerisindeki pipeline yaml dosyasını seçiyorum. Pipeline oluşturduktan sonra değişken tanımına geçmeden önce yapılması gereken bir işlem daha var. Eğer daha önce Azure Pipelines üzerinden Azure subscription’a bağlanmak için bir service connection oluşturmadıysanız, ilk önce bunu tanımlamak gerekiyor.

Project Settings > Pipelines altında bulabileceğiniz Service connections‘a sekmesine giderek aşağıdaki adımları takip edip yeni bir service connection oluşturabilirsiniz. Yeni bir tane service connection oluşturmadan önce, eğer bu ekranda göremeseniz bile mevcutta (yetkiniz olmayacağını düşünerek) daha önceden oluşturulmuş bir service connection olup olmadığını ilgili ekiple görüşmenizi tavsiye ediyorum.

Yeni oluşturma işleminde ise Azure Resource Manager kullanarak devam ediyorum.

Resim-3

Sonraki adımda da tavsiye edilen yöntem olan Service principal (automatic) seçeneğini seçiyorum.

Resim-4

Son adımda da Scope level olarak çalışacağım Subscription’ı seçip, buna bir de isim verdikten sonra (resource group seçmeden) service connection oluşturma işlemini tamamlıyorum. Bu aşamada sizden tekrar login olmanızı isteyebilir.

Resim-5

Burada Grant access permission to all pipelines seçeneği ile bütün pipeline’lara erişim yetkisi de veriyorum.

Resim-6

Service connection işlemlerini de tamamladıktan sonra pipeline variables’ı Resim-7‘de göreceğiniz şekilde tanımlıyorum. Burada sadece SKU değerini Let users override this value when running this pipeline seçili olarak oluşturdum, diğerlerinde bu seçenek seçili değil.

Resim-7

Şimdi de Triggers ‘ı seçerek pipeline’ı otomatik olarak çalıştıracağım zamanı ayarlayacağım. Bunu yaml üzerine schedules ekleyerek cron job olarak da yapabilirsiniz, ama bir güncelleme gerektiğinde bunun PR sürecine tekrar girmesini de isteyip istemediğinizi düşünerek yapmanızı öneririm.

Resim-8

F1’e scale edeceğim günleri ve saati tanımladıktan sonra, aynı işlemleri bir de mesai saati başlangıcında tekrar eski haline getirmek için tekrarlayarak 2. bir pipeline da oluşturarak tamamlıyorum.

Resim-9

Pipeline isimlerine de App Service Plan adı, hangi pricing tier’a scale ettiğimi de yazarak güncelledikten sonra, isterseniz test amaçlı olarak manuel olarak da pipeline’ı çalıştırabilirsiniz.

Resim-10

Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

Azure Pipelines documentation – Azure DevOps | Microsoft Learn

az appservice plan | Microsoft Learn

GitHub – mertyeter/azure-resource-scaler

TAGs: Azure, Azure App Service, App Service Plan, Azure DevOps, Azure Pipelines, Azure Repos, Azure CLI, Az CLI, PowerShell, Scale up, Azure Web App

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir