Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ö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
Bu mimarinin Visio dosyasını indirin.
Dataflow
Aşağıdaki veri akışı önceki diyagrama karşılık gelir:
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.
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.
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 .
CI işlem hattının tamamlanması CD işlem hattını tetikler.
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.
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.
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.
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.
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
- Kubernetes altyapısında ve buna bağlı uygulamalarda farklı katmanların sistem durumunu ve performansını izleyen Azure İzleyici'yi temel alan eksiksiz bir hizmet kümesi için bkz. Azure İzleyici'de Kubernetes izleme.
- Azure Pipelines kullanan CI/CD temel mimarisi
- Eğitim: Azure'da Kubernetes'e giriş