Bu senaryoda, Jenkins 'i yüklerken ve yapılandırırkendikkate alınması gereken mimari ve noktalar açıklanmaktadır.

Bu mimari diyagramı içeren bir Visio dosyasını indirin.
Bu mimari, Azure hizmetleriyle olağanüstü durum kurtarmayı destekler, ancak kapalı kalma süresi olmadan birden çok mali veya yüksek kullanılabilirlik (HA) içeren daha gelişmiş ölçek genişletme senaryolarını kapsamaz. Azure 'da bir CI/CD işlem hattı oluşturmaya yönelik adım adım öğretici de dahil olmak üzere çeşitli Azure bileşenleriyle ilgili genel Öngörüler için bkz. Azure 'Da Jenkins.
Bu belge, Jenkins’i desteklemek için gereken temel Azure işlemleri üzerinde odaklanmaktadır. Buna, derleme yapıtlarının saklanması için Azure Depolama hizmetinin kullanılması, SSO için gerekli güvenlik öğeleri, tümleştirilebilir diğer hizmetler ve işlem hattının ölçeklenebilirliği dahildir. Mimari, mevcut bir kaynak denetimi deposu ile çalışacak şekilde tasarlanmıştır. GitHub işlemelerine dayalı Jenkins işleri başlatmak, yaygın bir senaryo örneği olarak verilebilir.
Mimari
Mimari aşağıdaki bileşenlerden oluşur:
Kaynak grubu. Kaynak grubu, Azure varlıklarını yaşam süresi, sahip ve diğer ölçütlere göre yönetilebilir şekilde gruplandırmak için kullanılır. Azure varlıklarını grup halinde dağıtıp izlemek ve faturalandırma maliyetlerini kaynak grubuna göre izlemek için kaynak gruplarını kullanabilirsiniz. Kaynakları, test dağıtımları için yararlı olan bir küme olarak da silebilirsiniz.
Jenkins sunucusu. Bir sanal makine, Jenkins 'i Otomasyon sunucusu olarak çalıştırmak üzere dağıtılır ve Jenkins birincil işlevi görür. Jenkins 'ı yükleyip yapılandırmabölümünde Jenkins 'i yenı bir sanal makineye nasıl yükleyeceğiniz hakkında bilgi edineceksiniz.
Not
Jenkins için ters proxy rolü üstlenmesi amacıyla VM’ye Nginx yüklenir. Nginx, Jenkins sunucusu için SSL’yi etkinleştirecek şekilde yapılandırılabilir.
Sanal ağ. Sanal ağ, Azure kaynaklarını birbirine bağlar ve mantıksal yalıtım sağlar. Bu mimaride, Jenkins sunucusu bir sanal ağda çalıştırılır.
Ağlarda. Ağ trafiğinin performansı etkilemeden yönetilmesi ve ayrılmasını kolaylaştırmak amacıyla Jenkins sunucusu bir alt ağ içinde yalıtılır.
Ağ güvenlik grupları. Internet 'ten gelen ağ trafiğini bir sanal ağın alt ağıyla kısıtlamak için ağ güvenlik grupları 'nı kullanın.
Yönetilen diskler. Yönetilen disk, uygulama depolamasının yanı sıra Jenkins sunucusunun durumunu korumak ve olağanüstü durum kurtarma hizmeti sağlamak için kullanılan bir sanal sabit disktir (VHD). Veri diskleri, Azure Depolama'da saklanır. Yüksek performans elde etmek için premium depolama önerilir.
Azure Blob depolama. azure Depolama Windows , diğer jenkins derlemeleriyle oluşturulan ve paylaşılan derleme yapıtlarını depolamak için azure Blob depolama ile ilgili bilgi edinin.
Azure Active Directory (Azure AD).Azure AD Kullanıcı kimlik doğrulamasını destekler, bu da SSO 'yu ayarlamanıza olanak sağlar. Azure AD hizmet sorumluları , Azure rol tabanlı erişim denetımı (Azure RBAC)kullanarak iş akışındaki her rol yetkilendirmesi için ilke ve izinleri tanımlar. Her hizmet sorumlusu, bir Jenkins işiyle ilişkilidir.
Azure Key Vault. Gizli dizileri gerektiğinde Azure kaynakları sağlamak için kullanılan gizli dizileri ve şifreleme anahtarlarını yönetmek için, Bu mimaride Azure Key Vaultkullanır.
Azure izleme hizmetleri. Bu hizmet, Jenkins’i barındıran Azure sanal makinesini izler. Bu dağıtım, sanal makinenin durumunu ve CPU kullanımını izleyip uyarılar gönderir.
Öneriler
Aşağıdaki öneriler çoğu senaryo için geçerlidir. Bu önerileri geçersiz kılan belirli bir gereksiniminiz olmadığı sürece izlemeniz önerilir.
Ölçeklenebilirlik konusunda dikkat edilmesi gerekenler
Jenkins, gereken şekilde iş yüklerini destekleyecek şekilde dinamik olarak ölçeklendirebilir. Elastik derlemeler için, yapıları Jenkins birincil sunucusunda çalıştırmayın. Bunun yerine, derlemeler için ölçeği gerektiği şekilde elastik olarak genişletilip daraltılabilen Jenkins aracılarından yararlanın. Aracıları ölçeklendirmek için aşağıdaki iki seçenekten biri kullanılabilir:
Azure VM aracılarıyla Jenkins dağıtımlarını ölçeklendirin. VM aracıları, aracılar için esnek genişleme sağlar ve farklı türlerde sanal makineler kullanabilir. Azure Marketi 'nden farklı bir temel görüntü belirtebilir veya özel bir görüntü kullanabilirsiniz. Jenkins aracılarının ölçeklendirilmesi hakkında ayrıntılı bilgi almak için Jenkins belgelerinde Ölçeklendirmeye Yönelik Mimari Oluşturma sayfasına bakın.
Bir kapsayıcıyı Kubernetesveya Azure Container Instancesile Azure Container Service bir aracı olarak çalıştırın.
Sanal makinelerin ölçeklendirilmesi genellikle kapsayıcılara göre daha maliyetlidir. Ancak, ölçeklendirme amacıyla kapsayıcıları kullanabilmek için derleme sürecinizin kapsayıcılar ile çalışması gerekir.
Ayrıca, işlem hattının sonraki aşamasında diğer yapı aracıları tarafından kullanılabilecek olan derleme yapıtlarını paylaşmak için Azure Depolama’yı kullanın.
Jenkins sunucusunu ölçeklendirme
BIR VM oluşturup Jenkins 'i yüklediğinizde, sanal makinenin boyutunu belirtebilirsiniz. Doğru VM sunucusu boyutunun seçilmesi, beklenen iş yükünün boyutuna bağlıdır. Jenkins topluluğu, gereksinimlerinize en uygun yapılandırmayı belirlemenize yardımcı olmak amacıyla bir seçim kılavuzu hazırlamıştır. Azure, her çeşit gereksinimi karşılayabilecek çok sayıda Linux VM boyutu sunar. Jenkins birincil ölçeklendirme hakkında daha fazla bilgi için bkz. Jenkins topluluğu en iyi uygulamaları, ayrıca Jenkins ölçeklendirme hakkındaki ayrıntıları içerir.
Kullanılabilirlik konusunda dikkat edilmesi gerekenler
Bir Jenkins sunucusu bağlamında kullanılabilirlik, test sonuçları, oluşturduğunuz kitaplıklar, diğer yapıtlar gibi iş akışınızla ilişkili herhangi bir durum bilgisini geri yükleme anlamına gelir. Kritik iş akışı durumu veya yapıtları, Jenkins sunucusunun kullanılamaz hale gelmesi durumunda geri yüklenebilecek şekilde korunmalıdır. Kullanılabilirlik gereksinimlerinizi değerlendirirken yaygın kullanılan iki ölçümü göz önünde bulundurun:
Kurtarma Süresi Hedefi (RTO), Jenkins olmadan idare edebileceğiniz süreyi belirtir.
Kurtarma Noktası Hedefi (RPO), Jenkins bir hizmet kesintisinden etkilenirse ne kadar veri kaybetmeyi göze alabileceğinizi belirtir.
Uygulamada, RTO ve RPO, artıklık ve yedekleme anlamına gelmez. Kullanılabilirlik, Azure 'un bir parçası olan, ancak Jenkins sunucunuzun durumunu korumanızı sağlamak için bir donanım kurtarma sorusu değildir. Microsoft, tek sanal makine örnekleri için hizmet düzeyi sözleşmesi (SLA) sunar. Bu SLA çalışma süresi gereksinimlerinizi karşılamıyorsa, olağanüstü durum kurtarma planına sahip olduğunuzdan emin olun veya çok kullanıcılı bir Jenkins sunucu dağıtımı (Bu belgede kapsanmayan) kullanmayı deneyin.
Dağıtımın 7. adımındaki olağanüstü durum kurtarma betiklerini kullanarak Jenkins sunucusunun durumunu depolayacak, yönetilen diskler içeren bir Azure Depolama hesabı oluşturmak isteyebilirsiniz. Bir arıza yaşanırsa Jenkins bu ayrı depolama hesabında depolanan duruma geri yüklenebilir.
Güvenlik konuları
Temel bir Jenkins sunucusu, temel durumunda güvenli olmadığından güvenliği sağlama almak için aşağıdaki yaklaşımları kullanın.
Jenkins sunucusunda oturum açmak için güvenli bir yol ayarlayın. Bu mimari HTTP kullanır ve genel bir IP adresine sahiptir, ancak varsayılan olarak HTTP güvenli değildir. Güvenli oturum açılması amacıyla Nginx sunucusunda HTTPS ayarlamayı düşünebilirsiniz.
Not
Sunucunuza SSL eklerken, Jenkins alt ağı için 443 numaralı bağlantı noktasını açmak üzere bir ağ güvenlik grubu kuralı oluşturun. Daha fazla bilgi için bkz. Azure portalıyla bir sanal makineye bağlantı noktaları açma.
Jenkins yapılandırmasının siteler arası istek sahteciliğini önlediğinden emin olun (Jenkins’i Yönet > Genel Güvenliği Yapılandır). Bu seçenek, Microsoft Jenkins sunucusu için varsayılan seçenektir.
Matris Yetkilendirme Stratejisi Eklentisini kullanarak Jenkins panosuna salt okunur erişim yapılandırın.
Hizmet sorumlusuna erişimi, işleri çalıştırmak için gereken en düşük düzeyde kısıtlamak için Azure RBAC kullanın. Bu güvenlik düzeyi, standart dışı bir işten gelen hasar kapsamını sınırlandırmanıza yardımcı olur.
Çoğu zaman Jenkins işleri için Azure Container Service gibi yetkilendirme gerektiren Azure hizmetlerine erişim sağlayan gizli diziler gerekir. Bu gizli dizileri güvenli bir şekilde yönetmek için Key Vault kullanın. Hizmet sorumlusunun kimlik bilgileri, parolalar, belirteçler ve diğer gizli dizileri depolamak için Key Vault’u kullanın.
Azure kaynaklarınızın güvenlik durumunun merkezi bir görünümünü almak için, bulut Için Microsoft Defender'ı kullanın. İçin Defender, olası güvenlik sorunlarını izler ve dağıtımınızın güvenlik durumu hakkında kapsamlı bir resim sunar. Azure aboneliği başına bulut için Defender yapılandırılır. Microsoft Defender for Cloud hızlı başlangıç kılavuzu' nda açıklandığı gibi güvenlik verileri toplamayı etkinleştirin. Veri toplama etkinleştirildiğinde, bulut için Defender bu abonelik altında oluşturulan tüm sanal makineleri otomatik olarak tarar.
Jenkins sunucusunun kendi kullanıcı yönetim sistemi vardır ve Jenkins topluluğu Azure’da bir Jenkins örneğinin güvenliğini sağlamaya yönelik en iyi yöntemleri sunar.
Yönetilebilirlik konusunda dikkat edilmesi gerekenler
Dağıtılmış Azure kaynaklarını düzenlemek için kaynak gruplarını kullanın. Üretim ortamlarını ve geliştirme/test ortamlarını ayrı kaynak gruplarında dağıtın, böylece her bir ortamın kaynaklarını izleyebilir ve kaynak grubuna göre faturalandırma maliyetlerini ayırabilirsiniz. Kaynakları, test dağıtımları için yararlı olan bir küme olarak da silebilirsiniz.
Azure, genel altyapının izlenmesi ve tanılanmasına yönelik çeşitli özellikler sunar. Bu mimaride, CPU kullanımını izlemek için Azure İzleyici dağıtılır. Örneğin, Azure İzleyici aracılığıyla CPU kullanımını izleyebilir ve kullanım yüzde 80'i aşarsa bir bildirim gönderebilirsiniz. (Yüksek CPU kullanımı varsa Jenkins sunucusu VM’sinin ölçeğini artırmanız gerekebilir.) VM bir arıza yaşarsa veya kullanılamaz hale gelirse belirlenmiş bir kullanıcıyı bilgilendirmeniz de mümkündür.
Topluluklar
Aşağıdaki çevrimiçi topluluklar soruları yanıtlayabilir ve başarılı bir dağıtımı yapılandırmanıza yardımcı olabilir:
Jenkins’i yükleme ve yapılandırma
Bir VM oluşturmak ve Jenkins 'i yüklemek için, bu makaledeki yönergeleri izleyin. hızlı başlangıç: Azure CLI kullanarak Jenkins yapılandırma.