Aracılığıyla paylaş


Azure Pipelines kullanarak AKS uygulamaları için CI/CD işlem hattı oluşturma

Önemli

Bu makalede , sürekli tümleştirme ve sürekli dağıtım (CI/CD) temel mimarisinin bir sürümü açıklanmaktadır. Özellikle Azure Pipelines kullanarak Azure Kubernetes Service (AKS) uygulamalarını dağıtmaya odaklanır.

Azure Pipelines, tekrarlanabilir bir uygulama teslim planının parçası olarak AKS'ye dağıtım etkinliklerini düzenler. İnsan hatası riskini azaltmak, yayın döngülerini hızlandırmak ve genel yazılım kalitesini geliştirmek için derleme ve yayın süreçlerinizi bir işlem hattıyla tümleştirebilirsiniz. Bu makalede, CI/CD uygulamak ve AKS kümelerine uygulama güncelleştirmeleri göndermek için Azure Pipelines'ın nasıl kullanılacağı açıklanmaktadır.

Architecture

Azure Pipelines kullanan AKS CI/CD işlem hattının mimari diyagramı.

Akış soldan sağa doğru gider. Bir mühendisin kod değişikliklerini bir Azure Repos Git deposuna göndermesi ve Azure Pipelines PR işlem hattının tetiklendiği 1. adımla başlar. Bu işlem hattı şu görevleri içerir: Geri yükleme, derleme, birim testleri, PR incelemesi ve lint, güvenlik taraması ve diğer araçları içeren kod analizi. 2. adımda bir Azure Pipelines CI işlem hattı tetiklenir. Bu işlem hattı şu görevleri içerir: Gizli dizileri alma, lint, geri yükleme, derleme, birim testleri, tümleştirme testleri, derleme yapıtlarını yayımlama ve kapsayıcı imajları yayımlama. 3. adımda, bir kapsayıcı görüntüsü üretim dışı bir Azure kapsayıcı kayıt defterinde yayımlanır. 4. adımda bir Azure Pipelines CD işlem hattı tetiklenir. Bu işlem hattı şu görevleri içerir: Hazırlama, kabul testlerine dağıtma, kapsayıcı görüntüsünü yükseltme, isteğe bağlı el ile müdahale ve yayın. 5. adımda, CD işlem hattı AKS içeren bir hazırlama ortamına dağıtılır. 6. adımda kapsayıcı görüntüsü üretim Azure kapsayıcı kayıt defterine yükseltilir. 7. adımda, CD işlem hattı AKS içeren bir üretim ortamına yayımlanır. 8. adımda Prometheus için Azure İzleyici yönetilen hizmeti telemetri verilerini Azure İzleyici'ye iletir. 9. adım, bir operatör, Azure Monitor, Prometheus için Azure Monitor Yönetilen Hizmeti, Log Analytics çalışma alanı, Microsoft Security DevOps, anahtar kasaları, Azure Managed Grafana ve Defender for Cloud'u içeren bir bölümle temsil edilir. 1. adımdan Microsoft Security DevOps'a kesikli çizgi uzanır. Birden fazla kesikli çizgi, 2. adımdan, 4. adımdan ve adım 4 ile hazırlık ve üretim ortamları arasındaki bölümden mühendise uzanır.

Bu mimarinin Visio dosyasını indirin.

Dataflow

Aşağıdaki veri akışı önceki diyagrama karşılık gelir:

  1. Azure Repos Git deposuna veya GitHub deposuna yönelik çekme isteği (PR), çekme isteği işlem hattını tetikler.

    Bu işlem hattı, aşağıdaki işlemler de dahil olmak üzere kalite denetimleri çalıştırır:

    • Bağımlılık yönetim sisteminden bağımlılıkları çekmeyi gerektirebilecek kod oluşturma
    • Statik kod analizi, lint ve güvenlik taraması gibi kodu analiz etmek için araçları kullanma
    • Birim testleri gerçekleştirme

    Herhangi bir denetim başarısız olursa işlem hattı çalıştırması sona erer ve geliştirici gerekli değişiklikleri yapmalıdır. Tüm denetimler başarılı olursa, işlem hattı bir pull request incelemesi gerektirir. Eğer Çİ incelemesi başarısız olursa, iş akışı sona erer ve geliştirici gerekli değişiklikleri yapmalıdır. Başarılı bir pipeline çalıştırması, başarılı bir PR birleştirme ile sonuçlanır.

  2. Azure Repos Git'e birleştirme işlemi bir CI işlem hattını tetikler. Bu işlem hattı PR işlem hattıyla aynı görevleri çalıştırır ve tümleştirme testleri ekler.

    Tümleştirme testleri gizli dizi gerektiriyorsa işlem hattı bunları bu ortamın CI işlem hattına ayrılmış bir kaynak olan Azure Key Vault'tan alır.

    Herhangi bir denetim başarısız olursa işlem hattı sona erer ve geliştirici gerekli değişiklikleri yapmalıdır.

  3. Başarılı bir CI işlem hattının çalışması, üretim dışı bir ortamda bir Azure kapsayıcı kayıt defterinde kapsayıcı görüntüsü oluşturur ve yayımlar. Kapsayıcılar için Defender , Azure Container Registry'ye gönderildiğinde kapsayıcı görüntülerini tarar ve görüntü güvenlik açıklarını Bulut için Microsoft Defender'a bildirir. İsteğe bağlı olarak, kapsayıcı görüntüsünün bütünlüğünü sağlamak için kapsayıcı görüntüleri imzalanabilir .

  4. CI işlem hattının tamamlanması CD işlem hattını tetikler.

  5. CD işlem hattı, Defender aracısı içeren hazırlama AKS ortamına bir YAML şablonu dağıtır. Bu dağıtım bir gönderme modeli kullanır ve kubectl veya Helm aracılığıyla çalışır. Şablon, üretim dışı kayıt deposunda bulunan kapsayıcı görüntüsünü referans alır.

    Pipeline, dağıtımı doğrulamak için hazırlık ortamında kabul testleri uygular. Testler başarılı olursa işlem hattı, dağıtımı doğrulamak ve işlem hattını sürdürmek için el ile doğrulama görevi içerebilir. Bazı iş yükleri otomatik olarak dağıtılır. Herhangi bir denetim başarısız olursa işlem hattı sona erer ve geliştirici gerekli değişiklikleri yapmalıdır.

  6. Bir kişi el ile müdahaleyi sürdürürse, CD işlem hattı görüntüyü üretim dışı Azure kapsayıcı kayıt defterinden üretim kayıt defterine yükselter. Kapsayıcılar için Defender , Kapsayıcı Kayıt Defteri'ne gönderildiğinde kapsayıcı görüntülerini tarar ve görüntü güvenlik açıklarını Bulut için Microsoft Defender'a bildirir.

  7. CD işlem hattı, Defender aracısı içeren üretim AKS ortamına bir YAML şablonu dağıtır. Şablon, üretim kayıt defterinden kapsayıcı görüntüsünü belirtir.

  8. Prometheus için Azure İzleyici yönetilen hizmeti, kapsayıcı konaklarından ve kapsayıcılardan performans ölçümlerini, envanter verilerini ve sağlık durumu bilgilerini düzenli aralıklarla Azure İzleyici'ye iletir.

  9. Log Analytics çalışma alanı tüm verileri depolar. Azure İzleyici, diğer özellikler tarafından toplanan verileri analiz etmek için birden çok araç sağlar. Çeşitli Grafana panoları farklı Kubernetes telemetri kümelerini birleştirir. Application Insights, izler gibi uygulamaya özgü izleme verilerini toplar.

    Kapsayıcılar için Defender, AKS'de çalışan kapsayıcılarda ve Container Registry'de depolanan kapsayıcı görüntülerinde düzenli aralıklarla tarama gerçekleştirir. Kapsayıcılar için Defender ayrıca desteklenen kapsayıcılı ortamlar için gerçek zamanlı tehdit koruması sağlar ve şüpheli etkinlikler için uyarılar oluşturur. Bu bilgiler, güvenlik sorunlarını belirlemeye ve kapsayıcıların güvenliğini geliştirmeye yardımcı olur.

Components

  • Azure Pipelines , kodu otomatik olarak oluşturan, test eden ve işlem hedefine dağıtan bir Azure DevOps bileşenidir. Bu mimaride kapsayıcı görüntüleri oluşturup test eder, bunları Container Registry'ye yükler ve AKS'ye dağıtır.

  • Prometheus için Azure İzleyici yönetilen hizmeti , kapsayıcılı ortamlar için izleme sağlayan bir Azure özelliğidir. Bu mimaride kapsayıcılardan performans ölçümleri, günlükler ve sistem durumu verilerini toplar ve analiz ve uyarı için bu gözlemlenebilirlik verilerini Azure İzleyici'ye iletir.

  • Key Vault , API anahtarları, parolalar, sertifikalar veya şifreleme anahtarları gibi gizli dizileri depolamaya ve bunlara erişmeye yönelik bir bulut hizmetidir. Bu mimaride işlem hattı, Key Vault'tan kodu test için gereken gizli dizileri alır.

  • Azure İzleyici , bulut ve şirket içi ortamlardan telemetri verilerini toplayan, analiz eden ve yanıtlayan bir izleme çözümüdür. Bu mimaride AKS kümeleri ve CI/CD işlem hattı işlemleri için izleme ve uyarı sağlayan merkezi gözlemlenebilirlik platformu görevi görür.

  • Container Registry , Azure'da yönetilen, özel bir kapsayıcı kayıt defteri hizmetidir. Container Kayıt Defteri, özel kapsayıcı görüntülerini depolar. Bu mimaride işlem platformu, uygulamanın kapsayıcı görüntüsünü Container Registry'den çeker.

  • AKS , Azure'ın sistem durumu izleme ve bakım gibi kritik görevleri işlediği yönetilen bir Kubernetes hizmetidir. Bu mimaride uygulama için işlem platformu görevi görür.

  • Microsoft Security DevOps Azure DevOps uzantısı , güvenlik taramayı doğrudan CI/CD iş akışlarınıza eklemenizi sağlar. Bu mimaride, Microsoft Security DevOps statik analiz gerçekleştirir ve AKS geliştirme ve dağıtımındaki birden çok işlem hattında güvenlik duruşlarının görünürlüğünü sağlar. Microsoft Security DevOps, çok bulutlu ortamlarda kapsamlı görünürlük, duruş yönetimi ve tehdit koruması sağlayan Bulut için Microsoft Defender DevOps güvenliğinin bir parçasıdır.

Alternatives

Uygulamanız için aşağıdaki alternatifleri kullanın.

Çekme tabanlı model (GitOps)

Bu senaryoda AKS'de kaynakları dağıtmak için gönderim tabanlı bir model gösterilmektedir. Kümelerinizde belirleyici güncelleştirmelere ihtiyaç duyduğunuzda en iyi şekilde gönderim tabanlı dağıtımlar çalışır. Boru hatları dağıtımları etkin bir şekilde başlatır, başarılarını izler ve dağıtımlar başarısız olursa doğrudan eyleme geçer. Bu yaklaşım genellikle iş yüklerindeki güvenli dağıtım uygulamalarının önemli bir özelliğidir. Gönderme tabanlı dağıtımlar, tek bir küme içinde veya kümeler arasında yüksek oranda denetlenen bir dağıtım düzenine ihtiyacınız olan mavi-yeşil ortamlar gibi birden çok dağıtım hedeflerine de uygundur.

Alternatif olarak, çekme tabanlı dağıtımlar güncelleştirmeleri getirmek ve uygulamak için kümeleri temel alır. Bu desen, işlem hattından dağıtım mantığını ayırarak, tek tek kümelerin GitOps iş akışlarındaki bir git deposu veya yapıt kayıt defteri gibi merkezi bir konumda depolanan istenen durumla uyumlu hale gelmesini sağlar. Çekme tabanlı dağıtımlar, tutarlılık, denetlenebilirlik ve kendi kendine düzeltmeyi öncelik sırasına alan ortamlar için en iyi şekilde çalışır. Gerçeğin kaynağı genellikle sürüm denetimli sistemlerde harici olarak bulunur, bu nedenle kümeler bu istenen durumla eşleşecek güncelleştirmeleri sürekli izler ve uygular. Bu yaklaşım kayma riskini azaltır. Bir küme bir hatayla karşılaşırsa veya kullanılamaz duruma gelirse, merkezi bir işlem hattından yeniden dağıtıma gerek kalmadan yeniden çevrimiçi olduktan sonra kendi kendine uzlaştırılabilir.

GitOps çekme modeli, işlem hatlarının kümelere doğrudan erişme veya ilişkili dağıtım kimlik bilgilerini kullanma gereksinimini de ortadan kaldırarak saldırı vektörlerini ortadan kaldırır. Kümelerin yalnızca kaynak deposuna salt okunur erişime ihtiyaçları vardır. Daha fazla bilgi için bkz. AKS için GitOps.

GitHub Actions ile oluşturulan CI/CD işlem hattı

Azure Pipelines'ın yerini AKS için GitHub Actions ile değiştirebilirsiniz. GitHub Actions, derleme, test ve dağıtım işlem hattınızı otomatikleştirmek için kullanabileceğiniz bir CI/CD platformudur. AKS için başlangıç iş akışı kullanmayı ve CI/CD gereksinimlerinize göre özelleştirmeyi göz önünde bulundurun.

Sonraki Adımlar