Öğretici: GitOps ile CI/CD uygulama (Flux v2)
Bu öğreticide, Flux v2 ve Azure Arc özellikli Kubernetes veya Azure Kubernetes Service (AKS) kümeleri ile GitOps kullanarak bir CI/CD çözümü ayarlarsınız. Örnek Azure Vote uygulamasını kullanarak şunları yapabilirsiniz:
- Uygulamanızı ve GitOps depolarınızı Azure Devops (Azure Repos) veya GitHub'a bağlayın.
- Azure Pipelines veya GitHub ile CI/CD akışı uygulayın.
- Azure Container Registry'nizi Azure DevOps ve Kubernetes'e bağlayın.
- Ortam değişkeni grupları veya gizli dizileri oluşturun.
- ve
stage
ortamlarını dağıtındev
. - Uygulama ortamlarını test edin.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
CI/CD ortamınız için GitOps'u dağıtmayı öğrenmek için önceki öğreticiyi tamamlayın.
Bu özelliğin avantajlarını ve mimarisini anlayın.
Şu durumlara sahip olduğunuzu doğrulayın:
- arc-cicd-cluster adlı bağlantılı Azure Arc özellikli Kubernetes kümesi.
- AKS tümleştirmesi veya AKS olmayan küme kimlik doğrulaması ile bağlı bir Azure Container Registry.
Bu Azure Arc özellikli Kubernetes ve Kubernetes Yapılandırma CLI uzantılarının en son sürümlerini yükleyin:
az extension add --name connectedk8s az extension add --name k8s-configuration
Veya bu uzantıları en son sürüme güncelleştirmek için aşağıdaki komutları çalıştırın:
az extension update --name connectedk8s az extension update --name k8s-configuration
Azure Container Registry'yi Kubernetes'e bağlama
Azure Container Registry'nizden görüntü çekmek için Kubernetes kümenizi etkinleştirin. Özelse kimlik doğrulaması gereklidir.
Azure Container Registry'yi mevcut AKS kümelerine bağlama
Aşağıdaki komutu kullanarak mevcut bir Azure Container Registry'yi mevcut AKS kümeleriyle tümleştirin:
az aks update -n arc-cicd-cluster -g myResourceGroup --attach-acr arc-demo-acr
Görüntü çekme gizli dizisi oluşturma
AKS olmayan ve yerel kümeleri Azure Container Registry'nize bağlamak için bir görüntü çekme gizli dizisi oluşturun. Kubernetes, kayıt defterinizin kimliğini doğrulamak için gereken bilgileri depolamak için görüntü çekme gizli dizilerini kullanır.
Aşağıdaki kubectl
komutla bir görüntü çekme gizli dizisi oluşturun. Hem hem stage
de dev
ad alanları için yineleyin.
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<container-registry-name>.azurecr.io \
--docker-username=<service-principal-ID> \
--docker-password=<service-principal-password>
Her pod için imagePullSecret ayarlamak zorunda kalmamak için ve stage
ad alanlarına ImagePullSecret öğesini Hizmet hesabına dev
eklemeyi göz önünde bulundurun. Daha fazla bilgi için Bkz . Kubernetes öğreticisi.
Tercih ettiğiniz CI/CD düzenleyiciye bağlı olarak, Azure DevOps veya GitHub yönergeleriyle devam edebilirsiniz.
Azure DevOps ile CI/CD uygulama
Bu öğreticide Azure DevOps, Azure Repos ve Pipelines ve Azure CLI hakkında bilgi sahibi olduğunuz varsayılır.
Önce aşağıdaki adımları tamamladığınızdan emin olun:
- Azure DevOps Services'da oturum açın.
- Azure Repos ve Azure Pipelines için "Derleme Yöneticisi" ve "Proje Yöneticisi" izinlerine sahip olduğunuzu doğrulayın.
Uygulama ve GitOps depolarını Azure Repos'a aktarma
Uygulama deposunu ve GitOps deposunu Azure Repos'a aktar. Bu öğretici için aşağıdaki örnek depoları kullanın:
arc-cicd-demo-src uygulama deposu
- URL: https://github.com/Azure/arc-cicd-demo-src
- GitOps kullanılarak dağıtılacak örnek Azure Vote Uygulamasını içerir.
- Depoyu adıyla içeri aktarma
arc-cicd-demo-src
arc-cicd-demo-gitops GitOps deposu
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Azure Vote Uygulamasını barındıran küme kaynaklarınız için temel olarak çalışır.
- Depoyu adıyla içeri aktarma
arc-cicd-demo-gitops
Git depolarını içeri aktarma hakkında daha fazla bilgi edinin.
Not
Uygulama ve GitOps depoları için iki ayrı depo içeri aktarmak ve kullanmak güvenliği ve basitliği artırabilir. Uygulama ve GitOps depolarının izinleri ve görünürlüğü ayrı ayrı ayarlanabilir. Örneğin, küme yöneticisi uygulama kodunda kümenin istenen durumuyla ilgili değişiklikleri bulamıyor olabilir. Buna karşılık, bir uygulama geliştiricisinin her ortam için belirli parametreleri bilmesi gerekmez. Parametreler için kapsam sağlayan bir dizi test değeri yeterli olabilir.
GitOps deposunu bağlama
Uygulamanızı sürekli dağıtmak için GitOps kullanarak uygulama deposunu kümenize bağlayın. arc-cicd-demo-gitops GitOps deponuz, arc-cicd-cluster kümenizde uygulamanızı çalışır duruma getirmek için temel kaynakları içerir.
İlk GitOps deposu yalnızca dağıtım ortamlarına karşılık gelen geliştirme ve aşama ad alanlarını oluşturan bir bildirim içerir.
Oluşturduğunuz GitOps bağlantısı bildirim dizinindeki bildirimleri otomatik olarak eşitler ve küme durumunu güncelleştirir.
CI/CD iş akışı, uygulamayı dağıtmak için bildirim dizinini ek bildirimlerle doldurur.
Azure Repos'ta yeni içeri aktarılan arc-cicd-demo-gitops deponuza yeni bir GitOps bağlantısı oluşturun.
az k8s-configuration flux create \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --namespace flux-system \ --resource-group myResourceGroup \ -u https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \ --https-user <Azure Repos username> \ --https-key <Azure Repos PAT token> \ --scope cluster \ --cluster-type connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
İpucu
AKS kümesi için (Arc özellikli küme yerine) kullanın
-cluster-type managedClusters
.Azure portalında dağıtımın durumunu denetleyin.
- Başarılı olursa kümenizde hem hem de
dev
stage
ad alanlarının oluşturulduğunu görürsünüz. - Kümenizin Azure portalı sayfasında, sekmede bir yapılandırma
cluster-config
oluşturulduğunuGitOps
da onaylayabilirsiniz.
- Başarılı olursa kümenizde hem hem de
CI/CD işlem hatlarını içeri aktarma
GitOps bağlantısını eşitlediğinize göre, bildirimleri oluşturan CI/CD işlem hatlarını içeri aktarmanız gerekir.
Uygulama deposu, PR'ler, CI ve CD için kullanılan işlem hatlarının bulunduğu bir .pipeline
klasör içerir. Örnek depoda sağlanan üç işlem hattını içeri aktarın ve yeniden adlandırın:
İşlem hattı dosya adı | Açıklama |
---|---|
.pipelines/az-vote-pr-pipeline.yaml |
arc-cicd-demo-src PR adlı uygulama PR işlem hattı |
.pipelines/az-vote-ci-pipeline.yaml |
arc-cicd-demo-src CI adlı uygulama CI işlem hattı |
.pipelines/az-vote-cd-pipeline.yaml |
Arc-cicd-demo-src CD adlı uygulama CD işlem hattı |
Azure Container Registry'yi Azure DevOps'a bağlama
CI işlemi sırasında, uygulama kapsayıcılarınızı bir kayıt defterine dağıtırsınız. Azure hizmet bağlantısı oluşturarak başlayın:
- Azure DevOps'ta, proje ayarları sayfasından Hizmet bağlantıları sayfasını açın. TFS'de, üst menü çubuğundaki ayarlar simgesinden Hizmetler sayfasını açın.
- + Yeni hizmet bağlantısı'nı seçin ve ihtiyacınız olan hizmet bağlantısı türünü seçin.
- Hizmet bağlantısı parametrelerini doldurun. Bu öğretici için:
- Hizmet bağlantısını arc-demo-acr olarak adlandırın.
- Kaynak grubu olarak myResourceGroup öğesini seçin.
- Tüm işlem hatlarına erişim izni ver'i seçin.
- Bu seçenek YAML işlem hattı dosyalarını hizmet bağlantıları için yetkiler.
- Bağlantıyı oluşturmak için Kaydet'i seçin.
Çekme isteği hizmeti bağlantısını yapılandırma
CD işlem hattı, GitOps deposundaki çekme isteklerini (PR' ler) işleyip hizmet bağlantısı gerektirir. Bu bağlantıyı yapılandırmak için:
- Azure DevOps'ta, proje ayarları sayfasından Hizmet bağlantıları sayfasını açın. TFS'de, üst menü çubuğundaki ayarlar simgesinden Hizmetler sayfasını açın.
- + Yeni hizmet bağlantısı'nı seçin ve tür'e tıklayın
Generic
. - Hizmet bağlantısı parametrelerini doldurun. Bu öğretici için:
- Sunucu URL'si
https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
- Kullanıcı Adı ve Parola'ı boş bırakın.
- Hizmet bağlantısını azdo-pr-connection olarak adlandırın.
- Sunucu URL'si
- Tüm işlem hatlarına erişim izni ver'i seçin.
- Bu seçenek YAML işlem hattı dosyalarını hizmet bağlantıları için yetkiler.
- Bağlantıyı oluşturmak için Kaydet'i seçin.
GitOps Bağlayıcısı'nı yükleme
Helm depolarına GitOps Bağlayıcısı deposu ekleyin:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
Bağlayıcıyı kümeye yükleyin:
helm upgrade -i gitops-connector gitops-connector/gitops-connector \ --namespace flux-system \ --set gitRepositoryType=AZDO \ --set ciCdOrchestratorType=AZDO \ --set gitOpsOperatorType=FLUX \ --set azdoGitOpsRepoName=arc-cicd-demo-gitops \ --set azdoOrgUrl=https://dev.azure.com/<Your organization>/<Your project> \ --set gitOpsAppURL=https://dev.azure.com/<Your organization>/<Your project>/_git/arc-cicd-demo-gitops \ --set orchestratorPAT=<Azure Repos PAT token>
Not
Azure Repos PAT token
veCode: Full
izinlerine sahipBuild: Read & execute
olmalıdır.Flux'u GitOps bağlayıcısına bildirim gönderecek şekilde yapılandırın:
cat <<EOF | kubectl apply -f - apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Alert metadata: name: gitops-connector namespace: flux-system spec: eventSeverity: info eventSources: - kind: GitRepository name: cluster-config - kind: Kustomization name: cluster-config-cluster-config providerRef: name: gitops-connector --- apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Provider metadata: name: gitops-connector namespace: flux-system spec: type: generic address: http://gitops-connector:8080/gitopsphase EOF
Yükleme hakkında ayrıntılı bilgi için bkz . GitOps Bağlayıcısı deposu.
Ortam değişkeni grupları oluşturma
Uygulama deposu değişken grubu
az-vote-app-dev adlı bir değişken grubu oluşturun. Aşağıdaki değerleri ayarlayın:
Değişken | Değer |
---|---|
AZURE_SUBSCRIPTION |
(öğreticinin önceki bölümlerinden arc-demo-acr olması gereken Azure Hizmet Bağlantınız) |
AZ_ACR_NAME |
Azure ACR adı, örneğin arc-demo-acr |
ENVIRONMENT_NAME |
Geliştirme |
MANIFESTS_BRANCH |
master |
MANIFESTS_REPO |
arc-cicd-demo-gitops |
ORGANIZATION_NAME |
Azure DevOps kuruluşunun adı |
PROJECT_NAME |
Azure DevOps'ta GitOps projesinin adı |
REPO_URL |
GitOps deposu için tam URL |
SRC_FOLDER |
azure-vote |
TARGET_CLUSTER |
arc-cicd-cluster |
TARGET_NAMESPACE |
dev |
VOTE_APP_TITLE |
Oylama Uygulaması |
AKS_RESOURCE_GROUP |
AKS Kaynak grubu. Otomatik test için gereklidir. |
AKS_NAME |
AKS Adı. Otomatik test için gereklidir. |
Ortam değişken grubunu hazırlama
az-vote-app-dev değişken grubunu kopyalama.
Adı az-vote-app-stage olarak değiştirin.
Karşılık gelen değişkenler için aşağıdaki değerlerin olduğundan emin olun:
Değişken Değer ENVIRONMENT_NAME
Aşama TARGET_NAMESPACE
stage
Artık ve stage
ortamlarına dağıtmaya dev
hazırsınız.
Ortamlar oluşturma
Azure DevOps projenizde ve Stage
ortamları oluşturunDev
. Ayrıntılar için bkz . Ortamları oluşturma ve hedefleme.
Derleme hizmeti için daha fazla izin verme
CD işlem hattı, GitOps deposunda kimlik doğrulaması yapmak için çalışan derlemenin güvenlik belirtecini kullanır. İşlem hattının yeni bir dal oluşturması, değişiklikleri göndermesi ve ÇEKME'ler oluşturması için daha fazla izin gerekir. Bu izinleri etkinleştirmek için:
- Azure DevOps'ta Proje ayarları'nı açın.
- Depolar'ın altında Depolar'ı seçin.
- Güvenlik'i seçin.
- bul
<Project Name> Build Service (<Organization Name>)
veProject Collection Build Service (<Organization Name>)
(bunları görmüyorsanız aramayı kullanın) ve Katkıda Bulunma, Çekme isteklerine katkıda bulunma ve Dal oluştur'a izin verin. - İşlem Hatları'nın altında Ayarlar'ı seçin.
- YAML işlem hatlarındaki depolara erişimi koru seçeneğini kapatın.
Daha fazla bilgi için bkz. Derleme hizmetine sürüm denetimi izinleri verme ve Derleme hizmeti hesabı izinlerini yönetme.
Geliştirme ortamını ilk kez dağıtma
CI ve CD işlem hatları oluşturulduktan sonra ci işlem hattını çalıştırarak uygulamayı ilk kez dağıtın.
CI işlem hattı
İlk CI işlem hattı çalıştırması sırasında, hizmet bağlantı adını okurken bir kaynak yetkilendirme hatası görürseniz aşağıdakileri yapın:
- Erişilen değişkenin AZURE_SUBSCRIPTION olduğunu doğrulayın.
- Kullanımı yetkilendirme.
- İşlem hattını yeniden çalıştırın.
CI işlem hattı:
- Uygulama değişikliğinin dağıtım için tüm otomatik kalite denetimlerini geçmesini sağlar.
- Çekme isteği işlem hattında tamamlanamadı fazladan doğrulama yapar. GitOps'a özgü işlem hattı, CD işlem hattı tarafından dağıtılacak işleme için yapıtları da yayımlar.
- Docker görüntüsünün değiştiğini ve yeni görüntünün gönderildiğini doğrular.
CD işlem hattı
İlk CD işlem hattı çalıştırması sırasında işlem hattına GitOps deposuna erişim vermeniz gerekir. İşlem hattının bir kaynağa erişmek için izin alması istendiğinde Görüntüle'yi seçin. Ardından, işlem hattının geçerli ve gelecekteki çalıştırmaları için GitOps deposunu kullanma izni vermek için İzin Ver'i seçin.
Başarılı CI işlem hattı çalıştırması, dağıtım işlemini tamamlamak için CD işlem hattını tetikler. Her ortama artımlı olarak dağıtabilirsiniz.
İpucu
CD işlem hattı otomatik olarak tetiklenmiyorsa:
- Adın içindeki dal tetikleyicisi ile eşleşti sini doğrulayın
.pipelines/az-vote-cd-pipeline.yaml
arc-cicd-demo-src CI
olmalıdır.
- CI işlem hattını yeniden çalıştırın.
Şablon ve bildirim GitOps deposunda değiştirildikten sonra, CD işlem hattı bir işleme oluşturur, gönderir ve onay için bir çekme isteği oluşturur.
GitOps deposuna işlem hattı tarafından oluşturulan çekme isteğini bulun.
GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:
- Üst düzey Helm şablonu değişiklikleri.
- İstenen durumda temel alınan değişiklikleri gösteren alt düzey Kubernetes bildirimleri. Flux bu bildirimleri dağıtır.
Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.
Birkaç dakika sonra Flux değişikliği alır ve dağıtımı başlatır.
git commit
İşleme geçmişi sekmesinde durumu izleyin. olduğundasucceeded
, CD işlem hattı otomatik teste başlar.Bağlantı noktasını kullanarak
kubectl
yerel olarak iletin ve uygulamanın şu şekilde düzgün çalıştığından emin olun:kubectl port-forward -n dev svc/azure-vote-front 8080:80
Tarayıcınızda Azure Vote uygulamasını adresinde
http://localhost:8080/
görüntüleyin.Sık kullanılanlarınıza oy verin ve uygulamada bazı değişiklikler yapmaya hazır olun.
Ortam onaylarını ayarlama
Uygulama dağıtımından sonra kodda veya şablonlarda değişiklik yapabilirsiniz, ancak istemeden kümeyi kötü bir duruma da getirebilirsiniz.
Geliştirme ortamı dağıtımdan sonra bir kesme gösterirse ortam onaylarının etkinleştirilmesi, sorunun daha sonraki ortamlardan korunmasına yardımcı olur.
- Azure DevOps projenizde korunması gereken ortama gidin.
- Kaynak için Onaylar ve Denetimler'e gidin.
- Oluştur'u belirleyin.
- Onaylayanları ve isteğe bağlı bir iletiyi sağlayın.
- El ile onay denetiminin eklenmesini tamamlamak için Yeniden Oluştur'u seçin.
Daha fazla bilgi için bkz . Onay ve denetim tanımlama.
CD işlem hattı bir sonraki çalıştırıldığında işlem hattı GitOps PR oluşturulduktan sonra duraklatılır. Değişikliğin düzgün eşitlendiğini ve temel işlevleri geçtiğini doğrulayın. Değişikliğin sonraki ortama akışına izin vermek için işlem hattından denetimi onaylayın.
Uygulama değişikliği yapma
Kümedeki durumu temsil eden bu temel şablon ve bildirim kümesiyle uygulamada küçük bir değişiklik yaparsınız.
arc-cicd-demo-src deposunda dosyayı düzenleyin
azure-vote/src/azure-vote-front/config_file.cfg
."Cats vs Dogs" yeterli oy almadığından, oy sayısını artırmak için bunu "Sekmeler ve Boşluklar" olarak değiştirin.
Değişikliği yeni bir dalda işleyin, gönderin ve bir çekme isteği oluşturun. Bu adım dizisi, CI/CD yaşam döngüsünü başlatan tipik geliştirici akışıdır.
Çekme isteği doğrulama işlem hattı
PR işlem hattı, hatalı bir değişikliğe karşı ilk savunma hattıdır. Normal uygulama kodu kalite denetimleri lint ve statik analiz içerir. GitOps perspektifinden bakıldığında, sonuçta elde edilen altyapının dağıtılması için de aynı kaliteyi güvenceye almanız gerekir.
Uygulamanın Dockerfile ve Helm grafikleri, uygulamaya benzer şekilde lint özelliğini kullanabilir.
Yanlış biçimlendirilmiş YAML dosyalarından uygulamanız için CPU ve Bellek sınırları ayarlama gibi en iyi yöntem önerilerine kadar lint aralığı sırasında bulunan hatalar.
Not
Helm linting'den gerçek bir uygulamada en iyi kapsamı elde etmek için, gerçek bir ortamda kullanılacak değerlere makul ölçüde benzeyen değerleri kullanın.
İşlem hattı yürütme sırasında bulunan hatalar çalıştırmanın test sonuçları bölümünde görünür. Buradan, şunları yapabilirsiniz:
- Hata türleriyle ilgili yararlı istatistikleri izleyin.
- Algılandıkları ilk işlemeyi bulun.
- Yığın izleme stili, hataya neden olan kod bölümlerine bağlanır.
İşlem hattı çalıştırması tamamlanır ve uygulama kodunun kalitesi ve dağıtan şablon onaylanır. Artık çekme isteğini onaylayabilir ve tamamlayabilirsiniz. CI, CD işlem hattını tetiklemeden önce şablonları ve bildirimleri yeniden düzenleyerek yeniden çalışır.
İpucu
Gerçek bir ortamda, çekme isteğinin kalite denetimlerinizi geçtiğinden emin olmak için dal ilkeleri ayarladığınızdan emin olun. Daha fazla bilgi için bkz . Dal ilkeleri ve ayarları.
CD işlemi onayları
Başarılı bir CI işlem hattı çalıştırması, dağıtım işlemini tamamlamak için CD işlem hattını tetikler. Bu kez işlem hattı her dağıtım ortamını onaylamanızı gerektirir.
- Ortama dağıtımı
dev
onaylayın. - Şablon ve bildirim GitOps deposunda değiştirildikten sonra, CD işlem hattı bir işleme oluşturur, gönderir ve onay için bir çekme isteği oluşturur.
- GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:
- Üst düzey Helm şablonu değişiklikleri.
- İstenen durumda temel alınan değişiklikleri gösteren alt düzey Kubernetes bildirimleri.
- Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.
- Dağıtımın tamamlanmasını bekleyin.
- Temel duman testi olarak, uygulama sayfasına gidin ve oylama uygulamasının artık Sekmeler ve Alanlar'ın görüntülendiğini doğrulayın.
- Bağlantı noktasını kullanarak
kubectl
yerel olarak iletin ve uygulamanın şu şekilde düzgün çalıştığından emin olun:kubectl port-forward -n dev svc/azure-vote-front 8080:80
- Adresinden tarayıcınızda
http://localhost:8080/
Azure Vote uygulamasını görüntüleyin ve oylama seçeneklerinin Sekmeler ve Alanlar olarak değiştiğini doğrulayın.
- Bağlantı noktasını kullanarak
- Ortam için
stage
1-7 arası adımları yineleyin.
Dağıtım tamamlandı.
Bu öğreticide kullanılan CI/CD iş akışlarında uygulanan tüm adım ve tekniklere ayrıntılı bir genel bakış için bkz . Azure DevOps GitOps Flow diyagramı.
GitHub ile CI/CD uygulama
Bu öğreticide GitHub, GitHub Actions hakkında bilgi sahibi olduğunuz varsayılır.
Çatal uygulaması ve GitOps depoları
Uygulama deposu ve GitOps deposu çatalı oluşturun. Bu öğretici için aşağıdaki örnek depoları kullanın:
arc-cicd-demo-src uygulama deposu
- URL: https://github.com/Azure/arc-cicd-demo-src
- GitOps kullanılarak dağıtılacak örnek Azure Vote Uygulamasını içerir.
arc-cicd-demo-gitops GitOps deposu
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Azure Vote Uygulamasını barındıran küme kaynaklarınız için temel olarak çalışır.
GitOps deposunu bağlama
Uygulamanızı sürekli dağıtmak için GitOps kullanarak uygulama deposunu kümenize bağlayın. arc-cicd-demo-gitops GitOps deponuz, arc-cicd-cluster kümenizde uygulamanızı çalışır duruma getirmek için temel kaynakları içerir.
İlk GitOps deposu yalnızca dağıtım ortamlarına karşılık gelen geliştirme ve aşama ad alanlarını oluşturan bir bildirim içerir.
Otomatik olarak oluşturduğunuz GitOps bağlantısı:
- Bildirim dizinindeki bildirimleri eşitleyin.
- Küme durumunu güncelleştirin.
CI/CD iş akışı, uygulamayı dağıtmak için bildirim dizinini ek bildirimlerle doldurur.
GitHub'da yeni çatallanan arc-cicd-demo-gitops deponuza yeni bir GitOps bağlantısı oluşturun.
az k8s-configuration flux create \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --namespace cluster-config \ --resource-group myResourceGroup \ -u https://github.com/<Your organization>/arc-cicd-demo-gitops.git \ --https-user <Azure Repos username> \ --https-key <Azure Repos PAT token> \ --scope cluster \ --cluster-type connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
Azure portalında dağıtımın durumunu denetleyin.
- Başarılı olursa kümenizde hem hem de
dev
stage
ad alanlarının oluşturulduğunu görürsünüz.
- Başarılı olursa kümenizde hem hem de
GitOps Bağlayıcısı'nı yükleme
Helm depolarına GitOps Bağlayıcısı deposu ekleyin:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
Bağlayıcıyı kümeye yükleyin:
helm upgrade -i gitops-connector gitops-connector/gitops-connector \ --namespace flux-system \ --set gitRepositoryType=GITHUB \ --set ciCdOrchestratorType=GITHUB \ --set gitOpsOperatorType=FLUX \ --set gitHubGitOpsRepoName=arc-cicd-demo-src \ --set gitHubGitOpsManifestsRepoName=arc-cicd-demo-gitops \ --set gitHubOrgUrl=https://api.github.com/repos/<Your organization> \ --set gitOpsAppURL=https://github.com/<Your organization>/arc-cicd-demo-gitops/commit \ --set orchestratorPAT=<GitHub PAT token>
Flux'u GitOps bağlayıcısına bildirim gönderecek şekilde yapılandırın:
cat <<EOF | kubectl apply -f - apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Alert metadata: name: gitops-connector namespace: flux-system spec: eventSeverity: info eventSources: - kind: GitRepository name: cluster-config - kind: Kustomization name: cluster-config-cluster-config providerRef: name: gitops-connector --- apiVersion: notification.toolkit.fluxcd.io/v1beta1 kind: Provider metadata: name: gitops-connector namespace: flux-system spec: type: generic address: http://gitops-connector:8080/gitopsphase EOF
Yüklemeyle ilgili ayrıntılar için GitOps Bağlayıcısı deposuna bakın.
GitHub gizli dizileri oluşturma
Sonraki adım GitHub deposu ve ortam gizli dizileri oluşturmaktır.
GitHub depo gizli dizileri oluşturma
GitHub depo gizli dizileriniz için aşağıdaki değerleri kullanın:
Gizli dizi | Değer |
---|---|
AZURE_CREDENTIALS |
Azure kimlik bilgileri şu biçimde {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"} |
AZ_ACR_NAME |
Azure ACR adı, örneğin arc-demo-acr |
MANIFESTS_BRANCH |
master |
MANIFESTS_FOLDER |
arc-cicd-cluster |
MANIFESTS_REPO |
https://github.com/your-organization/arc-cicd-demo-gitops |
VOTE_APP_TITLE |
Oylama Uygulaması |
AKS_RESOURCE_GROUP |
AKS Kaynak grubu. Otomatik test için gereklidir. |
AKS_NAME |
AKS Adı. Otomatik test için gereklidir. |
PAT |
GitOps deposuna çekme isteği iznine sahip GitHub PAT belirteci |
GitHub ortam gizli dizileri oluşturma
- Aşağıdaki gizli dizilerle ortam oluşturun
az-vote-app-dev
:
Gizli dizi | Değer |
---|---|
ENVIRONMENT_NAME |
Geliştirme |
TARGET_NAMESPACE |
dev |
- Aşağıdaki gizli dizilerle ortam oluşturun
az-vote-app-stage
:
Gizli dizi | Değer |
---|---|
ENVIRONMENT_NAME |
Aşama |
TARGET_NAMESPACE |
stage |
Artık ve stage
ortamlarına dağıtmaya dev
hazırsınız.
CI/CD Geliştirme iş akışı
CI/CD Geliştirme iş akışını başlatmak için kaynak kodu değiştirin. Uygulama deposunda, dosyadaki .azure-vote/src/azure-vote-front/config_file.cfg
değerleri güncelleştirin ve değişiklikleri depoya gönderin.
CI/CD Geliştirme iş akışı:
- Uygulama değişikliğinin dağıtım için tüm otomatik kalite denetimlerini geçmesini sağlar.
- Çekme isteği işlem hattında tamamlanamadı fazladan doğrulama yapar.
- Docker görüntüsünün değiştiğini ve yeni görüntünün gönderildiğini doğrular.
- Aşağıdaki CD aşamaları tarafından kullanılan yapıtları (Docker görüntü etiketleri, Bildirim şablonları, Yardımcı Programlar) yayımlar.
- Uygulamayı Geliştirme ortamına dağıtır.
- GitOps deposuna bildirimler oluşturur.
- Onay için GitOps deposuna bir çekme isteği oluşturur.
Bu adımlar tamamlandıktan sonra:
GitOps deposuna işlem hattı tarafından oluşturulan çekme isteğini bulun.
GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:
- Üst düzey Helm şablonu değişiklikleri.
- İstenen durumda temel alınan değişiklikleri gösteren alt düzey Kubernetes bildirimleri. Flux bu bildirimleri dağıtır.
Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.
Birkaç dakika sonra Flux değişikliği alır ve dağıtımı başlatır.
git commit
İşleme geçmişi sekmesinde durumu izleyin. olduğundasucceeded
,CD Stage
iş akışı başlatılır.Bağlantı noktasını kullanarak
kubectl
yerel olarak iletin ve uygulamanın şu şekilde düzgün çalıştığından emin olun:kubectl port-forward -n dev svc/azure-vote-front 8080:80
Tarayıcınızda Azure Vote uygulamasını adresinde
http://localhost:8080/
görüntüleyin.Sık kullanılanlarınıza oy verin ve uygulamada bazı değişiklikler yapmaya hazır olun.
CD Stage iş akışı
CD Stage iş akışı, Flux uygulamayı geliştirme ortamına başarıyla dağıttığı ve GitOps Bağlayıcısı aracılığıyla GitHub eylemlerini bilgilendirdiği zaman otomatik olarak başlatılır.
CD Stage iş akışı:
- Geliştirme ortamına karşı uygulama duman testleri çalıştırır
- Uygulamayı Stage ortamına dağıtır.
- GitOps deposunda bildirimler oluşturur
- Onay için GitOps deposuna bir çekme isteği oluşturur
Çekme isteğini Aşama ortamına bildirir ve Flux tüm değişiklikleri başarıyla uygularsa GitOps deposunda Git işleme durumu güncelleştirilir. Dağıtım tamamlandı.
Bu öğreticide kullanılan CI/CD iş akışlarında uygulanan tüm adım ve tekniklere ayrıntılı bir genel bakış için GitHub GitOps Flow diyagramına bakın.
Kaynakları temizleme
Bu uygulamayı kullanmaya devam etmeyecekseniz aşağıdaki adımlarla tüm kaynakları silin:
Azure Arc GitOps yapılandırma bağlantısını silin:
az k8s-configuration flux delete \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --resource-group myResourceGroup \ -t connectedClusters --yes
GitOps Bağlayıcısı'nı sil:
helm uninstall gitops-connector -n flux-system kubectl delete alerts.notification.toolkit.fluxcd.io gitops-connector -n flux-system kubectl delete providers.notification.toolkit.fluxcd.io gitops-connector -n flux-system
Sonraki adımlar
Bu öğreticide, dağıtım aracılığıyla uygulama geliştirmeden DevOps uygulayan tam bir CI/CD iş akışı ayarlarsınız. Uygulamada yapılan değişiklikler, doğrulama ve dağıtımı otomatik olarak tetikler ve el ile onaylarla geçitlendirilir.
Azure Arc özellikli Kubernetes ile GitOps ve yapılandırmalar hakkında daha fazla bilgi edinmek için kavramsal makalemize ilerleyin.