Azure’da Jenkins sunucusu çalıştırma

Azure Active Directory
Blob Depolama
Key Vault
İzleyici
Sanal Makineler

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

Azure’da çalışan Jenkins sunucusu

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. Windows Azure depolama , oluşturulan ve diğer Jenkins Derlemeleriyle paylaşılan derleme yapıtlarını depolamak Için Azure Blob Storage ' ın nasıl yapılacağını öğrenin.

  • Azure Active Directory (Azure AD). Azure AD kullanıcıların kimlik doğrulamasını destekleyerek 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:

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 Güvenlik Merkezi’ni kullanarak Azure kaynaklarınızın güvenlik durumuna ilişkin genel bir görünüm elde edin. Güvenlik Merkezi olası güvenlik sorunlarını izler ve dağıtımınızın güvenlik durumunun geniş kapsamlı bir resmini sunar. Güvenlik Merkezi, Azure aboneliğine göre yapılandırılır. Azure Güvenlik Merkezi hızlı başlangıç kılavuzunda açıklandığı şekilde güvenlik verileri toplanmasını etkinleştirin. Veri toplama etkinleştirilirse Güvenlik Merkezi söz konusu abonelik altında oluşturulmuş 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ı, Jenkins sunucu VM 'sini ölçeklendirmek isteyebileceğiniz anlamına gelir.) Ayrıca, VM başarısız olursa veya kullanılamaz hale gelirse, belirlenen kullanıcıya de bildirimde bulunabilir.

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 topluluğunun sunduğu diğer en iyi yöntemler için Jenkins en iyi yöntemleri sayfasını ziyaret edin.

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.

Sonraki adımlar