Aracılığıyla paylaş


Kod olarak Altyapı

Kod Olarak Altyapı (IaC), açıklayıcı bir modelde ağlar, işlem hizmetleri, veritabanları, depolamalar ve bağlantı topolojisi gibi altyapı yönetimini içeren önemli bir DevOps uygulamasıdır. IaC, ekiplerin değişiklikleri daha hızlı ve daha güvenle geliştirmesine ve yayınlamasına olanak tanır. IaC'nin avantajları şunlardır:

  • Dağıtımlara daha fazla güven
  • Birden çok ortamı yönetebilme
  • Altyapının durumunun daha iyi anlaşılması

Kod Olarak Altyapı kullanmanın avantajları hakkında daha fazla bilgi için bkz. Yinelenebilir altyapı.

Araçlar

Kod Olarak Altyapı uygularken uygulayabileceğiniz iki yaklaşım vardır.

  • Kesinlik Temelli Kod Olarak Altyapı , Bash veya PowerShell gibi dillerde betikler yazmayı içerir. İstenen sonucu elde etmek için yürütülen komutları açıkça belirtirsiniz. Kesinlik temelli dağıtımları kullandığınızda bağımlılıklar, hata denetimi ve kaynak güncelleştirmeleri dizisini yönetmek size bağlı olur.
  • Kod Olarak Bildirim temelli Altyapı , ortamınızın nasıl görünmesini istediğinizi tanımlayan bir tanım yazmayı içerir. Bu tanımda, nasıl gerçekleştirilmesini istediğiniz yerine istediğiniz sonucu belirtirsiniz. Araç, geçerli durumunuzu inceleyerek, hedef durumunuzla karşılaştırarak ve ardından farkları uygulayarak sonucun nasıl gerçekleştirildiğini anlar.

ARM Şablonları

Azure Resource Manager şablonları (ARM şablonları) hakkındaki bilgileri gözden geçirin.

Bicep

Bicep, Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan, etki alanına özgü bir dildir (DSL). Bicep dosyalarında, dağıtmak istediğiniz altyapıyı ve özelliklerini tanımlarsınız. ARM şablonlarıyla karşılaştırıldığında, bicep dosyaları kısa bir söz dizimi kullandığından geliştirici olmayan bir hedef kitle için daha kolay okunur ve yazılır.

param location string = resourceGroup().location
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

Terraform

Terraform hakkındaki bilgileri gözden geçirin.

Azure CLI

Azure CLI hakkındaki bilgileri gözden geçirin.

Kod Olarak Altyapı modülleri

Altyapıyı dağıtmak için kod kullanmanın amaçlarından biri, aynı veya benzer amaçlarla çalışmanın çoğaltılmasını veya birden çok şablon oluşturulmasını önlemektir. Altyapı modülleri yeniden kullanılabilir ve esnek olmalı ve net bir amaca sahip olmalıdır.

Modüller, genellikle birlikte dağıtılması gereken kaynak kümesini içeren bağımsız dosyalardır. Modüller, karmaşık şablonları daha küçük, daha yönetilebilir kod kümelerine bölmenize olanak sağlar. Her modülün belirli bir göreve odaklandığından ve tüm modüllerin birden çok dağıtım ve iş yükü için yeniden kullanılabilir olduğundan emin olabilirsiniz.

Bicep modülleri

Bicep, modülleri oluşturmanıza ve çağırmanıza olanak tanır. Modüller oluşturulduktan sonra diğer herhangi bir Bicep şablonundan kullanılabilir. Yüksek kaliteli bir Bicep modülü birden çok ilgili kaynağı tanımlamalıdır. Örneğin, bir Azure işlevi tanımlarken genellikle belirli bir uygulamayı, söz konusu uygulama için bir barındırma planını ve söz konusu uygulamanın meta verileri için bir depolama hesabını dağıtırsınız. Bu bileşenler ayrı ayrı tanımlanır, ancak mantıksal bir kaynak gruplandırması oluşturur, bu nedenle bunları bir modül olarak birlikte tanımlamayı göz önünde bulundurmalısınız.

Bicep modülleri yaygın olarak kullanılır:

  • Çağıran modülden değerleri kabul etmek için parametreler.
  • Sonuçları çağıran modüle döndürmek için çıkış değerleri.
  • Bir modülün yönetmesi için bir veya daha fazla altyapı nesnesi tanımlamak için kaynaklar.

Bicep modüllerini yayımlama

Bicep modüllerini yayımlamak ve paylaşmak için çeşitli seçenekleriniz vardır.

  • Genel kayıt defteri: Ortak modül kayıt defteri bir Microsoft kapsayıcı kayıt defterinde (MCR) barındırılır. Kaynak kodu ve içerdiği modüller GitHub'da depolanır.
  • Özel kayıt defteri: Modülleri özel bir kayıt defterinde yayımlamak için Azure kapsayıcı kayıt defterini kullanabilirsiniz. CI/CD işlem hattındaki bir kayıt defterinde modül yayımlama hakkında bilgi için bkz. Bicep ve GitHub Actions veya isterseniz Bicep ve Azure Pipelines.
  • Şablon Belirtimi: Bicep modüllerini yayımlamak için şablon özelliklerini kullanabilirsiniz. Şablon belirtimlerinin eksiksiz şablonlar olması amaçlanıyor ancak Bicep, modülleri dağıtmak için şablon özelliklerini kullanmanıza olanak tanır.
  • Sürüm denetim sistemi: Modülleri doğrudan GitHub veya Azure DevOps gibi sürüm denetimi araçlarından yükleyebilirsiniz.

Terraform modülleri

Terraform, modülleri oluşturmanızı ve çağırmanızı sağlar. Her Terraform yapılandırmasının kök modülü olarak bilinen ve ana çalışma dizininizdeki dosyalarda .tf tanımlanan kaynaklardan oluşan en az bir modülü vardır. Her modül, ana yapılandırma dosyanıza alt modülleri dahil etmenizi sağlayan diğer modülleri çağırabilir. Modüller aynı yapılandırma içinde veya farklı yapılandırmalardan birden çok kez çağrılabilir.

Modüller tüm aynı yapılandırma dili kavramlarıyla tanımlanır. Bunlar en yaygın olarak şu şekilde kullanılır:

  • Çağıran modülden değerleri kabul etmek için değişkenleri girin.
  • Sonuçları çağıran modüle döndürmek için çıkış değerleri.
  • Bir modülün yönetmesi için bir veya daha fazla altyapı nesnesi tanımlamak için kaynaklar.

Terraform modüllerini yayımlama

Terraform modüllerini yayımlamak ve paylaşmak için çeşitli seçenekleriniz vardır:

  • Genel kayıt defteri: HashiCorp, kullanıcıların paylaşılabilir Terraform modülleri oluşturmasına olanak tanıyan kendi Terraform Modül Kayıt Defteri'ne sahiptir. Şu anda Terraform Module Registry'de yayımlanmış birkaç Azure modülü vardır.
  • Özel kayıt defteri: Terraform modüllerini Terraform Cloud Private Registry veya Azure Container Registry gibi özel bir depoda sorunsuz bir şekilde yayımlayabilirsiniz.
  • Sürüm denetim sistemi: Özel modülleri doğrudan GitHub gibi sürüm denetimi araçlarından yükleyebilirsiniz. Desteklenen kaynaklar hakkında bilgi için bkz . Terraform modül kaynakları.

Tasarım konusunda dikkat edilmesi gerekenler

  • Giriş bölgesi kaynaklarını Azure'a dağıtırken IaC kullanmayı göz önünde bulundurun. IaC, dağıtım iyileştirmesini tam olarak gerçekleştirir, yapılandırma eforunu azaltır ve ortamın tüm dağıtımlarını otomatikleştirir.

  • Kesinlik temelli veya bildirim temelli bir IaC yaklaşımı benimsemeniz gerekip gerekmediğini belirleyin.

    • Kesinlik temelli bir yaklaşım benimsediyseniz, istediğiniz sonucu veren yürütülecek komutları açıkça belirtin.

    • Bildirim temelli bir yaklaşım benimsiyorsa, nasıl yapılmasını istediğiniz yerine istediğiniz sonucu belirtin.

  • Dağıtım kapsamlarını göz önünde bulundurun. Azure yönetim düzeyleri ve hiyerarşisi hakkında iyi bir anlayışa sahip olmanız gerekir. Her IaC dağıtımının Azure kaynaklarının dağıtıldığı kapsamı bilmesi gerekir.

  • Azure yerel veya Azure'da yerel olmayan bir IaC aracı kullanmanız gerekip gerekmediğini belirleyin. Dikkat edilmesi gereken bazı noktalar:

    • Azure CLI, ARM Şablonları ve Bicep gibi Azure yerel araçları, yeni özelliklerinin daha hızlı tümleştirilmesini sağlayan Microsoft tarafından tam olarak desteklenir.

    • Terraform gibi yerel olmayan araçlar, AWS veya GCP gibi birden çok bulut sağlayıcısında kod olarak altyapıyı yönetmenize olanak sağlar. Ancak yeni Azure özelliklerinin yerel olmayan özelliklere eklenmesi biraz zaman alabilir. Kuruluşunuz çoklu bulut kullanıyorsa veya kuruluşunuz Terraform'da zaten kullanıyor ve deneyimliyse Azure giriş bölgelerini dağıtmak için Terraform kullanmayı göz önünde bulundurun.

  • Modüller karmaşık şablonları daha küçük kod kümelerine bölmenizi sağladığından, yaygın olarak birlikte dağıtılan kaynaklar için IaC modüllerini kullanmayı göz önünde bulundurun. Her modülün belirli bir göreve odaklandığından ve birden çok dağıtım ve iş yükü için yeniden kullanılabilir olduğundan emin olabilirsiniz.

  • Genel kayıt defterleri, özel kayıt defterleri veya Git deposu gibi bir sürüm denetim sistemi arasında seçim yaparak IaC modülleri için yayımlama stratejisini benimsemeyi göz önünde bulundurun.

  • IaC dağıtımları için CI/CD işlem hattı kullanmayı göz önünde bulundurun. İşlem hattı, dağıtımlarınızın ve Azure ortamınızın kalitesini sağlamak için ayarladığınız yeniden kullanılabilir işlemi zorlar.

Tasarım önerileri

  • Azure giriş bölgesi dağıtımlarını dağıtma, yönetme, yönetme ve desteklemeye yönelik bir IaC yaklaşımı benimseyin.

  • Aşağıdaki senaryolarda IaC için Azure yerel araçlarını kullanın:

    • Yalnızca Azure yerel araçlarını kullanmak istiyorsunuz. Kuruluşunuzda arm veya Bicep şablonu dağıtım deneyimi önceden olabilir.

    • Kuruluşunuz, Azure hizmetlerinin tüm önizleme ve GA sürümleri için anında destek almak istiyor.

  • Aşağıdaki senaryolarda IaC için yerel olmayan araçları kullanın:

    • Kuruluşunuz şu anda AWS veya GCP gibi diğer bulutlara altyapı dağıtmak için Terraform kullanıyor.

    • Kuruluşunuzun Azure hizmetlerinin tüm önizleme ve GA sürümleri için anında desteğe sahip olması gerekmez.

  • Yinelenen çalışmalardan kaçınmak için yeniden kullanılabilir IaC modüllerini kullanın. Birden çok proje veya iş yükü dağıtmak ve daha az karmaşık kodu yönetmek için kuruluşunuz genelinde modülleri paylaşabilirsiniz.

  • Aşağıdaki senaryolarda genel kayıt defterlerinden IaC modüllerini yayımlayın ve kullanın:

    • Azure Giriş Bölgesi'nin genel kayıt defterlerinde zaten yayımlanmış olan modüllerini kullanmak istiyorsunuz. Daha fazla bilgi için bkz. Azure giriş bölgeleri Terraform modülü.

    • Microsoft, Terraform veya diğer modül sağlayıcıları tarafından korunan, güncelleştirilen ve desteklenen modülleri kullanmak istiyorsunuz.

      • Değerlendirdiğiniz herhangi bir modül sağlayıcısının destek bildirimini denetlediğinizden emin olun.
  • Aşağıdaki senaryolarda özel kayıt defterlerinden veya sürüm denetim sistemlerinden IaC modüllerini yayımlayın ve kullanın:

    • Kurumsal gereksinimlerinize göre kendi modüllerinizi oluşturmak istiyorsunuz.

    • Tüm özelliklerde tam denetim sahibi olmak ve modüllerin yeni sürümlerini korumak, güncelleştirmek ve yayımlamak istiyorsunuz.

  • IaC yapıtlarını dağıtmak ve dağıtım ile Azure ortamlarınızın kalitesini güvence altına almak için CI/CD işlem hattı kullanın.