Tutorial: mengimplementasikan CI/CD dengan GitOps (Flux v2)

Dalam tutorial ini, Anda akan menyiapkan solusi CI/CD menggunakan GitOps dengan Flux v2 dan kluster Kubernetes atau Azure Kubernetes Service (AKS) dengan dukungan Azure Arc. Dengan menggunakan contoh aplikasi Azure Vote, Anda akan:

  • Buat kluster Kubernetes atau AKS dengan dukungan Azure Arc.
  • Sambungkan aplikasi dan repositori GitOps Anda ke Azure Repos atau Git Hub.
  • Terapkan alur CI/CD dengan Azure Pipelines atau GitHub.
  • Sambungkan Azure Container Registry Anda ke Azure DevOps dan Kubernetes.
  • Buat grup variabel lingkungan atau rahasia.
  • Menyebarkan lingkungan dev dan stage.
  • Uji lingkungan aplikasi.

Catatan

Akhirnya Azure akan berhenti mendukung GitOps dengan Flux v1, jadi mulailah menggunakan Flux v2 sesegera mungkin.

Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.

Menggunakan Azure Cloud Shell

Azure meng-hosting Azure Cloud Shell, lingkungan shell interaktif yang dapat Anda gunakan melalui browser. Anda dapat menggunakan Bash atau PowerShell dengan Cloud Shell untuk bekerja dengan layanan Azure. Anda dapat menggunakan perintah Cloud Shell yang telah diinstal sebelumnya untuk menjalankan kode dalam artikel ini tanpa harus menginstal apa pun di lingkungan lokal Anda.

Untuk memulai Azure Cloud Shell:

Opsi Contoh/Tautan
Pilih Coba di sudut kanan atas blok kode. Memilih Coba tidak secara otomatis menyalin kode ke Cloud Shell. Cuplikan layar yang memperlihatkan contoh Coba untuk Azure Cloud Shell.
Buka https://shell.azure.com, atau pilih tombol Luncurkan Cloud Shell untuk membuka Cloud Shell di browser Anda. Cuplikan layar yang memperlihatkan cara meluncurkan Cloud Shell di jendela baru.
Pilih tombol Cloud Shell pada bilah menu di kanan atas di portal Microsoft Azure. Cuplikan layar yang memperlihatkan tombol Cloud Shell di portal Azure

Untuk menjalankan kode dalam artikel ini di Azure Cloud Shell:

  1. Mulai Cloud Shell.

  2. Pilih tombol Salin pada blok kode untuk menyalin kode.

  3. Tempelkan kode ke sesi Cloud Shell dengan memilih Ctrl+Shift+V di Windows dan Linux atau dengan memilih Cmd+Shift+V di macOS.

  4. Pilih Enter untuk menjalankan kode.

Prasyarat

  • Lengkapi tutorial sebelumnya untuk mempelajari cara menyebarkan GitOps untuk lingkungan CI/CD Anda.

  • Pahami manfaat dan arsitektur fitur ini.

  • Verifikasi bahwa Anda memiliki:

  • Instal versi terbaru dari ekstensi Kubernetes dan Kubernetes Configuration CLI dengan dukungan Azure Arc ini:

    az extension add --name connectedk8s
    az extension add --name k8s-configuration
    
    • Untuk memperbarui ekstensi ini menjadi versi terbaru, jalankan perintah berikut:

      az extension update --name connectedk8s
      az extension update --name k8s-configuration
      

Menyambungkan Azure Container Registry ke Kubernetes

Aktifkan kluster Kubernetes untuk menarik gambar dari Azure Container Registry. Jika bersifat pribadi, autentikasi akan diperlukan.

Menyambungkan Azure Container Registry ke kluster AKS yang ada

Integrasikan Azure Container Registry yang ada dengan kluster AKS yang ada menggunakan perintah berikut:

az aks update -n arc-cicd-cluster -g myResourceGroup --attach-acr arc-demo-acr

Membuat rahasia penarikan gambar

Untuk menyambungkan kluster non-AKS dan lokal ke Azure Container Registry Anda, buat rahasia penarikan gambar. Kube menggunakan rahasia penarikan citra untuk menyimpan informasi yang diperlukan untuk mengautentikasi registri Anda.

Buat rahasia penarikan citra dengan perintah kubectl berikut. Ulangi untuk namespace dev dan stage.

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>

Untuk menghindari harus mengatur imagePullSecret untuk setiap Pod, pertimbangkan untuk menambahkan imagePullSecret ke akun Layanan di namespacedev dan stage. Lihat tutorial Kube untuk informasi selengkapnya.

Bergantung pada orkestrator CI/CD yang Anda sukai, Anda dapat melanjutkan instruksi baik untuk Azure DevOps atau untuk GitHub.

Mengimplementasikan CI/CD dengan Azure DevOps

Tutorial ini mengasumsikan pemahaman terhadap Azure DevOps, Repositori dan Alur Azure, dan Azure CLI.

Pastikan untuk menyelesaikan hal berikut:

Mengimpor aplikasi dan repositori GitOps ke Azure Repos

Impor repositori aplikasi dan repositori GitOps ke Azure Repos. Untuk tutorial ini, gunakan contoh repositori berikut:

  • repositori aplikasi arc-cicd-demo-src

  • arc-cicd-demo-gitops Repositori GitOps

Pelajari selengkapnya tentang mengimpor repositori Git.

Catatan

Mengimpor dan menggunakan dua repositori terpisah untuk aplikasi dan repositori GitOps dapat meningkatkan keamanan dan kesederhanaan. Aplikasi serta izin dan visibilitas repositori GitOps bisa disetel secara individual. Misalnya, administrator klusterster mungkin tidak menemukan perubahan kode aplikasi yang relevan dengan status kluster yang diinginkan. Sebaliknya, pengembang aplikasi tidak perlu mengetahui parameter spesifik untuk setiap lingkungan - serangkaian nilai pengujian yang memberikan cakupan untuk parameter mungkin sudah cukup.

Menyambungkan repositori GitOps

Untuk terus menyebarkan aplikasi Anda, sambungkan repositori aplikasi ke kluster Anda menggunakan GitOps. Repositori GitOps arc-cicd-demo-gitops Anda berisi sumber daya dasar untuk membuat aplikasi Anda aktif dan berjalan di kluster arc-cicd-cluster Anda.

Repositori GitOps awal hanya berisi manifes yang membuat namespace dev dan stage yang sesuai dengan lingkungan penyebaran.

Koneksi GitOps yang Anda buat akan secara otomatis:

  • Sinkronkan manifes dalam direktori manifes.
  • Perbarui status kluster.

Alur kerja CI/CD akan mengisi direktori manifes dengan manifes tambahan untuk menyebarkan aplikasi.

  1. Buat koneksi GitOps baru ke repositori arc-cicd-demo-gitops yang baru diimpor di Azure Repos.

    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 managedClusters \
       --branch master \
       --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
    
  2. Periksa status penyebaran di portal Microsoft Azure.

    • Jika berhasil, Anda akan melihat keduanya, namespace dev dan stage yang dibuat di kluster Anda.
    • Anda juga dapat memeriksa halaman Portal Microsoft Azure kluster K8s Anda pada GitOps tab konfigurasi cluster-config dibuat.

Mengimpor alur CI/CD

Sekarang, setelah menyinkronkan koneksi GitOps, Anda harus mengimpor alur CI/CD yang membuat manifes.

Repositori aplikasi berisi .pipeline folder dengan alur yang akan Anda gunakan untuk PR, CI, dan CD. Impor dan ganti nama tiga alur yang disediakan dalam repositori sampel:

Nama file alur Deskripsi
.pipelines/az-vote-pr-pipeline.yaml Alur PR aplikasi, bernama arc-cicd-demo-src PR
.pipelines/az-vote-ci-pipeline.yaml Alur CI aplikasi, bernama arc-cicd-demo-src CI
.pipelines/az-vote-cd-pipeline.yaml Alur CD aplikasi, bernama arc-cicd-demo-src CD

Menyambungkan Azure Container Registry ke Azure DevOps

Selama proses CI, Anda akan menyebarkan kontainer aplikasi ke registri. Mulai dengan membuat koneksi layanan Azure:

  1. Di Azure DevOps, buka halaman Koneksi Layanan dari halaman pengaturan proyek. Di TFS, buka Layanan dari ikon pengaturan pada bilah menu bawah.
  2. Pilih + Koneksi layanan baru dan pilih jenis koneksi layanan yang Anda butuhkan.
  3. Isi parameter untuk koneksi layanan. Untuk tutorial ini:
    • Beri nama koneksi layanan arc-demo-acr.
    • Pilih myResourceGroup sebagai grup sumber daya.
  4. Pilih Memberikan izin akses ke semua alur.
    • Opsi ini mengotorisasi file alur YAML untuk koneksi layanan.
  5. Pilih OK untuk membuat koneksi.

Mengonfigurasi Koneksi Layanan PR

Alur CD memanipulasi PR di repositori GitOps. Ini memerlukan Koneksi Layanan untuk itu:

  1. Di Azure DevOps, buka halaman Koneksi Layanan dari halaman pengaturan proyek. Di TFS, buka Layanan dari ikon pengaturan pada bilah menu bawah.
  2. Pilih + Koneksi layanan baru dan pilih Generic jenis.
  3. Isi parameter untuk koneksi layanan. Untuk tutorial ini:
    • Server URL https://dev.azure.com/<Your organization>/<Your project>/_apis/git/repositories/arc-cicd-demo-gitops
    • Biarkan Nama Pengguna dan Kata Sandi kosong
    • Beri nama koneksi layanan azdo-pr-connection.
  4. Pilih Memberikan izin akses ke semua alur.
    • Opsi ini mengotorisasi file alur YAML untuk koneksi layanan.
  5. Pilih OK untuk membuat koneksi.

Menginstal Konektor GitOps

  1. Tambahkan repositori Konektor GitOps ke repositori Helm:
   helm repo add gitops-connector https://azure.github.io/gitops-connector/
  1. Instal konektor ke kluster:
   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>

Catatan

Azure Repos PAT token harus memiliki Build: Read & executee izin dan Code: Read .

  1. Konfigurasikan Flux untuk mengirim pemberitahuan ke konektor GitOps:
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

Untuk detail tentang penginstalan, lihat repositori Konektor GitOps .

Buat grup variabel lingkungan

Grup variabel repositori aplikasi

Buat grup variabel bernama az-vote-app-dev. Tetapkan nilai berikut:

Variabel Nilai
AZ_ACR_NAME (instans Azure Container Registry Anda, misalnya. azurearctest.azurecr.io)
AZURE_SUBSCRIPTION (Koneksi Layanan Azure Anda, harus berupa arc-demo-acr dari sebelumnya dalam tutorial)
AZURE_VOTE_IMAGE_REPO Jalur lengkap ke repositori Aplikasi Azure Vote, misalnya azurearctest.azurecr.io/azvote
ENVIRONMENT_NAME Dev
MANIFESTS_BRANCH master
MANIFESTS_REPO arc-cicd-demo-gitops
ORGANIZATION_NAME Nama organisasi Azure DevOps
PROJECT_NAME Nama proyek GitOps dalam Azure DevOps
REPO_URL URL lengkap untuk repositori GitOps
SRC_FOLDER azure-vote
TARGET_CLUSTER arc-cicd-cluster
TARGET_NAMESPACE dev
VOTE_APP_TITLE Aplikasi Pemungutan Suara
AKS_RESOURCE_GROUP Grup Sumber Daya AKS. Diperlukan untuk pengujian otomatis.
AKS_NAME Nama AKS. Diperlukan untuk pengujian otomatis.

Grup variabel lingkungan tahapan

  1. Lakukan kloning grup variabel az-vote-app-dev.
  2. Ubah nama menjadi az-vote-app-stage.
  3. Pastikan nilai berikut untuk variabel yang sesuai:
Variabel Nilai
ENVIRONMENT_NAME Tahap
TARGET_NAMESPACE stage

Sekarang Anda siap untuk menyebarkan ke lingkungan dev dan stage.

Membuat lingkungan

Dalam pembuatan DevStage dan lingkungan proyek Azure DevOps. Lihat Membuat dan menargetkan lingkungan untuk detail selengkapnya.

Memberikan lebih banyak izin ke layanan build

Alur CD menggunakan token keamanan build yang berjalan untuk mengautentikasi ke repositori GitOps. Diperlukan lebih banyak izin untuk alur guna membuat cabang baru, mendorong perubahan, dan membuat permintaan penarikan.

  1. Buka Project settings dari halaman utama proyek Azure DevOps.
  2. Pilih Repos/Repositories.
  3. Pilih Security.
  4. <Project Name> Build Service (<Organization Name>) Untuk dan untuk Project Collection Build Service (<Organization Name>) (ketik di bidang pencarian, jika tidak muncul), izinkan Contribute, Contribute to pull requests, dan Create branch.
  5. Buka Pipelines/Settings
  6. Opsi matikan Protect access to repositories in YAML pipelines

Untuk informasi selengkapnya, lihat:

Menyebarkan lingkungan dev untuk pertama kalinya

Dengan alur CI dan CD yang sudah dibuat, jalankan alur CI untuk menyebarkan aplikasi untuk pertama kalinya.

Alur CI

Selama alur CI awal berjalan, Anda mungkin menemui kesalahan otorisasi sumber daya dalam membaca nama koneksi layanan.

  1. Verifikasi variabel yang sedang diakses AZURE_SUBSCRIPTION.
  2. Otorisasi penggunaan.
  3. Jalankan ulang alur.

Alur CI:

  • Pastikan perubahan aplikasi melewati semua pemeriksaan kualitas otomatis untuk penyebaran.
  • Apakah ada validasi tambahan yang tidak bisa diselesaikan dalam alur PR.
    • Khusus untuk GitOps, alur juga menerbitkan artefak untuk penerapan yang akan digunakan oleh alur CD.
  • Memverifikasi citra Docker telah berubah dan citra baru didorong.

Alur CD

Selama alur CD awal berjalan, Anda akan diminta untuk memberikan akses alur ke repositori GitOps. Pilih Tampilkan saat diminta bahwa alur memerlukan izin untuk mengakses sumber daya. Kemudian, pilih Izin untuk memberikan izin menggunakan repositori GitOps untuk menjalankan alur saat ini dan di masa mendatang.

Berhasil menjalankan alur CI memicu alur CD untuk menyelesaikan proses penyebaran. Anda akan menyebarkan ke setiap lingkungan secara bertahap.

Tip

Jika alur CD tidak memicu secara otomatis:

  1. Memverifikasi bahwa nama sesuai dengan pemicu cabang di .pipelines/az-vote-cd-pipeline.yaml
    • Properti tersebut seharusnya arc-cicd-demo-src CI.
  2. Jalankan ulang alur CI.

Setelah templat dan manifes berubah ke repositori GitOps dibuat, alur CD akan membuat penerapan, mendorongnya, dan membuat PR untuk disetujui.

  1. Temukan PR yang dibuat oleh alur ke repositori GitOps.

  2. Verifikasi perubahan pada repositori GitOps. Anda harus melihat:

    • Perubahan templat Helm tingkat tinggi.
    • Manifes Kube tingkat rendah yang menunjukkan perubahan yang mendasari status yang diharapkan. Fluks menyebarkan manifes ini.
  3. Jika semuanya tampak bagus, setujui dan lengkapi PR.

  4. Setelah beberapa menit, Flux mengambil perubahan dan memulai penyebaran.

  5. Pantau status Penerapan Git pada tab Terapkan riwayat. Setelah alur succeeded CD akan dilanjutkan dan mulai pengujian otomatis

  6. Alihkan port secara lokal menggunakan kubectl dan pastikan aplikasi berfungsi dengan benar menggunakan:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Lihat aplikasi Azure Vote pada browser Anda di http://localhost:8080/.

  8. Berikan suara untuk favorit Anda dan bersiaplah untuk membuat beberapa perubahan pada aplikasi.

Menyiapkan persetujuan lingkungan

Setelah penyebaran aplikasi, Anda tidak hanya bisa membuat perubahan pada kode atau templat, tetapi Anda secara tidak sengaja juga bisa menempatkan kluster dalam status buruk.

Jika lingkungan dev menyatakan putus setelah penyebaran, jaga agar tidak meluas ke lingkungan selanjutnya menggunakan persetujuan lingkungan.

  1. Pada proyek Azure DevOps Anda, buka lingkungan yang perlu dilindungi.
  2. Nagivasi Persetujuan dan Pemeriksaan untuk sumber daya.
  3. Pilih Buat.
  4. Sediakan pemberi izin dan pesan opsional.
  5. Pilih Buat lagi untuk menyelesaikan pemeriksaan persetujuan manual tambahan.

Untuk informasi selengkapnya, lihat tutorial Menentukan persetujuan dan pemeriksaan.

Saat berikutnya alur CD berjalan, alur akan melakukan jeda setelah pembuatan PR GitOps. Verifikasi perubahan telah disinkronkan dengan benar dan melewati fungsionalitas dasar. Setujui pemeriksaan dari alur untuk memungkinkan perubahan mengalir ke lingkungan berikutnya.

Membuat perubahan aplikasi

Dengan set garis besar templat dan manifes yang merepresentasikan status pada kluster, Anda akan membuat perubahan kecil pada aplikasi.

  1. Di repositori arc-cicd-demo-src , edit azure-vote/src/azure-vote-front/config_file.cfg file.

  2. Karena "Cats vs Dogs" tidak mendapatkan cukup suara, ubah menjadi "Tabs vs Spaces" untuk meningkatkan penghitungan suara.

  3. Terapkan perubahan di cabang baru, dorong, dan buat permintaan penarikan.

    • Ini adalah alur pengembang khas yang akan memulai siklus hidup CI/CD.

Alur validasi PR

Alur PR adalah garis pertahanan pertama terhadap perubahan yang salah. Pemeriksaan kualitas kode aplikasi yang biasa mencakup linting dana analisis statis. Dari perspektif GitOps, Anda juga perlu memastikan kualitas yang sama untuk infrastruktur yang dihasilkan untuk disebarkan.

Bagan Dockerfile dan Helm aplikasi bisa menggunakan linting dengan cara yang sama pada aplikasi.

Kesalahan yang ditemukan selama rentang linting dari:

  • Salah memformat file YAML, untuk
  • Saran praktik terbaik, seperti mengatur batas CPU dan Memori untuk aplikasi Anda.

Catatan

Untuk mendapatkan cakupan terbaik dari linting Helm dalam aplikasi nyata, Anda harus mengganti nilai yang cukup mirip dengan yang digunakan dalam lingkungan nyata.

Kesalahan yang ditemukan selama eksekusi alur muncul di bagian hasil pengujian dari penjalanan. Setelahnya, Anda bisa:

  • Melacak statistik yang berguna pada jenis kesalahan.
  • Menemukan penerapan pertama yang terdeteksi.
  • Menumpuk gaya pelacakan yang terhubung ke bagian kode yang menyebabkan kesalahan.

Setelah alur selesai berjalan, Anda telah memastikan kualitas kode aplikasi dan templat yang akan menyebarkannya. Anda sekarang bisa menyetujui dan menyelesaikan PR. CI akan berjalan lagi, meregenerasi templat dan manifes, sebelum memicu alur CD.

Tip

Dalam lingkungan nyata, jangan lupa tetapkan kebijakan cabang untuk memastikan PR lolos dalam pemeriksaan kualitas Anda. Untuk informasi selengkapnya, lihat artikel Set kebijakan cabang.

Persetujuan proses CD

Berhasil menjalankan alur CI memicu alur CD untuk menyelesaikan proses penyebaran. Kali ini, alur mengharuskan Anda untuk menyetujui setiap lingkungan penyebaran.

  1. Setujui penyebaran ke lingkungan dev.
  2. Setelah templat dan manifes berubah ke repositori GitOps dibuat, alur CD akan membuat penerapan, mendorongnya, dan membuat PR untuk disetujui.
  3. Verifikasi perubahan pada repositori GitOps. Anda harus melihat:
    • Perubahan templat Helm tingkat tinggi.
    • Manifes Kube tingkat rendah yang menunjukkan perubahan yang mendasari status yang diharapkan.
  4. Jika semuanya tampak bagus, setujui dan lengkapi PR.
  5. Tunggu hingga penyebaran selesai.
  6. Sebagai pengujian asap dasar, navigasi ke halaman aplikasi dan verifikasi aplikasi pemungutan suara kini menampilkan Tab vs Ruang.
    • Alihkan port secara lokal menggunakan kubectl dan pastikan aplikasi berfungsi dengan benar menggunakan: kubectl port-forward -n dev svc/azure-vote-front 8080:80
    • Lihat aplikasi Azure Vote di browser Anda di http://localhost:8080/ dan verifikasi pilihan pemungutan suara telah berubah menjadi Tab vs Ruang.
  7. Ulangi langkah 1-7 untuk lingkungan stage.

Penyebaran Anda sekarang sudah selesai. Ini mengakhiri alur kerja CI/CD. Lihat diagram Alur GitOps Azure DevOps di repositori aplikasi yang menjelaskan secara rinci langkah-langkah dan teknik yang diterapkan dalam alur CI/CD yang digunakan dalam tutorial ini.

Menerapkan CI/CD dengan GitHub

Tutorial ini mengasumsikan keakraban dengan GitHub, GitHub Actions.

Aplikasi Fork dan repositori GitOps

Fork repositori aplikasi dan repositori GitOps. Untuk tutorial ini, gunakan contoh repositori berikut:

Menyambungkan repositori GitOps

Untuk terus menyebarkan aplikasi Anda, sambungkan repositori aplikasi ke kluster Anda menggunakan GitOps. Repositori GitOps arc-cicd-demo-gitops Anda berisi sumber daya dasar untuk membuat aplikasi Anda aktif dan berjalan di kluster arc-cicd-cluster Anda.

Repositori GitOps awal hanya berisi manifes yang membuat namespace dev dan stage yang sesuai dengan lingkungan penyebaran.

Koneksi GitOps yang Anda buat akan secara otomatis:

  • Sinkronkan manifes dalam direktori manifes.
  • Perbarui status kluster.

Alur kerja CI/CD akan mengisi direktori manifes dengan manifes tambahan untuk menyebarkan aplikasi.

  1. Buat koneksi GitOps baru ke repositori arc-cicd-demo-gitops yang baru di-fork di GitHub.

    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 managedClusters \
       --branch master \
       --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
    
  2. Periksa status penyebaran di portal Microsoft Azure.

    • Jika berhasil, Anda akan melihat keduanya, namespace dev dan stage yang dibuat di kluster Anda.

Menginstal Konektor GitOps

  1. Tambahkan repositori Konektor GitOps ke repositori Helm:
   helm repo add gitops-connector https://azure.github.io/gitops-connector/
  1. Instal konektor ke kluster:
   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>
  1. Konfigurasikan Flux untuk mengirim pemberitahuan ke konektor GitOps:
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

Untuk detail tentang penginstalan, lihat repositori Konektor GitOps .

Membuat rahasia GitHub

Membuat rahasia repositori GitHub

Rahasia Nilai
AZURE_CREDENTIALS Kredensial untuk Azure dalam format berikut {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"}
AZURE_VOTE_IMAGE_REPO Jalur lengkap ke repositori Aplikasi Azure Vote, misalnya azurearctest.azurecr.io/azvote
MANIFESTS_BRANCH master
MANIFESTS_FOLDER arc-cicd-cluster
MANIFESTS_REPO https://github.com/your-organization/arc-cicd-demo-gitops
VOTE_APP_TITLE Aplikasi Pemungutan Suara
AKS_RESOURCE_GROUP Grup Sumber Daya AKS. Diperlukan untuk pengujian otomatis.
AKS_NAME Nama AKS. Diperlukan untuk pengujian otomatis.
PAT Token GitHub PAT dengan izin ke PR ke repositori GitOps

Membuat rahasia lingkungan GitHub

  1. Buat az-vote-app-dev lingkungan dengan rahasia berikut:
Rahasia Nilai
ENVIRONMENT_NAME Dev
TARGET_NAMESPACE dev
  1. Buat az-vote-app-stage lingkungan dengan rahasia berikut:
Rahasia Nilai
ENVIRONMENT_NAME Tahap
TARGET_NAMESPACE stage

Sekarang Anda siap untuk menyebarkan ke lingkungan dev dan stage.

Alur kerja Dev CI/CD

Untuk memulai alur kerja CI/CD Dev, ubah kode sumber. Di repositori aplikasi, perbarui nilai dalam .azure-vote/src/azure-vote-front/config_file.cfg file dan dorong perubahan ke repositori.

Alur kerja Dev CI/CD:

  • Pastikan perubahan aplikasi melewati semua pemeriksaan kualitas otomatis untuk penyebaran.
  • Apakah ada validasi tambahan yang tidak bisa diselesaikan dalam alur PR.
  • Memverifikasi citra Docker telah berubah dan citra baru didorong.
  • Menerbitkan artefak (tag gambar Docker, templat Manifes, Utils) yang akan digunakan oleh tahap CD berikut.
  • Menyebarkan aplikasi ke lingkungan Dev.
    • Menghasilkan manifes ke repositori GitOps
    • Membuat PR ke repositori GitOps untuk disetujui
  1. Temukan PR yang dibuat oleh alur ke repositori GitOps.

  2. Verifikasi perubahan pada repositori GitOps. Anda harus melihat:

    • Perubahan templat Helm tingkat tinggi.
    • Manifes Kube tingkat rendah yang menunjukkan perubahan yang mendasari status yang diharapkan. Fluks menyebarkan manifes ini.
  3. Jika semuanya tampak bagus, setujui dan lengkapi PR.

  4. Setelah beberapa menit, Flux mengambil perubahan dan memulai penyebaran.

  5. Pantau status Penerapan Git pada tab Terapkan riwayat. succeededCD Stage Setelah alur kerja dimulai

  6. Alihkan port secara lokal menggunakan kubectl dan pastikan aplikasi berfungsi dengan benar menggunakan:

    kubectl port-forward -n dev svc/azure-vote-front 8080:80
    
  7. Lihat aplikasi Azure Vote pada browser Anda di http://localhost:8080/.

  8. Berikan suara untuk favorit Anda dan bersiaplah untuk membuat beberapa perubahan pada aplikasi.

Alur kerja Tahap CD

Alur kerja Tahap CD dimulai secara otomatis setelah Flux berhasil menyebarkan aplikasi ke lingkungan dev dan memberi tahu tindakan GitHub melalui GitOps Connector.

Alur kerja Tahap CD:

  • Menjalankan uji asap aplikasi terhadap lingkungan Dev
  • Menyebarkan aplikasi ke lingkungan Tahap.
    • Menghasilkan manifes ke repositori GitOps
    • Membuat PR ke repositori GitOps untuk disetujui

Setelah manifes PR ke lingkungan Tahapan digabungkan dan Flux berhasil menerapkan semua perubahan, ia memperbarui status penerapan Git di repositori GitOps.

Penyebaran Anda sekarang sudah selesai. Ini mengakhiri alur kerja CI/CD. Lihat diagram GitOps Flow GitHub di repositori aplikasi yang menjelaskan secara rinci langkah-langkah dan teknik yang diterapkan dalam alur kerja CI/CD yang digunakan dalam tutorial ini.

Membersihkan sumber daya

Jika Anda akan berhenti menggunakan aplikasi ini, hapus sumber daya mana pun menggunakan langkah berikut:

  1. Hapus koneksi konfigurasi Azure Arc GitOps:

    az k8s-configuration flux delete \
          --name cluster-config \
          --cluster-name arc-cicd-cluster \
          --resource-group myResourceGroup \
          -t managedClusters --yes
    
  2. Hapus Konektor GitOps:

    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
    

Langkah berikutnya

Dalam tutorial ini, Anda telah menyiapkan alur kerja CI/CD lengkap yang mengimplementasikan Azure DevOps dari pengembangan aplikasi melalui penyebaran. Perubahan pada aplikasi secara otomatis memicu validasi dan penyebaran, dibatasi oleh persetujuan manual.

Lanjutkan ke artikel konseptual kami untuk mempelajari lebih lanjut tentang GitOps dan konfigurasi dengan Kube yang didukung Azure Arc.