öğretici: jenkins kullanarak GitHub Azure kubernetes hizmetine dağıtma
Önemli
Birçok Azure hizmetine Jenkins eklentileri vardır. Bu eklentilerin bazıları 29 Şubat 2024 itibariyle destek dışı olacaktır. Azure CLı, Jenkins 'i Azure hizmetleriyle tümleştirmeye yönelik Şu anda önerilen yoldur. Daha fazla bilgi için Azure Için Jenkins eklentilerimakalesine bakın.
bu öğretici, jenkins 'te sürekli tümleştirme (cı) ve sürekli dağıtım (CD) ayarlayarak GitHub Azure kubernetes Service (aks) kümesine örnek bir uygulama dağıtır.
Bu öğreticide, şu görevleri tamamlayacaksınız:
- Bir AKS kümesine örnek bir Azure oy uygulaması dağıtın.
- Temel bir Jenkins projesi oluşturun.
- Jenkins için kimlik bilgilerini, ACR ile etkileşime geçmek üzere ayarlayın.
- otomatik derlemeler için jenkins derleme işi oluşturun ve web kancasını GitHub.
- GitHub kod yürütmelerine göre aks 'teki bir uygulamayı güncelleştirmek için cı/CD ardışık düzenini Test edin.
Önkoşullar
Bu öğreticiyi tamamlayabilmeniz için şu öğeler gereklidir:
Kubernetes, git, CI/CD ve kapsayıcı görüntülerinin temel olarak anlaşılmasına
Aks kümesi ve aks kümesi kimlik bilgileriyleyapılandırılır.
ACR kayıt defteriyle kimlik doğrulamasıyapacak şekilde yapılandırılmış bir Azure Container Registry (ACR) kayıt defteri, ACR oturum açma sunucusu adı ve aks kümesi.
Bir Azure sanal makinesine dağıtılan bir Jenkins denetleyicisi .
Azure CLı sürüm 2.0.46 veya üzeri yüklendi ve yapılandırıldı. Sürümü bulmak için
az --versionkomutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.Geliştirme sisteminizde yüklü Docker
geliştirme sisteminizde yüklü bir GitHub hesabı, GitHub kişisel erişim belirtecive Git istemcisi
Jenkins 'i dağıtmak için bu örnek komut dosyası yolu yerine kendi Jenkins örneğinizi sağlarsanız, Jenkins Örneğinizde Docker yüklü ve yapılandırılmış ve kubectlgerekir.
Uygulamanızı hazırlama
Bu makalede, bir Web arabirimi ve geçici veri depolama için Reddir içeren örnek bir Azure oyu uygulaması kullanırsınız.
Otomatik dağıtımlar için Jenkins ve AKS 'i tümleştirmenizden önce, Azure oy uygulamasını el ile kendi AKS kümenize hazırlayın ve dağıtın. Bu el ile dağıtım, uygulamayı eylemde görmenizi sağlar.
Not
Örnek Azure oy uygulaması, Linux düğümünde çalışmak üzere zamanlanmış bir Linux Pod kullanır. bu makalede özetlenen akış, Windows sunucu düğümünde zamanlanan Windows Server pod için de geçerlidir.
örnek uygulama için aşağıdaki GitHub depoyu çatalla https://github.com/Azure-Samples/azure-voting-app-redis . Depo için GitHub hesabınızda çatal oluşturmak üzere sağ üst köşedeki Fork (Çatal Oluştur) düğmesini seçin.
Çatalınızı geliştirme sisteminize kopyalayın. Bu depoyu kopyalarken çatalınızın URL 'sini kullandığınızdan emin olun:
git clone https://github.com/<your-github-account>/azure-voting-app-redis.git
Klonlanan ç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 Docker-Compose. YAML dosyasını ile birlikte kullanın :
docker-compose up -d
Gerekli temel görüntüler çekilir ve uygulama kapsayıcıları oluşturulur. Ardından, oluşturulan görüntüyü görmek için Docker görüntüleri komutunu kullanabilirsiniz. Üç görüntü indirilir veya oluşturulur. azure-vote-front görüntüsü uygulamayı içerir ve temel olarak nginx-flask görüntüsünü kullanır. redisGörüntü, redsıs ö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 Container Registry 'de oturum açın.
az acr login -n <acrLoginServer>
<acrLoginServer>ACR oturum açma sunucusu ile değiştirin.
Resmi, ACR oturum açma sunucusu adı ve sürüm numarasıyla etiketlemek için Docker Tag komutunu kullanın . <acrLoginServer>Önceki adımda elde edilen adınızı kullanın:
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:v1
Son olarak, Azure-oyön görüntüsünü ACR Kayıt defterinize gönderin. Yeniden, yerine <acrLoginServer> kendi ACR kayıt defterinizin oturum açma sunucusu adıyla değiştirin; örneğin myacrregistry.azurecr.io :
docker push <acrLoginServer>/azure-vote-front:v1
Örnek uygulamayı AKS 'e dağıtma
Örnek uygulamayı AKS kümenize dağıtmak için, Azure oy deposu deposunun kökündeki Kubernetes bildirim dosyasını kullanabilirsiniz. azure-vote-all-in-one-redis.yamlBildirim dosyasını gibi bir düzenleyiciyle açın vi . microsoft yerine 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, uygulamayı AKS kümenize dağıtmak için kubectl Apply komutunu kullanın:
kubectl apply -f azure-vote-all-in-one-redis.yaml
Bir Kubernetes Yük Dengeleyici Hizmeti, uygulamayı internet 'te kullanıma sunmak için oluşturulur. Bu işlem birkaç dakika sürebilir. Yük dengeleyici dağıtımının ilerlemesini izlemek için, kubectl Get Service komutunu bağımsız değişkeniyle birlikte kullanın. EXTERNAL-IP adresi pending durumundan IP address değerine değiştiğinde kubectl izleme işlemini durdurmak için komutunu kullanın.
$ kubectl get service azure-vote-front --watch
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
azure-vote-front LoadBalancer 10.0.215.27 <pending> 80:30747/TCP 22s
azure-vote-front LoadBalancer 10.0.215.27 40.117.57.239 80:30747/TCP 2m
Uygulamayı eylemde görmek için, hizmetinizin dış IP adresine bir Web tarayıcısı açın. Aşağıdaki örnekte gösterildiği gibi Azure oy uygulaması görüntülenir:

Jenkins denetleyicisini yapılandırma
Jenkins denetleyicisinden AKS dağıtımlarını etkinleştirmek için aşağıdaki değişiklikleri uygulayın:
Gelen bağlantı noktasını açın 80 .
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@<PublicIPAddres>
<PublicIPAddress>Jenkins DENETLEYICISININ IP adresiyle değiştirin.
&Günlüğü Azclı 'ye yükler
curl -L https://aka.ms/InstallAzureCli | bash
az login
Not
Azclı 'yi el ile yüklemek için bu yönergeleriizleyin.
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 ve Bağlan aks 'e kurma
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
Bir Jenkins ortam değişkeni, ACR oturum açma sunucusu adını tutmak için kullanılır. Bu değişkene Jenkins derleme işi sırasında başvurulur. Bu ortam değişkenini oluşturmak için aşağıdaki adımları izleyin:
Jenkins portalının sol tarafında, Jenkins 'i Yönetsistem yapılandırma ' yı seçin.
Genel Özellikleraltında ortam değişkenleri' ni seçin.
ACR_LOGINSERVERACR oturum açma sunucunuzun adı ve değeri ile bir değişken ekleyin.
Tamamlandığında, sayfanın alt kısmındaki Kaydet ' i seçin.
ACR için Jenkins kimlik bilgileri oluşturma
CI/CD işlemi sırasında Jenkins, uygulama güncelleştirmelerine göre yeni kapsayıcı görüntüleri oluşturur ve bu görüntüleri daha sonra ACR kayıt defterine itmesi gerekir.
Jenkins 'in güncelleştirilmiş kapsayıcı görüntülerini ACR 'ye gönderebilsin, ACR için kimlik bilgilerini belirtmeniz gerekir.
Rol ve izinlerin ayrılması için, Jenkins için ACR Kayıt defterinize katkıda bulunan izinlerle bir hizmet sorumlusu yapılandırın.
ACR 'yi kullanmak için Jenkins için bir 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
{
"appId": "626dd8ea-042d-4043-a8df-4ef56273670f",
"displayName": "azure-cli-2018-09-28-22-19-34",
"name": "http://azure-cli-2018-09-28-22-19-34",
"password": "1ceb4df3-c567-4fb6-955e-f95ac9460297",
"tenant": "72f988bf-86f1-41af-91ab-2d7cd011db48"
}
appId ve password değerlerini 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 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.
Hizmet sorumlusu katkıda bulunan haklarını ACR kayıt defterine atamak için bir rol ataması oluşturun.
az role assignment create --assignee <appID> --role Contributor --scope $ACR_ID
<appId>Hizmet sorumlusu oluşturmak için, kullanılan bir komutun çıktısında belirtilen değerle değiştirin.
ACR hizmet sorumlusu için Jenkins 'te bir kimlik bilgisi kaynağı oluşturma
Azure 'da rol atama ile, artık ACR kimlik bilgilerinizi bir Jenkins kimlik bilgileri nesnesinde depolayın. Bu kimlik bilgilerine Jenkins derleme işi sırasında başvurur.
Jenkins portalının sol tarafında Jenkins Kimlik Bilgilerini Yönet Jenkins Deposu Genel kimlik bilgileri (kısıtlanmamış)Kimlik Bilgileri Ekle'yi seçin
Kimlik bilgisi tür olarak Parola ile 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 sorumlusu appId değeri.
- Parola - ACR kayıt defteriniz ile kimlik doğrulaması için oluşturulan hizmet sorumlusu parolası.
- Kimlik - acr-credentials gibi kimlik bilgisi tanımlayıcısı
Tamamlandığında, kimlik bilgileri formu aşağıdaki örnekteki gibi olur:

Tamam'ı seçin ve Jenkins portalına geri dönebilirsiniz.
Jenkins projesi oluşturma
Jenkins portalının giriş sayfasında, sol tarafta Yeni öğe'yi seçin:
İş adı olarak azure-vote girin. Serbest stil projesini ve ardındanTamam'ı seçin
Genel bölümünde Projenizi GitHub seçin ve çatalı ekli depo URL'nizi (örneğin, your-github-account /azure-voting-app-redis) girin
Kaynak kodu yönetimi bölümündeGit'iseçin, çatalı yapılan depo URL'nizi (örneğin, your-github-account /azure-voting-app-redis.git) girin
Derleme Tetikleyicileri bölümündeGITscm yoklama GitHub kanca tetikleyicisi'ne tıklayın
Derleme Ortamı altındaGizli metinleri veya dosyaları kullan'ı seçin.
Bağlamalar'ınaltında Kullanıcı adı veparola ekle (ayrılmış) öğesini seçin
Kullanıcı
ACR_IDAdı Değişkeni içinACR_IDParola DeğişkeniACR_PASSWORDiçinACR_PASSWORD
Kabuk yürüt 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ü derlemek ve ACR kayıt defterinize iter.
# 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_NAMEKabuğu yürüt türünde başka bir Derleme Adımı ekleyin ve aşağıdaki metni kullanın. Bu betik, AKS'de uygulama dağıtımını ACR'den yeni kapsayıcı görüntüsüyle 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 derlemeyi test etmek
İş işlemelerini temel alarak işi GitHub jenkins derlemeyi el ile test edin.
Bu derleme, işin doğru yapılandırıldığından emin olur. Uygun Kubernetes kimlik doğrulama dosyasının yerinde olduğunu ve ACR kimlik doğrulamasının çalıştığını onaylar.
Projenin sol menüsünde Şimdi Derleme'yi seçin.

Docker görüntü katmanları Jenkins sunucusuna çekilirken ilk derleme daha uzun sürer.
Derlemeler aşağıdaki görevleri yapar:
- GitHub kopyalar
- Yeni bir kapsayıcı görüntüsü derleme
- Kapsayıcı görüntüsünü ACR kayıt defterine iletir
- AKS dağıtımı tarafından kullanılan görüntüyü güncelleştirme
Uygulama kodunda hiçbir değişiklik değiştirilmediği için web kullanıcı arabirimi değiştirilmez.
Derleme işi tamamlandıktan sonra derleme geçmişi altında derleme #1'i seçin. Konsol Çıktısı'nu seçin ve derleme işleminin çıktısını görüntüleniyor. Son satır başarılı bir derlemeyi gösteriyor olabilir.
Web kancası GitHub oluşturma
Başarılı bir el ile derleme tamamlandıktan sonra, GitHub Jenkins derlemesi ile tümleştirin. Kod her işlendi mi Jenkins derleme işini çalıştırmak için bir web kancası GitHub.
Web kancası GitHub için aşağıdaki adımları tamamlayın:
Web tarayıcısında GitHub depoya gidin.
İlk Ayarlar'yive ardından sol taraftan Web Kancaları'ı seçin.
Web kancası ekle'yi seçin. Yük URL'si için girin, burada Jenkins
<publicIp>sunucusunun IP adresidir. sonda olduğundan emin/olun. İçerik türü ve anında yayın olaylarını tetiklemek için diğer varsayılan değerleri bırakın.Web kancası ekle'yi seçin.

Tam CI/CD işlem hattını test edin
Artık CI/CD işlem hattının tamamını test edin. Bir kod işlemeyi GitHub aşağıdaki adımlar oluşur:
- Web GitHub Jenkins'e bilgi vetir.
- Jenkins derleme işini başlatır ve en son kod işlemeyi GitHub.
- Güncelleştirilmiş kod kullanılarak bir Docker derlemesi başlatıldı ve yeni kapsayıcı görüntüsü en son derleme numarasıyla etiketlendi.
- Bu yeni kapsayıcı görüntüsü, Azure Container Registry.
- Üzerinde çalışan uygulamanız Azure Kubernetes Service en son görüntüyle birlikte Azure Container Registry.
Geliştirme makinenize kopyalanan uygulamayı bir kod düzenleyicisiyle açın. /azure-vote/azure-vote dizinindeconfig_file.cfg adlı dosyayı açın. Aşağıdaki örnekte gösterildiği gibi, bu dosyada 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üncelleştirildiğinde dosyayı kaydedin, değişiklikleri işin ve deponun sizin GitHub itin. Web GitHub, 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şturmak ve itmek ve güncelleştirilmiş uygulamayı AKS'ye dağıtmak birkaç saniye sürer.
Derleme tamamlandıktan sonra, örnek Azure oy uygulamasının web tarayıcınızı yenileyin. Değişiklikleriniz aşağıdaki örnekte gösterildiği gibi görüntülenir:
