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
Birçok Azure hizmeti Jenkins eklentilerine sahip olsa da, bu eklentilerin çoğu 29 Şubat 2024 itibarıyla destek sona erdi. Azure CLI, Jenkins'i Azure hizmetleriyle tümleştirmenin şu anda önerilen yoludur. Daha fazla bilgi için Azureiçin Jenkins eklentileri
Bu öğretici, Jenkins'te sürekli tümleştirme (CI) ve sürekli dağıtım (CD) ayarlayarak GitHub'dan Azure Kubernetes Service (AKS ) kümesine örnek bir uygulama dağıtır.
Bu öğreticide şu görevleri tamamlayacaksınız:
- Aks kümesine örnek bir Azure vote uygulaması dağıtın.
- Temel bir Jenkins projesi oluşturun.
- Jenkins'in ACR ile etkileşim kuracak kimlik bilgilerini ayarlayın.
- Otomatik derlemeler için bir Jenkins derleme işi ve GitHub web kancası oluşturun.
- GITHub kod işlemelerini temel alarak AKS'de bir uygulamayı güncelleştirmek için CI/CD işlem hattını test edin.
Önkoşullar
Bu öğreticiyi tamamlamak için şu öğelere ihtiyacınız vardır:
Kubernetes, Git, CI/CD ve kapsayıcı görüntüleri hakkında temel bilgiler
AKS kümesi ve
kubectlAKS kümesi kimlik bilgileriyle yapılandırılmış.Azure Container Registry (ACR) kayıt defteri, ACR oturum açma sunucusu adı ve ACR kayıt defteriyle kimlik doğrulaması için yapılandırılmış AKS kümesi.
Azure Sanal Makinesine Dağıtılan Jenkins Denetleyicisi .
Azure CLI sürüm 2.0.46 veya üzeri yüklü ve yapılandırılmış. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI'yı yükleme.Geliştirme sisteminizde docker yüklü
Geliştirme sisteminizde yüklü bir GitHub hesabı, GitHub kişisel erişim belirteci ve Git istemcisi
Kendi Jenkins örneğinizi, Jenkins'i dağıtmak için bu örnek betikli yöntem yerine sağlarsanız, Jenkins örneğinizde Docker yüklü ve yapılandırılmış olması ve kubectl gerektirir.
Uygulamanızı hazırlama
Bu makalede, geçici veri depolama için bir web arabirimi ve Redis içeren örnek bir Azure vote uygulaması kullanacaksınız.
Jenkins ve AKS'yi otomatik dağıtımlar için tümleştirmeden önce Azure vote uygulamasını el ile hazırlayın ve AKS kümenize dağıtın. Bu el ile dağıtım, uygulamanın çalışmasını görmenizi sağlar.
Uyarı
Örnek Azure vote uygulaması, Linux düğümünde çalışacak şekilde zamanlanmış bir Linux podunu kullanır. Bu makalede özetlenen akış, Windows Server düğümünde planlanan bir Windows Server podu için de geçerlidir.
Örnek uygulama için aşağıdaki GitHub deposunu oluşturun - https://github.com/Azure-Samples/azure-voting-app-redis. Depoyu kendi GitHub hesabınıza forklamak için sağ üst köşedeki Fork düğmesini seçin.
Geliştirme sisteminize fork'unu kopyalayın. Bu depoyu klonlarken forkunuzun URL'sini kullandığınızdan emin olun:
git clone https://github.com/<your-github-account>/azure-voting-app-redis.git
Kopyalanan çatalınızın dizinine geçin:
cd azure-voting-app-redis
Örnek uygulama için gereken kapsayıcı görüntülerini oluşturmak için ile docker-compose dosyasını kullanın:
docker-compose up -d
Gerekli temel görüntüler çekilir ve uygulama kapsayıcıları oluşturulur. Ardından docker images komutunu kullanarak oluşturulan görüntüyü görebilirsiniz. Üç resim indirildi veya oluşturuldu.
azure-vote-front görüntüsü uygulamayı içerir ve nginx-flask görüntüsünü temel olarak kullanır.
redis görüntüsü, Redis örneğini başlatmak için kullanılır.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
azure-vote-front latest 9cc914e25834 40 seconds ago 694MB
redis latest a1b99da73d05 7 days ago 106MB
tiangolo/uwsgi-nginx-flask flask 788ca94b2313 9 months ago 694MB
Azure kapsayıcı kayıt defterinizde oturum açın.
az acr login -n <acrLoginServer>
<acrLoginServer> değerini ACR oturum açma sunucunuzla değiştirin.
Görüntüyü ACR oturum açma sunucusu adı ve sürüm numarası ile etiketlemek için v1 komutunu kullanın. Önceki adımda elde edilen kendi <acrLoginServer> adınızı kullanın:
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1
Son olarak azure-vote-front görüntüsünü ACR kayıt defterinize gönderin. Yeniden, <acrLoginServer> öğesini kendi ACR kayıt defterinizin giriş sunucusu adıyla değiştirin, örneğin myacrregistry.azurecr.io:
docker push <acrLoginServer>/azure-vote-front:v1
Örnek uygulamayı AKS'ye dağıtma
Örnek uygulamayı AKS kümenize dağıtmak için Azure vote deposu deposunun kökündeki Kubernetes bildirim dosyasını kullanabilirsiniz.
azure-vote-all-in-one-redis.yaml Bildirim dosyasını gibi vibir düzenleyiciyle açın. "Yerine microsoft ACR oturum açma sunucunuzun adını yazın." Bu değer bildirim dosyasının 60 . satırında bulunur:
containers:
- name: azure-vote-front
image: azuredocs/azure-vote-front
Ardından kubectl apply komutunu kullanarak uygulamayı AKS kümenize dağıtın:
kubectl apply -f azure-vote-all-in-one-redis.yaml
Uygulamayı İnternet'te kullanıma açmak için bir Kubernetes yük dengeleyici hizmeti oluşturulur. Bu işlem birkaç dakika sürebilir. Yük dengeleyici dağıtımının ilerleme durumunu izlemek için kubectl get service komutunu --watch argümanıyla kullanın.
$ kubectl get service azure-vote-front --watch
EXTERNAL-IP adresi bekliyor durumundan bir IP adresine dönüştüğünde, kubectl izleme sürecini durdurmak için Control + C kullanarak durdurun.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Uygulamayı uygulamada görmek için, hizmetinizin dış IP adresine bir web tarayıcısı açın. Aşağıdaki örnekte gösterildiği gibi Azure vote uygulaması görüntülenir:
Jenkins Denetleyicisini Yapılandırma
Jenkins Denetleyicisi'nden AKS dağıtımlarını etkinleştirmek için aşağıdaki değişiklikleri uygulayın:
Gelen portu 80 açın.
az vm open-port \
--resource-group <Resource_Group_name> \
--name <Jenkins_Controller_VM> \
--port 80 --priority 1020
<Resource_Group_name> ve <Jenkins_Controller_VM> değerlerini uygun değerlerle değiştirin.
Jenkins Denetleyicisine SSH
ssh azureuser@<PublicIPAddress>
<PublicIPAddress> değerini Jenkins Denetleyicisi'nin IP adresiyle değiştirin.
AzCLI'yi Yükleme ve Oturum Açma
curl -L https://aka.ms/InstallAzureCli | bash
az login
Uyarı
AzCLI'yi el ile yüklemek için bu yönergeleri izleyin.
Docker'ı yükleme
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y;
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -;
sudo apt-key fingerprint 0EBFCD88;
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable";
sudo apt-get update;
sudo apt-get install docker-ce -y;
Kubectl'ı yükleme ve AKS'ye bağlanma
sudo az aks install-cli
sudo az aks get-credentials --resource-group <Resource_Group> --name <AKS_Name>
<Resource_Group> ve <AKS_Name> değerlerini uygun değerlerle değiştirin.
Erişimi yapılandırma
sudo usermod -aG docker jenkins;
sudo usermod -aG docker azureuser;
sudo touch /var/lib/jenkins/jenkins.install.InstallUtil.lastExecVersion;
sudo service jenkins restart;
sudo cp ~/.kube/config /var/lib/jenkins/.kube/
sudo chmod 777 /var/lib/jenkins/
sudo chmod 777 /var/lib/jenkins/config
Jenkins ortam değişkeni oluşturma
Jenkins ortam değişkeni, ACR oturum açma sunucusu adını tutmak için kullanılır. Jenkins derleme işi sırasında bu değişkene başvurulur. Bu ortam değişkenini oluşturmak için aşağıdaki adımları tamamlayın:
Jenkins portalının sol tarafında Jenkins >Yönet'iseçin
Genel Özellikler'in altında Ortam değişkenleri'ni seçin. ACR oturum açma sunucunuzun adını
ACR_LOGINSERVERve değerini içeren bir değişken ekleyin.
Tamamlandığında, sayfanın alt kısmındaki Kaydet'i seçin.
ACR için Jenkins kimlik bilgisi oluşturma
CI/CD işlemi sırasında Jenkins, uygulama güncelleştirmelerini temel alan yeni kapsayıcı görüntüleri oluşturur ve ardından bu görüntüleri ACR kayıt defterine göndermesi gerekir.
Jenkins'in güncelleştirilmiş kapsayıcı görüntülerini ACR'ye göndermesine izin vermek için ACR kimlik bilgilerini belirtmeniz gerekir.
Rollerin ve izinlerin ayrılması için Jenkins için ACR kayıt defterinizde Katkıda Bulunan izinlerine sahip bir hizmet sorumlusu yapılandırın.
Jenkins'in ACR kullanması için hizmet sorumlusu oluşturma
İlk olarak az ad sp create-for-rbac komutunu kullanarak bir hizmet sorumlusu oluşturun:
az ad sp create-for-rbac
Bu komut aşağıdaki örneğe benzer bir çıktı oluşturur:
{
"appId": "<app-ID>",
"displayName": "azure-cli-2018-09-28-22-19-34",
"name": "http://azure-cli-2018-09-28-22-19-34",
"password": "<password>",
"tenant": "<tenant-ID>"
}
appId ve parolayı not edin. Bu değerler Jenkins'te kimlik bilgisi kaynağını yapılandırmak için aşağıdaki adımlarda kullanılır.
az acr show komutunu kullanarak ACR kayıt defterinizin kaynak kimliğini alın ve bunu değişken olarak depolayın.
ACR_ID=$(az acr show --resource-group <Resource_Group> --name <acrLoginServer> --query "id" --output tsv)
<Resource_Group> ve <acrLoginServer> değerlerini uygun değerlerle değiştirin.
ACR kayıt defterine, hizmet sorumlusuna Katkıda Bulunan haklarını atamak için bir rol ataması oluşturun.
az role assignment create --assignee <appID> --role Contributor --scope $ACR_ID
<appId>'yi, hizmet sorumlusunu oluşturmak için kullanılan önceki komutun çıktısında sağlanan değerle değiştirin.
Jenkins'te ACR hizmet sorumlusu için kimlik bilgisi kaynağı oluşturma
Azure'da oluşturulan rol atamasıyla, şimdi ACR kimlik bilgilerinizi bir Jenkins kimlik bilgisi nesnesinde depolayın. Bu kimlik bilgilerine Jenkins derleme işi sırasında başvurulur.
Jenkins portalının sol tarafında Yönet Jenkins>Kimlik Bilgilerini Yönet>Jenkins Deposu>Genel kimlik bilgileri (kısıtlamasız)>Kimlik Bilgileri Ekle'yi seçin
Kimlik bilgisi türünün Parolalı Kullanıcı Adı olduğundan emin olun ve aşağıdaki öğeleri girin:
- Kullanıcı adı - ACR kayıt defterinizle kimlik doğrulaması için oluşturulan hizmet sorumlusunun appId değeri.
- Parola - ACR kayıt defterinizle kimlik doğrulaması için oluşturulan hizmet sorumlusunun parolası .
- Kimlik - acr-credentials gibi kimlik tanımlayıcısı
Tamamlandığında, kimlik bilgileri formu aşağıdaki örneğe benzer:
Tamam'ı seçin ve Jenkins portalına dönün.
Jenkins projesi oluşturma
Jenkins portalınızın giriş sayfasından sol taraftaki Yeni öğe'yi seçin:
azure-vote'i iş adı olarak girin. Serbest stil proje'yi ve ardından Tamam'ı seçin
Genel bölümünün altında GitHub projesi'ni seçin ve çatallanmış depo URL'nizi girin; örneğinhttps://github.com/<, your-github-account>/azure-voting-app-redis
Kaynak kodu yönetimi bölümünde Git'i seçin, çatallanmış depo
.gitURL'nizi girin; örneğinhttps://github.com/<, your-github-account>/azure-voting-app-redis.gitDerleme Tetikleyicileri bölümünde GITscm yoklaması için GitHub kanca tetikleyicisi'ni seçin
Derleme Ortamı'nın altında Gizli metinler veya dosyaları kullan'ı seçin
Bağlamalar'ın altında >yi seçin (ayrılmış)
ACR_IDveACR_PASSWORDiçin girin
Execute shell türünde bir Derleme Adımı eklemeyi seçin ve aşağıdaki metni kullanın. Bu betik yeni bir kapsayıcı görüntüsü oluşturur ve ACR kayıt defterinize gönderir.
# Build new image and push to ACR. WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}" docker build -t $WEB_IMAGE_NAME ./azure-vote docker login ${ACR_LOGINSERVER} -u ${ACR_ID} -p ${ACR_PASSWORD} docker push $WEB_IMAGE_NAMEExecute shell türünde başka bir Derleme Adımı ekleyin ve aşağıdaki metni kullanın. Bu betik, ACR'deki yeni kapsayıcı imajıyla AKS'deki uygulama dağıtımını günceller.
# Update kubernetes deployment with new image. WEB_IMAGE_NAME="${ACR_LOGINSERVER}/azure-vote-front:kube${BUILD_NUMBER}" kubectl set image deployment/azure-vote-front azure-vote-front=$WEB_IMAGE_NAMETamamlandıktan sonra Kaydet'e tıklayın.
Jenkins derlemesini test etme
GitHub işlemelerini temel alarak işi otomatikleştirmeden önce Jenkins derlemesini el ile test edin.
Bu derleme, işin doğru yapılandırıldığını doğrular. Doğru Kubernetes kimlik doğrulama dosyasının yerinde olduğunu ve ACR kimlik doğrulamasının çalıştığını onaylar.
Projenin sol tarafındaki menüde Şimdi Derle'yi seçin.
Docker görüntü katmanları Jenkins sunucusuna çekilirken ilk derleme daha uzun sürer.
Yapılar aşağıdaki görevleri yerine getirir:
- GitHub deposunu klonlar
- Yeni bir kapsayıcı imajı oluşturur
- Kapsayıcı görüntüsünü ACR kayıt defterine gönderir
- AKS dağıtımı tarafından kullanılan görüntüyü güncelleştirir
Uygulama kodunda hiçbir değişiklik yapılmadığından web kullanıcı arabirimi değiştirilmez.
Derleme işi tamamlandıktan sonra derleme geçmişi'nin altında derleme #1'i seçin. Konsol Çıkışı'nı seçin ve derleme işleminden çıkışı görüntüleyin. Son satır başarılı bir derlemeyi göstermelidir.
GitHub web kancası oluşturma
Başarıyla el ile derleme tamamlandıktan sonra GitHub'ı Jenkins derlemesiyle tümleştirin. Kod GitHub'a her gönderildiğinde Jenkins derleme işini çalıştırmak için bir web kancası kullanın.
GitHub web kancasını oluşturmak için aşağıdaki adımları tamamlayın:
Web tarayıcınızda forkladığınız GitHub reposuna gidin.
Ayarlar'ı ve ardından sol taraftaki Web kancaları'nı seçin.
Web kancası ekle'yi seçin. Yük URL'si için girin
http://<publicIp:8080>/github-webhook/; burada<publicIp>Jenkins sunucusunun IP adresidir. Sondaki/öğesini eklediğinizden emin olun. İçerik türü ve gönderme olaylarında tetikleme için diğer varsayılan değerleri bırakın.Web kancası ekle'yi seçin.
Ci/CD işlem hattının tamamını test edin
Artık CI/CD işlem hattının tamamını test edebilirsiniz. GitHub'a bir kod işleme gönderdiğinizde aşağıdaki adımlar gerçekleşir:
- GitHub web kancası Jenkins'e bildirimde bulunur.
- Jenkins derleme işini başlatır ve GitHub'dan en son kod işlemesini çeker.
- Güncelleştirilmiş kod kullanılarak bir Docker derlemesi başlatılır ve yeni kapsayıcı görüntüsü en son derleme numarasıyla etiketlenmiştir.
- Bu yeni kapsayıcı görüntüsü Azure Container Registry'ye gönderilir.
- Azure Kubernetes Service üzerinde çalışan uygulamanız, Azure Container Registry'den en son görüntüyle güncelleştirilir.
Geliştirme makinenizde kopyalanan uygulamayı bir kod düzenleyicisiyle açın. /azure-vote/azure-vote dizini altında config_file.cfg adlı dosyayı açın. Aşağıdaki örnekte gösterildiği gibi, bu dosyadaki oy değerlerini kedi ve köpek dışında bir değerle güncelleştirin:
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
Güncellediğinizde dosyayı kaydedin, değişiklikleri gönderin ve bunları GitHub deposu fork'unuza yükleyin. GitHub web kancası Jenkins'te yeni bir derleme işi tetikler. Jenkins web panosunda derleme işlemini izleyin. En son kodu çekmek, güncelleştirilmiş görüntüyü oluşturup göndermek ve güncelleştirilmiş uygulamayı AKS'de dağıtmak birkaç saniye sürer.
Derleme tamamlandıktan sonra örnek Azure vote uygulamasının web tarayıcınızı yenileyin. Değişiklikleriniz aşağıdaki örnekte gösterildiği gibi görüntülenir: