Azure’da Jenkins sunucusu çalıştırmaRun a Jenkins server on Azure

Bu başvuru mimarisinde, Azure’da güvenliği çoklu oturum açma (SSO) yöntemiyle sağlanan, ölçeklenebilir ve kurumsal düzeyde bir Jenkins sunucusunun nasıl dağıtılacağı ve çalıştırılacağı gösterilmektedir.This reference architecture shows how to deploy and operate a scalable, enterprise-grade Jenkins server on Azure secured with single sign-on (SSO). Mimaride ayrıca Jenkins sunucusunun durumunu izlemek amacıyla Azure İzleyicisi kullanılmaktadır.The architecture also uses Azure Monitor to monitor the state of the Jenkins server. Bu çözümü dağıtın.Deploy this solution.

Azure’da çalışan Jenkins sunucusu

Bu mimari diyagramı içeren Visio dosyasını indirin.Download a Visio file that contains this architecture diagram.

Bu mimaride Azure hizmetleriyle olağanüstü durum kurtarma desteklenir, ancak birden çok ana sunucu veya hiç kapalı kalma süresi olmadan yüksek kullanılabilirlik (HA) içeren daha gelişmiş ölçek genişletme senaryoları kapsam dahilinde değildir.This architecture supports disaster recovery with Azure services but does not cover more advanced scale-out scenarios involving multiple masters or high availability (HA) with no downtime. Azure’da CI/CD işlem hattı oluşturmayı adım adım gösteren bir öğretici dahil olmak üzere çeşitli Azure bileşenleri hakkında genel bilgiler edinmek için Azure’da Jenkins sayfasına göz atın.For general insights about the various Azure components, including a step-by-step tutorial about building out a CI/CD pipeline on Azure, see Jenkins on Azure.

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.The focus of this document is on the core Azure operations needed to support Jenkins, including the use of Azure Storage to maintain build artifacts, the security items needed for SSO, other services that can be integrated, and scalability for the pipeline. Mimari, mevcut bir kaynak denetimi deposu ile çalışacak şekilde tasarlanmıştır.The architecture is designed to work with an existing source control repository. GitHub işlemelerine dayalı Jenkins işleri başlatmak, yaygın bir senaryo örneği olarak verilebilir.For example, a common scenario is to start Jenkins jobs based on GitHub commits.

MimariArchitecture

Mimari aşağıdaki bileşenlerden oluşur:The architecture consists of the following components:

  • Kaynak grubu.Resource group. 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.A resource group is used to group Azure assets so they can be managed by lifetime, owner, and other criteria. 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.Use resource groups to deploy and monitor Azure assets as a group and track billing costs by resource group. Kaynakları bir küme halinde silme imkanınız da olur ve test dağıtımları için bu özellik çok kullanışlıdır.You can also delete resources as a set, which is very useful for test deployments.

  • Jenkins sunucusu.Jenkins server. Jenkins’i bir otomasyon sunucusu olarak çalıştırması ve Jenkins Ana Sunucusu görevini görmesi için bir sanal makine dağıtılır.A virtual machine is deployed to run Jenkins as an automation server and serve as Jenkins Master. Bu başvuru mimarisinde, Azure'da bir Linux (Ubuntu 16.04 LTS) sanal makinesine yüklenen Azure'da Jenkins için çözüm şablonu kullanılır.This reference architecture uses the solution template for Jenkins on Azure, installed on a Linux (Ubuntu 16.04 LTS) virtual machine on Azure. Azure Market’te başka Jenkins teklifleri de bulunmaktadır.Other Jenkins offerings are available in the Azure Marketplace.

    Not

    Jenkins için ters proxy rolü üstlenmesi amacıyla VM’ye Nginx yüklenir.Nginx is installed on the VM to act as a reverse proxy to Jenkins. Nginx, Jenkins sunucusu için SSL’yi etkinleştirecek şekilde yapılandırılabilir.You can configure Nginx to enable SSL for the Jenkins server.

  • Sanal ağ.Virtual network. Sanal ağ, Azure kaynaklarını birbirine bağlar ve mantıksal yalıtım sağlar.A virtual network connects Azure resources to each other and provides logical isolation. Bu mimaride, Jenkins sunucusu bir sanal ağda çalıştırılır.In this architecture, the Jenkins server runs in a virtual network.

  • Alt ağlar.Subnets. 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.The Jenkins server is isolated in a subnet to make it easier to manage and segregate network traffic without impacting performance.

  • NSG'ler.NSGs. İnternet'ten gelen ağ trafiğini bir sanal ağın alt ağıyla kısıtlamak için ağ güvenlik grupları (NSG) kullanın.Use network security groups (NSGs) to restrict network traffic from the Internet to the subnet of a virtual network.

  • Yönetilen diskler.Managed disks. 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).A managed disk is a persistent virtual hard disk (VHD) used for application storage and also to maintain the state of the Jenkins server and provide disaster recovery. Veri diskleri, Azure Depolama'da saklanır.Data disks are stored in Azure Storage. Yüksek performans elde etmek için premium depolama önerilir.For high performance, premium storage is recommended.

  • Azure Blob Depolama.Azure Blob Storage. Windows Azure Depolama eklentisi oluşturulup diğer Jenkins derlemeleri ile paylaşılan derleme yapıtlarını depolamak için Azure Blob Depolama’yı kullanır.The Windows Azure Storage plugin uses Azure Blob Storage to store the build artifacts that are created and shared with other Jenkins builds.

  • Azure Active Directory (Azure AD).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 supports user authentication, allowing you to set up SSO. Azure AD hizmet sorumluları, rol tabanlı erişim denetimini (RBAC) kullanarak iş akışındaki her rol yetkilendirmesi için ilke ve izinleri tanımlar.Azure AD service principals define the policy and permissions for each role authorization in the workflow, using role-based access control (RBAC). Her hizmet sorumlusu, bir Jenkins işiyle ilişkilidir.Each service principal is associated with a Jenkins job.

  • Azure Key Vault.Azure Key Vault. Bu mimaride, gizli diziler gerekli olduğunda Azure kaynakları sağlamak için kullanılan gizli dizilerin ve şifreleme anahtarlarının yönetiminde Key Vault kullanılır.To manage secrets and cryptographic keys used to provision Azure resources when secrets are required, this architecture uses Key Vault. İşlem hattındaki uygulamayla ilişkili gizli dizilerin depolanmasında yardım almak için Jenkins’e yönelik Azure Kimlik Bilgileri eklentisine göz atın.For added help storing secrets associated with the application in the pipeline, see also the Azure Credentials plugin for Jenkins.

  • Azure izleme hizmetleri.Azure monitoring services. Bu hizmet, Jenkins’i barındıran Azure sanal makinesini izler.This service monitors the Azure virtual machine hosting Jenkins. Bu dağıtım, sanal makinenin durumunu ve CPU kullanımını izleyip uyarılar gönderir.This deployment monitors the virtual machine status and CPU utilization and sends alerts.

ÖnerilerRecommendations

Aşağıdaki öneriler çoğu senaryo için geçerlidir.The following recommendations apply for most scenarios. Bu önerileri geçersiz kılan belirli bir gereksiniminiz olmadığı sürece izlemeniz önerilir.Follow these recommendations unless you have a specific requirement that overrides them.

Azure ADAzure AD

Azure aboneliğinize ait Azure AD kiracısı, Jenkins kullanıcıları için SSO'yu etkinleştirmek ve Jenkins işlerinin Azure kaynaklarına erişmesine olanak sağlayan hizmet sorumluları ayarlamak için kullanılır.The Azure AD tenant for your Azure subscription is used to enable SSO for Jenkins users and set up service principals that enable Jenkins jobs to access Azure resources.

SSO kimlik doğrulaması ve yetkilendirmesi, Jenkins sunucusuna yüklenen Azure AD eklentisi tarafından uygulanır.SSO authentication and authorization are implemented by the Azure AD plugin installed on the Jenkins server. SSO sayesinde, Jenkins sunucusunda oturum açarken Azure AD'de bulunan kuruluş kimlik bilgilerinizi kullanarak kimliğinizi doğrulayabilirsiniz.SSO allows you to authenticate using your organization credentials from Azure AD when logging on to the Jenkins server. Azure AD eklentisini yapılandırırken kullanıcının Jenkins sunucusu için yetki verilen erişim düzeyini belirtebilirsiniz.When configuring the Azure AD plugin, you can specify the level of a user’s authorized access to the Jenkins server.

Azure AD yöneticileri, Jenkins işlerinin Azure kaynaklarına erişimini sağlamak için hizmet sorumluları oluşturur.To provide Jenkins jobs with access to Azure resources, an Azure AD administrator creates service principals. Bu sorumlular, uygulamalara (bu durumda, Jenkins işleri) Azure kaynakları için kimliği doğrulanmış, yetkili erişim sağlar.These grant applications—in this case, the Jenkins jobs—authenticated, authorized access to Azure resources.

RBAC, kullanıcılar veya hizmet sorumlularının Azure kaynaklarına erişimini atanan rollerini kullanarak daha ayrıntılı bir biçimde tanımlar ve denetler.RBAC further defines and controls access to Azure resources for users or service principals through their assigned role. Yerleşik ve özel rollerin ikisi de desteklenir.Both built-in and custom roles are supported. Roller ayrıca işlem hattının güvenliğinin sağlanmasına yardımcı olur ve kullanıcılar veya aracılara ait sorumlulukların doğru şekilde atanıp yetkilendirilmesini sağlar.Roles also help secure the pipeline and ensure that a user’s or agent’s responsibilities are assigned and authorized correctly. RBAC, Azure varlıklarına erişimi sınırlamak üzere de ayarlanabilir.In addition, RBAC can be set up to limit access to Azure assets. Örneğin, bir kullanıcı yalnızca belirli bir kaynak grubundaki varlıklar ile çalışabilecek şekilde sınırlandırılabilir.For example, a user can be limited to working with only the assets in a particular resource group.

DepolamaStorage

Diğer derlemeler ve testler ile paylaşılabilen derleme yapıtları depolamak için, Azure Market’ten yükleyebileceğiniz Jenkins Windows Azure Depolama eklentisini kullanın.Use the Jenkins Windows Azure Storage plugin, which is installed from the Azure Marketplace, to store build artifacts that can be shared with other builds and tests. Bu eklentinin Jenkins işleri tarafından kullanılabilmesi için önce bir Azure Depolama hesabının yapılandırılması gerekir.An Azure Storage account must be configured before this plugin can be used by the Jenkins jobs.

Jenkins Azure eklentileriJenkins Azure plugins

Azure'da Jenkins için çözüm şablonu, çeşitli Azure eklentileri yükler.The solution template for Jenkins on Azure installs several Azure plugins. Azure DevOps Ekibi, çözüm şablonunun yanı sıra Azure Market’teki diğer Jenkins teklifleri ve şirket içinde ayarlanmış tüm Jenkins ana sunucuları ile çalışan aşağıdaki eklentileri oluşturur ve saklar:The Azure DevOps Team builds and maintains the solution template and the following plugins, which work with other Jenkins offerings in Azure Marketplace as well as any Jenkins master set up on premises:

Azure kaynaklarıyla çalışan ve sayıları gittikçe artan diğer tüm Azure eklentilerinin de gözden geçirilmesini öneririz.We also recommend reviewing the growing list of all available Azure plugins that work with Azure resources. En güncel listeyi görmek için Jenkins Eklenti Dizini sayfasını ziyaret edip Azure araması yapın.To see all the latest list, visit Jenkins Plugin Index and search for Azure. Örneğin, dağıtıma yönelik olarak aşağıdaki eklentiler sunulmaktadır:For example, the following plugins are available for deployment:

Ölçeklenebilirlik konusunda dikkat edilmesi gerekenlerScalability considerations

Jenkins çok büyük iş yüklerini desteklemek üzere ölçeklendirilebilir.Jenkins can scale to support very large workloads. Elastik derlemeler elde etmek istiyorsanız derlemeleri Jenkins ana sunucusunda çalıştırmayın.For elastic builds, do not run builds on the Jenkins master server. Bunun yerine, derlemeler için ölçeği gerektiği şekilde elastik olarak genişletilip daraltılabilen Jenkins aracılarından yararlanın.Instead, offload build tasks to Jenkins agents, which can be elastically scaled in and out as need. Aracıları ölçeklendirmek için aşağıdaki iki seçenekten biri kullanılabilir:Consider two options for scaling agents:

Sanal makinelerin ölçeklendirilmesi genellikle kapsayıcılara göre daha maliyetlidir.Virtual machines generally cost more to scale than containers. Ancak, ölçeklendirme amacıyla kapsayıcıları kullanabilmek için derleme sürecinizin kapsayıcılar ile çalışması gerekir.To use containers for scaling, however, your build process must run with containers.

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.Also, use Azure Storage to share build artifacts that may be used in the next stage of the pipeline by other build agents.

Jenkins sunucusunu ölçeklendirmeScaling the Jenkins server

Jenkins sunucusu VM’sinin ölçeğini, VM boyutunu değiştirerek artırıp azaltabilirsiniz.You can scale the Jenkins server VM up or down by changing the VM size. Azure’da Jenkins için çözüm şablonu, varsayılan olarak DS2 v2 boyutunu (iki CPU, 7 GB) belirtir.The solution template for Jenkins on Azure specifies the DS2 v2 size (with two CPUs, 7 GB) by default. Bu boyut, küçük ve orta ölçekli ekip iş yüklerini halledebilir.This size handles a small to medium team workload. VM boyutunu değiştirmek için, sunucuyu oluştururken farklı bir seçenek belirleyin.Change the VM size by choosing a different option when building out the server.

Doğru sunucu boyutunun seçilmesi, beklenen iş yükünün boyutuna bağlıdır.Selecting the correct server size depends on the size of the expected workload. Jenkins topluluğu, gereksinimlerinize en uygun yapılandırmayı belirlemenize yardımcı olmak amacıyla bir seçim kılavuzu hazırlamıştır.The Jenkins community maintains a selection guide to help identify the configuration that best meets your requirements. Azure, her çeşit gereksinimi karşılayabilecek çok sayıda Linux VM boyutu sunar.Azure offers many sizes for Linux VMs to meet any requirements. Jenkins ana sunucusunu ölçeklendirme hakkında daha fazla bilgi için bu konuda ayrıntılı bilgiler sunan Jenkins en iyi yöntemlerine bakın.For more information about scaling the Jenkins master, refer to the Jenkins community of best practices, which also includes details about scaling Jenkins master.

Kullanılabilirlik konusunda dikkat edilmesi gerekenlerAvailability considerations

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.Availability in the context of a Jenkins server means being able to recover any state information associated with your workflow, such as test results, libraries you have created, or other artifacts. Kritik iş akışı durumu veya yapıtları, Jenkins sunucusunun kullanılamaz hale gelmesi durumunda geri yüklenebilecek şekilde korunmalıdır.Critical workflow state or artifacts must be maintained to recover the workflow if the Jenkins server goes down. Kullanılabilirlik gereksinimlerinizi değerlendirirken yaygın kullanılan iki ölçümü göz önünde bulundurun:To assess your availability requirements, consider two common metrics:

  • Kurtarma Süresi Hedefi (RTO), Jenkins olmadan idare edebileceğiniz süreyi belirtir.Recovery Time Objective (RTO) specifies how long you can go without Jenkins.

  • Kurtarma Noktası Hedefi (RPO), Jenkins bir hizmet kesintisinden etkilenirse ne kadar veri kaybetmeyi göze alabileceğinizi belirtir.Recovery Point Objective (RPO) indicates how much data you can afford to lose if a disruption in service affects Jenkins.

RTO ve RPO, uygulamada yedeklilik ve yedeklemeye işaret eder.In practice, RTO and RPO imply redundancy and backup. Kullanılabilirlik, donanımın çalışır hale getirilmesiyle ilgili değildir. Azure, bu kısımla ilgilenir. Kullanılabilirlikte önemli olan Jenkins sunucunuzun durumunun sürdürülmesidir.Availability is not a question of hardware recovery—that is part of Azure—but rather ensuring you maintain the state of your Jenkins server. Microsoft, tek sanal makine örnekleri için hizmet düzeyi sözleşmesi (SLA) sunar.Microsoft offers a service level agreement (SLA) for single VM instances. Bu SLA, çalışma süresi gereksinimleriniz için uygun değilse bir olağanüstü durum kurtarma planınız olduğundan emin olun ya da birden çok Jenkins ana sunuculu bir dağıtım kullanmayı (bu belgede ele alınmamaktadır) düşünün.If this SLA doesn't meet your uptime requirements, make sure you have a plan for disaster recovery, or consider using a multi-master Jenkins server deployment (not covered in this document).

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.Consider using the disaster recovery scripts in step 7 of the deployment to create an Azure Storage account with managed disks to store the Jenkins server state. Bir arıza yaşanırsa Jenkins bu ayrı depolama hesabında depolanan duruma geri yüklenebilir.If Jenkins goes down, it can be restored to the state stored in this separate storage account.

Güvenlikle ilgili dikkat edilmesi gerekenlerSecurity considerations

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.Use the following approaches to help lock down security on a basic Jenkins server, since in its basic state, it is not secure.

  • Jenkins sunucusunda oturum açmak için güvenli bir yol ayarlayın.Set up a secure way to log into the Jenkins server. Bu mimari HTTP kullanır ve genel bir IP adresine sahiptir, ancak varsayılan olarak HTTP güvenli değildir.This architecture uses HTTP and has a public IP, but HTTP is not secure by default. Güvenli oturum açılması amacıyla Nginx sunucusunda HTTPS ayarlamayı düşünebilirsiniz.Consider setting up HTTPS on the Nginx server being used for a secure logon.

    Not

    Sunucunuza SSL eklerken Jenkins alt ağı için 443 numaralı bağlantı noktasını açan bir NSG kuralı oluşturun.When adding SSL to your server, create an NSG rule for the Jenkins subnet to open port 443. Daha fazla bilgi için bkz. Azure portalıyla bir sanal makineye bağlantı noktaları açma.For more information, see How to open ports to a virtual machine with the Azure portal.

  • 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).Ensure that the Jenkins configuration prevents cross site request forgery (Manage Jenkins > Configure Global Security). Bu durum, Microsoft Jenkins Sunucusu için varsayılan durumdur.This is the default for Microsoft Jenkins Server.

  • Matris Yetkilendirme Stratejisi Eklentisini kullanarak Jenkins panosuna salt okunur erişim yapılandırın.Configure read-only access to the Jenkins dashboard by using the Matrix Authorization Strategy Plugin.

  • Azure Kimlik Bilgileri eklentisini yükleyerek Azure varlıkları, işlem hattındaki aracılar ve üçüncü taraf bileşenler için gizli dizileri idare etmek amacıyla Key Vault’u kullanın.Install the Azure Credentials plugin to use Key Vault to handle secrets for the Azure assets, the agents in the pipeline, and third-party components.

  • Hizmet sorumlusunun erişimini, işleri yürütmek için gerekli olan en az düzeyle sınırlamak için RBAC’yi kullanın.Use RBAC to restrict the access of the service principal to the minimum required to run the jobs. Bu, bir dolandırıcılık durumunda oluşabilecek zararın kapsamının da sınırlanmasına yardımcı olur.This helps limit the scope of damage from a rogue job.

Çoğu zaman Jenkins işleri için Azure Container Service gibi yetkilendirme gerektiren Azure hizmetlerine erişim sağlayan gizli diziler gerekir.Jenkins jobs often require secrets to access Azure services that require authorization, such as Azure Container Service. Bu gizli dizileri güvenli bir şekilde yönetmek için Key Vault’u ve Azure Kimlik Bilgileri eklentisini kullanın.Use Key Vault along with the Azure Credential plugin to manage these secrets securely. Hizmet sorumlusunun kimlik bilgileri, parolalar, belirteçler ve diğer gizli dizileri depolamak için Key Vault’u kullanın.Use Key Vault to store service principal credentials, passwords, tokens, and other secrets.

Azure Güvenlik Merkezi’ni kullanarak Azure kaynaklarınızın güvenlik durumuna ilişkin genel bir görünüm elde edin.To get a central view of the security state of your Azure resources, use Azure Security Center. Güvenlik Merkezi olası güvenlik sorunlarını izler ve dağıtımınızın güvenlik durumunun geniş kapsamlı bir resmini sunar.Security Center monitors potential security issues and provides a comprehensive picture of the security health of your deployment. Güvenlik Merkezi, Azure aboneliğine göre yapılandırılır.Security Center is configured per Azure subscription. Azure Güvenlik Merkezi hızlı başlangıç kılavuzunda açıklandığı şekilde güvenlik verileri toplanmasını etkinleştirin.Enable security data collection as described in the Azure Security Center quick start guide. Veri toplama etkinleştirilirse Güvenlik Merkezi söz konusu abonelik altında oluşturulmuş tüm sanal makineleri otomatik olarak tarar.When data collection is enabled, Security Center automatically scans any virtual machines created under that subscription.

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.The Jenkins server has its own user management system, and the Jenkins community provides best practices for securing a Jenkins instance on Azure. Azure’da Jenkins için çözüm şablonu, bu en iyi yöntemleri uygular.The solution template for Jenkins on Azure implements these best practices.

Yönetilebilirlik konusunda dikkat edilmesi gerekenlerManageability considerations

Dağıtılmış Azure kaynaklarını düzenlemek için kaynak gruplarını kullanın.Use resource groups to organize the Azure resources that are deployed. Ü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 fatura maliyetlerini kaynak grubu bazında toplayabilirsiniz.Deploy production environments and development/test environments in separate resource groups, so that you can monitor each environment’s resources and roll up billing costs by resource group. Kaynakları bir küme halinde silme imkanınız da olur ve test dağıtımları için bu özellik çok kullanışlıdır.You can also delete resources as a set, which is very useful for test deployments.

Azure, genel altyapının izlenmesi ve tanılanmasına yönelik çeşitli özellikler sunar.Azure provides several features for monitoring and diagnostics of the overall infrastructure. Bu mimaride, CPU kullanımını izlemek için Azure İzleyici dağıtılır.To monitor CPU usage, this architecture deploys Azure Monitor. Ö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.For example, you can use Azure Monitor to monitor CPU utilization, and send a notification if CPU usage exceeds 80 percent. (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.(High CPU usage indicates that you might want to scale up the Jenkins server VM.) You can also notify a designated user if the VM fails or becomes unavailable.

TopluluklarCommunities

Topluluklar, sorularınıza yanıt verebilir ve başarılı bir dağıtım ayarlamanıza yardımcı olabilir.Communities can answer questions and help you set up a successful deployment. Aşağıdaki topluluklara bir göz atın:Consider the following:

Jenkins topluluğunun sunduğu diğer en iyi yöntemler için Jenkins en iyi yöntemleri sayfasını ziyaret edin.For more best practices from the Jenkins community, visit Jenkins best practices.

Çözümü dağıtmaDeploy the solution

Bu mimariyi dağıtmak için aşağıdaki adımları izleyerek önce Azure'da Jenkins için çözüm şablonunu yükleyin ve sonraki adımlarda da izleme ve olağanüstü durum kurtarma işlevlerini ayarlayan betikleri yükleyin.To deploy this architecture, follow the steps below to install the solution template for Jenkins on Azure, then install the scripts that set up monitoring and disaster recovery in the steps below.

Ön koşullarPrerequisites

  • Bu başvuru mimarisi için Azure aboneliği gereklidir.This reference architecture requires an Azure subscription.
  • Bir Azure hizmet sorumlusu oluşturmak için, dağıtılan Jenkins sunucusuyla ilişkili Azure AD kiracısına ilişkin yönetici haklarınız olmalıdır.To create an Azure service principal, you must have admin rights to the Azure AD tenant that is associated with the deployed Jenkins server.
  • Bu yönergelerde, Jenkins yöneticisinin aynı zamanda en az Katkıda Bulunan ayrıcalıklarına sahip bir Azure kullanıcısı olduğu varsayılmaktadır.These instructions assume that the Jenkins administrator is also an Azure user with at least Contributor privileges.

1. Adım: Jenkins sunucusunu dağıtmaStep 1: Deploy the Jenkins server

  1. Web tarayıcınızda Jenkins için Azure Market görüntüsü adresine gidin ve sayfanın sol tarafındaki ŞİMDİ EDİN bağlantısını seçin.Open the Azure Marketplace image for Jenkins in your web browser and select GET IT NOW from the left side of the page.

  2. Fiyatlandırma ayrıntılarını gözden geçirin ve Devam’ı seçin, ardından Azure portalında Jenkins sunucusunu yapılandırmak için Oluştur’u seçin.Review the pricing details and select Continue, then select Create to configure the Jenkins server in the Azure portal.

Ayrıntılı yönergeler için bkz. Azure portalından Azure Linux VM'de bir Jenkins sunucusu oluşturma.For detailed instructions, see Create a Jenkins server on an Azure Linux VM from the Azure portal. Bu başvuru mimarisi için sunucunun yönetici oturum açma bilgileri ile çalışır duruma getirilmesi yeterlidir.For this reference architecture, it is sufficient to get the server up and running with the admin logon. Daha sonra başka hizmetleri kullanmasını sağlayabilirsiniz.Then you can provision it to use various other services.

2. Adım: SSO’yu ayarlamaStep 2: Set up SSO

Bu adım Jenkins yöneticisi tarafından çalıştırılır. Yöneticinin ayrıca aboneliğin Azure AD dizininde bir kullanıcı hesabı bulunmalı ve kendisine Katkıda Bulunan rolü atanmış olmalıdır.The step is run by the Jenkins administrator, who must also have a user account in the subscription’s Azure AD directory and must be assigned the Contributor role.

Jenkins sunucusunda Jenkins Güncelleştirme Merkezi’nden Azure AD Eklentisini kullanın ve SSO'yu ayarlama yönergelerini uygulayın.Use the Azure AD Plugin from the Jenkins Update Center in the Jenkins server and follow the instructions to set up SSO.

3. Adım: Jenkins sunucusuna Azure VM Aracısı eklentisini sağlamaStep 3: Provision Jenkins server with Azure VM Agent plugin

Bu adım Jenkins yöneticisi tarafından çalıştırılır ve zaten yüklü olan Azure VM Aracısı eklentisi ayarlanır.The step is run by the Jenkins administrator to set up the Azure VM Agent plugin, which is already installed.

Eklentiyi yapılandırmak için bu adımları izleyin.Follow these steps to configure the plugin. Eklenti için hizmet sorumlusu ayarlanmasına yönelik bir öğretici görmek isterseniz bkz. Talebi karşılamak üzere Azure VM aracılarıyla Jenkins dağıtımlarınızı ölçeklendirme.For a tutorial about setting up service principals for the plugin, see Scale your Jenkins deployments to meet demand with Azure VM agents.

4. Adım: Jenkins sunucusuna Azure Depolama sağlamaStep 4: Provision Jenkins server with Azure Storage

Bu adım Jenkins yöneticisi tarafından çalıştırılır ve zaten yüklü olan Windows Azure Depolama Eklentisi ayarlanır.The step is run by the Jenkins administrator, who sets up the Windows Azure Storage Plugin, which is already installed.

Eklentiyi yapılandırmak için bu adımları izleyin.Follow these steps to configure the plugin.

5. Adım: Jenkins sunucusuna Azure Kimlik Bilgileri eklentisini sağlamaStep 5: Provision Jenkins server with Azure Credential plugin

Bu adım Jenkins yöneticisi tarafından çalıştırılır ve zaten yüklü olan Azure Kimlik Bilgileri eklentisi ayarlanır.The step is run by the Jenkins administrator to set up the Azure Credential plugin, which is already installed.

Eklentiyi yapılandırmak için bu adımları izleyin.Follow these steps to configure the plugin.

6. Adım: Jenkins sunucusuna Azure İzleyici Hizmeti ile izleme hizmeti sağlamaStep 6: Provision Jenkins server for monitoring by the Azure Monitor Service

Jenkins sunucunuzun izlenmesini ayarlamak için Azure İzleyici’de Azure hizmetleri için ölçüm uyarıları oluşturma makalesindeki yönergeleri uygulayın.To set up monitoring for your Jenkins server, follow the instructions in Create metric alerts in Azure Monitor for Azure services.

7. Adım: Jenkins sunucusuna olağanüstü durum kurtarma için Yönetilen Diskler sağlamaStep 7: Provision Jenkins server with Managed Disks for disaster recovery

Microsoft Jenkins ürün grubu, Jenkins durumunu kaydetmek için kullanılan bir yönetilen disk oluşturan olağanüstü durum kurtarma betikleri oluşturdu.The Microsoft Jenkins product group has created disaster recovery scripts that build a managed disk used to save the Jenkins state. Sunucu çökerse en son durumuna geri yüklenebilir.If the server goes down, it can be restored to its latest state.

Olağanüstü durum kurtarma betiklerini GitHub’dan indirip çalıştırın.Download and run the disaster recovery scripts from GitHub.

Aynı teknolojilerden bazılarını kullanan belirli çözümlerin gösterildiği aşağıdaki Azure örnek senaryosunu gözden geçirmek isteyebilirsiniz:You may wish to review the following Azure example scenario that demonstrates specific solutions using some of the same technologies: