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

Azure Active Directory
Blob Depolama
Key Vault
İzleyici
Sanal Makineler

Bu senaryo, Jenkins'i yüklerken ve yapılandırarak dikkate alınması gereken mimariyi ve dikkat edilmesi gerekenleri açıklar.

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 kesinti süresine gerek kalmadan birden çok birincil veya yüksek kullanılabilirlik (HA) içeren daha gelişmiş ölçekleme senaryolarını kapsamıyor. Azure'da CI/CD işlem hattı derleme hakkında adım adım öğretici dahil olmak üzere çeşitli Azure bileşenleri hakkında genel içgö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. Ayrıca, test dağıtımları için yararlı olan kaynakları küme olarak silebilirsiniz.

  • Jenkins sunucusu. Jenkins'i otomasyon sunucusu olarak çalıştırmak için bir sanal makine dağıtılır ve Jenkins Birincil olarak görev gösterir. Jenkins'i yükleme ve yapılandırmabölümünde Jenkins'i yeni bir VM'ye nasıl yükleyebilirsiniz?

    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.

  • Alt ağ. 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ı. İnternet'e gelen ağ trafiğini bir sanal ağın alt ağına 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 depolamayı öğ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 denetimi (Azure RBAC)kullanarak iş akışında her rol yetkilendirmesi için ilke ve izinleri tanımlar. Her hizmet sorumlusu, bir Jenkins işiyle ilişkilidir.

  • Azure Key Vault. Gizli diziler gerektiğinde Azure kaynaklarının sağlanması için kullanılan gizli dizileri ve şifreleme anahtarlarını yönetmek için bu mimarideAzure Key Vault.

  • 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, gerektiğinde iş yüklerini destekleyecek şekilde dinamik olarak ölçeklendirebilir. Esnek derlemeler için, derlemeleri 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şturdukta ve Jenkins'iyükleyerek VM'nin boyutunu belirtmiş oluruz. Doğru VM sunucusu boyutunun seçimi 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 birincilini ölçeklendirme hakkında daha fazla bilgi için Jenkins'i ölçeklendirmeyle ilgili ayrıntıları da içeren Jenkins en iyi yöntemler topluluğuna bakın.

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.

Pratikte, RTO ve RPO yedeklilik ve yedeklemeyi ifade ediyor. Kullanılabilirlik, Azure'ın bir parçası olan donanım kurtarmayla ilgili değildir, jenkins sunucu durumunu korumanızı sağlar. 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 için bir planınız olduğundan emin olun veya çok birincil Jenkins sunucusu dağıtımı kullanmayı göz önünde bulundurabilirsiniz (bu belgede ele değildir).

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ğının 443 bağlantı noktasını açması için 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 değerle kısıtlamak için Azure RBAC kullanın. Bu güvenlik düzeyi, kötü niyetli bir işin zarar kapsamını sınırlamaya 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 Key Vault güvenli bir şekilde yönetmek için bu gizli dizileri 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ına dağıtın; böylece her bir ortamın kaynaklarını izleyebilir ve faturalama maliyetlerini kaynak grubuna göre topabilirsiniz. Ayrıca, test dağıtımları için yararlı olan kaynakları küme olarak 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