Rehber: GitOps ile CI/CD Gerçekleştirme (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.
  • dev ve stage ortamlarını dağıtın.
  • Uygulama ortamlarını test edin.

Eğer bir Azure aboneliğiniz yoksa, başlamadan önce ücretsiz bir hesap oluşturun.

Prerequisites

  • 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:

  • 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 gizliliği oluşturma

AKS olmayan ve yerel kümeleri Azure Container Registry'nize bağlamak için bir görsel çekme kimlik bilgisi 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 gizliliği oluşturun. Her iki dev ve stage ad uzayı 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, dev ve stage ad alanlarındaki Hizmet hesabına imagePullSecret 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:

Uygulama ve GitOps depolarını Azure Repos'a aktarma

Uygulama deposunu ve GitOps deposunu Azure Repos'a aktar. Bu eğitim için aşağıdaki örnek depoları kullanın:

Git depolarını içeri aktarma hakkında daha fazla bilgi edinin.

Note

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 deposunu GitOps kullanarak 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.

  1. 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
    

    Tip

    AKS kümesi için (Arc özellikli küme yerine) kullanın -cluster-type managedClusters.

  2. Azure portalında dağıtımın durumunu denetleyin.

    • Başarılı olursa kümenizde hem hem de devstage ad alanlarının oluşturulduğunu görürsünüz.
    • Ayrıca, kümenizin Azure portal sayfasındaki cluster-config sekmesinde bir yapılandırma GitOps oluşturulduğunu onaylayabilirsiniz.

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ı Description
.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ı uygulamanın 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:

  1. 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.
  2. + Yeni hizmet bağlantısı'nı seçin ve ihtiyacınız olan hizmet bağlantısı türünü seçin.
  3. Hizmet bağlantısı parametrelerini doldurun. Bu kılavuz için:
    • Hizmet bağlantısını arc-demo-acr olarak adlandırın.
    • Kaynak grubu olarak myResourceGroup öğesini seçin.
  4. 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.
  5. Bağlantıyı oluşturmak için Kaydet'i seçin.

PR hizmeti bağlantısını yapılandırma

CD işlem hattı, GitOps deposundaki çekme isteklerini (PR'ler) işler ve bu işlem için bir hizmet bağlantısı gerektirir. Bu bağlantıyı yapılandırmak için:

  1. 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.
  2. + Yeni hizmet bağlantısı'nı seçin ve Generic türünü seçin.
  3. Hizmet bağlantısı parametrelerini doldurun. Bu kılavuz 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.
  4. 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.
  5. Bağlantıyı oluşturmak için Kaydet'i seçin.

GitOps Bağlayıcısı'nı yükleme

  1. Helm depolarına GitOps Bağlayıcısı deposu ekleyin:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. 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>
    

    Note

    Azure Repos PAT token Build: Read & execute ve Code: Full izinlerine sahip olmalıdır.

  3. 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/v1beta2
    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/v1beta2
    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:

Variable Value
AZURE_SUBSCRIPTION (öğreticinin önceki bölümlerinde belirtilen, arc-demo-acr olması gereken Azure Hizmet Bağlantınız)
AZ_ACR_NAME Azure ACR adı, örneğin arc-demo-acr
ENVIRONMENT_NAME Dev
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.

Sahne ortam değişken grubu

  1. az-vote-app-dev değişken grubunu kopyalama.

  2. Adı az-vote-app-stage olarak değiştirin.

  3. Karşılık gelen değişkenler için aşağıdaki değerlerin olduğundan emin olun:

    Variable Value
    ENVIRONMENT_NAME Stage
    TARGET_NAMESPACE stage

Artık dev ve stage ortamlarına dağıtmaya hazırsınız.

Ortam oluşturma

Azure DevOps projenizde Dev ve Stage ortamları oluşturun. Ayrıntılar için bkz. Ortamları oluşturma ve hedefleme.

Derleme hizmetine daha fazla izin ver

CD işlem hattı, GitOps deposunda kimlik doğrulaması yapmak için çalışan yapının 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:

  1. Azure DevOps'ta Proje ayarları'nı açın.
  2. Depolar sekmesinin altında Repo'ları seçin.
  3. Güvenlik'i seçin.
  4. bul <Project Name> Build Service (<Organization Name>) ve Project 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.
  5. İşlem Hatları altındaAyarlar seçin.
  6. 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, uygulamayı ilk kez dağıtmak için CI işlem hattını çalıştırı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:

  1. Erişilen değişkenin AZURE_SUBSCRIPTION olduğunu doğrulayın.
  2. Kullanımı yetkilendirme.
  3. İş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.
  • PR işlem hattında tamamlanamayan fazladan doğrulamaları gerçekleştirir. GitOps'a özgü işlem hattı, CD işlem hattı tarafından yürütülecek commit 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 yürütülmeleri için GitOps deposunu kullanma izni vermek için İzin Ver seçeneğini 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.

Tip

CD işlem hattı otomatik olarak tetiklenmiyorsa:

  1. Adın dal tetikleyicisi ile eşleştiğini doğrulayın .pipelines/az-vote-cd-pipeline.yaml
    • Olmalıdır arc-cicd-demo-src CI.
  2. CI işlem hattını yeniden çalıştırın.

Şablon ve manifest değişiklikleri GitOps deposunda oluşturulduktan sonra, CD boru hattı bir commit oluşturur, bunu gönderir ve onay için bir çekme isteği (PR) oluşturur.

  1. GitOps deposuna pipeline tarafından oluşturulan çekme isteğini bulun.

  2. GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:

    • Üst düzey Helm şablonu değişiklikleri.
    • İstenen durumdaki temel değişiklikleri gösteren düşük seviyeli Kubernetes manifestleri. Flux bu bildirimleri dağıtır.
  3. Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.

  4. Birkaç dakika sonra Flux değişikliği alır ve dağıtımı başlatır.

  5. git commit İşleme geçmişi sekmesinde durumu izleyin. Durum succeeded olduğunda, CD işlem hattı otomatik teste başlar.

  6. Portu kubectl kullanarak yerel olarak iletin ve uygulamanın doğru şekilde çalıştığından emin olun.

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Tarayıcınızda, Azure Vote uygulamasını http://localhost:8080/ adresinde görüntüleyin.

  8. 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 hata gösterirse, ortam onaylarını etkinleştirmek sorunun daha sonraki ortamlara ulaşmasını engellemeye yardımcı olur.

  1. Azure DevOps projenizde korunması gereken ortama gidin.
  2. Kaynak için Onaylar ve Denetimler'e gidin.
  3. Oluştur'i seçin.
  4. Onaylayanları ve isteğe bağlı bir iletiyi sağlayın.
  5. 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şlevselliği sağladığından emin olun. 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.

  1. arc-cicd-demo-src deposunda dosyayı düzenleyinazure-vote/src/azure-vote-front/config_file.cfg.

  2. "Cats vs Dogs" yeterli oy almadığından, oy sayısını artırmak için bunu "Sekmeler ve Boşluklar" olarak değiştirin.

  3. 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.

Linting sırasında, yanlış biçimlendirilmiş YAML dosyalarından uygulamanız için CPU ve Bellek sınırlarını ayarlama gibi en iyi uygulama önerilerine kadar çeşitli hatalar tespit edilir.

Note

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 commit'i bulun.
  • Yığın izleme stili, hataya neden olan kod bölümlerine bağlanır.

İşlem hattı çalışması tamamlanır ve uygulama kodunun kalitesi ile bu kodu dağıtmak için kullanılan şablon onaylanır. Artık PR'yi onaylayabilir ve tamamlayabilirsiniz. CI, CD işlem hattını tetiklemeden önce şablonları ve bildirimleri yeniden düzenleyerek yeniden çalışır.

Tip

Gerçek bir ortamda, çekme isteğinin kalite denetimlerinizi geçtiğinden emin olmak için dal politikalarını 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.

  1. Dağıtımı dev ortama onaylayın.
  2. Şablon ve manifesto GitOps deposunda değiştirildikten sonra, CD işlem hattı bir değişiklik kaydı oluşturur, gönderir ve onay için bir çekme isteği (PR) oluşturur.
  3. GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:
    • Üst düzey Helm şablonu değişiklikleri.
    • İstenen durumdaki temel değişiklikleri gösteren düşük seviyeli Kubernetes manifestleri.
  4. Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.
  5. Dağıtımın tamamlanmasını bekleyin.
  6. Temel duman testi olarak, uygulama sayfasına gidin ve oylama uygulamasının artık Tabs vs Spaces'in görüntülendiğini doğrulayın.
    • Bağlantı noktasını yerel olarak kubectl üzerinden yönlendirin ve uygulamanın kubectl port-forward -n dev svc/azure-vote-front 8080:80 kullanarak düzgün çalıştığından emin olun.
    • 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.
  7. 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.

Fork etme ve GitOps depoları

Uygulama deposunu ve GitOps deposunu forklayın. Bu eğitim için aşağıdaki örnek depoları kullanın:

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.

  1. GitHub'da yeni çatallanan arc-cicd-demo-gitops deposuna 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
    
  2. Azure portalında dağıtımın durumunu denetleyin.

    • Başarılı olursa kümenizde hem hem de devstage ad alanlarının oluşturulduğunu görürsünüz.

GitOps Bağlayıcısı'nı yükleme

  1. Helm depolarına GitOps Bağlayıcısı deposu ekleyin:

       helm repo add gitops-connector https://azure.github.io/gitops-connector/
    
  2. 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>
    
  3. 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/v1beta2
    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/v1beta2
    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 sırları oluştur

Sonraki adım, GitHub deposu ve ortam gizli bilgileri oluşturmaktır.

GitHub depo sırları oluşturma

GitHub depo anahtarlarınız için aşağıdaki değerleri kullanın:

Secret Value
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 jetonu

GitHub ortam sırları oluşturma

  1. Aşağıdaki gizli bilgilerle ortam oluşturun az-vote-app-dev :
Secret Value
ENVIRONMENT_NAME Dev
TARGET_NAMESPACE dev
  1. Aşağıdaki gizli bilgilerle ortam oluşturun az-vote-app-stage :
Secret Value
ENVIRONMENT_NAME Stage
TARGET_NAMESPACE stage

Artık dev ve stage ortamlarına dağıtmaya 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.
  • PR işlem hattında tamamlanamayan fazladan doğrulamaları gerçekleştirir.
  • 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 artefaktları (Docker görüntü etiketleri, Manifest şablonları, Utils) yayımlar.
  • Uygulamayı Geliştirme ortamına dağıtır.
    • GitOps deposuna bildirimler oluşturur.
    • Onay için GitOps deposuna bir PR (çekme isteği) oluşturur.

Bu adımlar tamamlandıktan sonra:

  1. GitOps deposuna pipeline tarafından oluşturulan çekme isteğini bulun.

  2. GitOps deposundaki değişiklikleri doğrulayın. Şunu görmeniz gerekir:

    • Üst düzey Helm şablonu değişiklikleri.
    • İstenen durumdaki temel değişiklikleri gösteren düşük seviyeli Kubernetes manifestleri. Flux bu bildirimleri dağıtır.
  3. Her şey iyi görünüyorsa pr'yi onaylayın ve tamamlayın.

  4. Birkaç dakika sonra Flux değişikliği alır ve dağıtımı başlatır.

  5. git commit İşleme geçmişi sekmesinde durumu izleyin. succeeded olduktan sonra CD Stage iş akışı başlatılır.

  6. Portu kubectl kullanarak yerel olarak iletin ve uygulamanın doğru şekilde çalıştığından emin olun.

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Tarayıcınızda, Azure Vote uygulamasını http://localhost:8080/ adresinde görüntüleyin.

  8. 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 İsteği (Pull Request) oluşturur.

Dökümanlar için yapılan çekme isteği Aşama ortamına birleştirildiğinde ve Flux tüm değişiklikleri başarıyla uyguladığında, GitOps deposundaki 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ı temizle

Bu uygulamayı kullanmaya devam etmeyecekseniz aşağıdaki adımlarla tüm kaynakları silin:

  1. 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
    
  2. 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, DevOps'un uygulandığı, uygulama geliştirmenin dağıtımdan başlayarak yapıldığı 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 elle onaylarla kontrol edilir.

Azure Arc özellikli Kubernetes ile GitOps ve yapılandırmalar hakkında daha fazla bilgi edinmek için kavramsal makalemize ilerleyin.