Tutorial: mengimplementasikan CI/CD dengan GitOps (Flux v2)
Dalam tutorial ini, Anda menyiapkan solusi CI/CD menggunakan GitOps dengan kluster Flux v2 dan Kubernetes dengan dukungan Azure Arc atau Azure Kubernetes Service (AKS). Dengan menggunakan sampel aplikasi Azure Vote, Anda dapat:
- Sambungkan aplikasi Anda dan repositori GitOps ke Azure Devops (Azure Repos) atau GitHub.
- Terapkan alur CI/CD dengan Azure Pipelines atau GitHub.
- Hubungkan Azure Container Registry Anda ke Azure DevOps dan Kubernetes.
- Membuat grup variabel lingkungan atau rahasia.
- Menyebarkan lingkungan
dev
danstage
. - Uji lingkungan aplikasi.
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Prasyarat
Lengkapi tutorial sebelumnya untuk mempelajari cara menyebarkan GitOps untuk lingkungan CI/CD Anda.
Pahami manfaat dan arsitektur fitur ini.
Verifikasi bahwa Anda memiliki:
- Kluster Kube yang didukung Azure Arc yang terhubung bernama arc-cicd-cluster.
- Azure Container Registry yang terhubung dengan integrasi AKS atau autentikasi kluster non-AKS.
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
Atau untuk memperbarui ekstensi ini ke 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 anda untuk menarik gambar dari Azure Container Registry. Jika bersifat privat, autentikasi 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 citra
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
. Untuk informasi selengkapnya, lihat tutorial Kubernetes.
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 langkah-langkah berikut terlebih dahulu:
- Masuk ke Layanan Azure DevOps.
- Verifikasi bahwa Anda memiliki izin "Admin Build" dan "Admin Proyek" untuk Azure Repos dan Azure Pipelines.
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
- URL: https://github.com/Azure/arc-cicd-demo-src
- Berisi contoh Azure Vote App untuk disebarkan menggunakan GitOps.
- Impor repositori dengan nama
arc-cicd-demo-src
repositori GitOps arc-cicd-demo-gitops
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Berfungsi sebagai basis untuk sumber daya kluster Anda yang menampung Aplikasi Azure Vote.
- Impor repositori dengan nama
arc-cicd-demo-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 menyiapkan dan menjalankan aplikasi Anda di kluster arc-cicd-cluster Anda.
Repositori GitOps awal hanya berisi manifes yang membuat namespace layanan dev dan stage yang sesuai dengan lingkungan penyebaran.
Koneksi GitOps yang Anda buat secara otomatis menyinkronkan manifes di direktori manifes dan memperbarui status kluster.
Alur kerja CI/CD mengisi direktori manifes dengan manifes tambahan untuk menyebarkan aplikasi.
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 connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
Tip
Untuk kluster AKS (bukan kluster berkemampuan Arc), gunakan
-cluster-type managedClusters
.Periksa status penyebaran di portal Microsoft Azure.
- Jika berhasil, Anda akan melihat namespace
dev
layanan danstage
yang dibuat di kluster Anda. - Anda juga dapat mengonfirmasi bahwa pada halaman portal Azure kluster Anda, konfigurasi
cluster-config
dibuat pada tabGitOps
.
- Jika berhasil, Anda akan melihat namespace
Mengimpor alur CI/CD
Sekarang setelah Anda menyinkronkan koneksi GitOps, Anda perlu mengimpor alur CI/CD yang membuat manifes.
Repositori aplikasi berisi folder dengan alur yang .pipeline
digunakan 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 menyebarkan kontainer aplikasi ke registri. Mulailah dengan membuat koneksi layanan Azure:
- Di Azure DevOps, buka halaman Koneksi Layanan dari halaman pengaturan proyek. Di TFS, buka Layanan dari ikon pengaturan pada bilah menu bawah.
- Pilih + Koneksi layanan baru dan pilih jenis koneksi layanan yang Anda butuhkan.
- Isi parameter untuk koneksi layanan. Untuk tutorial ini:
- Beri nama koneksi layanan arc-demo-acr.
- Pilih myResourceGroup sebagai grup sumber daya.
- Pilih Memberikan izin akses ke semua alur.
- Opsi ini mengotorisasi file alur YAML untuk koneksi layanan.
- Pilih Simpan untuk membuat koneksi.
Mengonfigurasi koneksi layanan PR
Alur CD memanipulasi permintaan pull (PR) di repositori GitOps, yang memerlukan koneksi layanan. Untuk mengonfigurasi koneksi ini:
- Di Azure DevOps, buka halaman Koneksi Layanan dari halaman pengaturan proyek. Di TFS, buka Layanan dari ikon pengaturan pada bilah menu bawah.
- Pilih + Koneksi layanan baru dan pilih
Generic
jenis. - 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.
- Server URL
- Pilih Memberikan izin akses ke semua alur.
- Opsi ini mengotorisasi file alur YAML untuk koneksi layanan.
- Pilih Simpan untuk membuat koneksi.
Menginstal Konektor GitOps
Tambahkan repositori Konektor GitOps ke repositori Helm:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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 memilikiBuild: Read & execute
izin danCode: Full
.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 |
---|---|
AZURE_SUBSCRIPTION |
(Koneksi Layanan Azure Anda, harus berupa arc-demo-acr dari sebelumnya dalam tutorial) |
AZ_ACR_NAME |
Nama Azure ACR, misalnya arc-demo-acr |
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
Lakukan kloning grup variabel az-vote-app-dev.
Ubah nama menjadi az-vote-app-stage.
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 proyek Azure DevOps Anda, buat Dev
dan Stage
lingkungan. Untuk detailnya, lihat Membuat dan menargetkan lingkungan.
Memberikan lebih banyak izin ke layanan build
Alur CD menggunakan token keamanan build yang berjalan untuk mengautentikasi ke repositori GitOps. Lebih banyak izin diperlukan agar alur membuat cabang baru, mendorong perubahan, dan membuat PR. Untuk mengaktifkan izin ini:
- Di Azure DevOps, buka Pengaturan proyek.
- Di bawah Repositori, pilih Repositori.
- Pilih Keamanan.
- Temukan
<Project Name> Build Service (<Organization Name>)
danProject Collection Build Service (<Organization Name>)
(gunakan pencarian jika Anda tidak melihatnya), dan izinkan Kontribusi, Kontribusi ke permintaan pull, dan Buat cabang. - Di bawah Alur, pilih Pengaturan.
- Nonaktifkan opsi Lindungi akses ke repositori di alur YAML.
Untuk informasi selengkapnya, lihat Memberikan izin kontrol versi ke layanan build dan Mengelola izin akun layanan build.
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 eksekusi alur CI awal, jika Anda melihat kesalahan otorisasi sumber daya dalam membaca nama koneksi layanan, lakukan hal berikut:
- Verifikasi variabel yang sedang diakses AZURE_SUBSCRIPTION.
- Otorisasi penggunaan.
- 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 eksekusi alur CD awal, Anda perlu memberikan akses alur ke repositori GitOps. Pilih Tampilkan saat diminta bahwa alur memerlukan izin untuk mengakses sumber daya. Kemudian, pilih Izin untuk memberikan izin untuk menggunakan repositori GitOps untuk eksekusi alur saat ini dan di masa mendatang.
Berhasil menjalankan alur CI memicu alur CD untuk menyelesaikan proses penyebaran. Anda menyebarkan ke setiap lingkungan secara bertahap.
Tip
Jika alur CD tidak memicu secara otomatis:
- Memverifikasi bahwa nama sesuai dengan pemicu cabang di
.pipelines/az-vote-cd-pipeline.yaml
- Properti tersebut seharusnya
arc-cicd-demo-src CI
.
- Properti tersebut seharusnya
- Jalankan ulang alur CI.
Setelah templat dan manifes berubah ke repositori GitOps dihasilkan, alur CD membuat penerapan, mendorongnya, dan membuat PR untuk disetujui.
Temukan PR yang dibuat oleh alur ke repositori GitOps.
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.
Jika semuanya tampak bagus, setujui dan lengkapi PR.
Setelah beberapa menit, Flux mengambil perubahan dan memulai penyebaran.
git commit
Pantau status pada tab Terapkan riwayat. Setelah itusucceeded
, alur CD mulai pengujian otomatis.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 pada browser Anda di
http://localhost:8080/
.Berikan suara untuk favorit Anda dan bersiaplah untuk membuat beberapa perubahan pada aplikasi.
Menyiapkan persetujuan lingkungan
Setelah penyebaran aplikasi, Anda dapat membuat perubahan pada kode atau templat, tetapi Anda juga dapat secara tidak sengaja menempatkan kluster ke dalam keadaan buruk.
Jika lingkungan dev mengungkapkan jeda setelah penyebaran, mengaktifkan persetujuan lingkungan membantu menjaga masalah dari lingkungan selanjutnya.
- Pada proyek Azure DevOps Anda, buka lingkungan yang perlu dilindungi.
- Nagivasi Persetujuan dan Pemeriksaan untuk sumber daya.
- Pilih Buat.
- Sediakan pemberi izin dan pesan opsional.
- Pilih Buat lagi untuk menyelesaikan pemeriksaan persetujuan manual tambahan.
Untuk informasi selengkapnya, lihat Menentukan persetujuan dan pemeriksaan.
Saat berikutnya alur CD berjalan, alur akan melakukan jeda setelah pembuatan PR GitOps. Verifikasi bahwa perubahan disinkronkan dengan benar dan meneruskan fungsionalitas dasar. Setujui pemeriksaan dari alur untuk memungkinkan perubahan mengalir ke lingkungan berikutnya.
Membuat perubahan aplikasi
Dengan kumpulan dasar templat dan manifes ini yang mewakili status pada kluster, Anda membuat perubahan kecil pada aplikasi.
Di repositori arc-cicd-demo-src, edit
azure-vote/src/azure-vote-front/config_file.cfg
file.Karena "Cats vs Dogs" tidak mendapatkan cukup suara, ubah menjadi "Tabs vs Spaces" untuk meningkatkan penghitungan suara.
Terapkan perubahan di cabang baru, dorong, dan buat permintaan penarikan. Urutan langkah ini adalah alur pengembang khas yang 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 file YAML yang salah diformat, hingga saran praktik terbaik, seperti mengatur batas CPU dan Memori untuk aplikasi Anda.
Catatan
Untuk mendapatkan cakupan terbaik dari Helm linting dalam aplikasi nyata, ganti nilai yang cukup mirip dengan nilai yang akan digunakan di 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.
Eksekusi alur selesai, mengonfirmasi kualitas kode aplikasi dan templat yang menyebarkannya. Anda sekarang bisa menyetujui dan menyelesaikan PR. CI berjalan lagi, meregenerasi templat dan manifes, sebelum memicu alur CD.
Tip
Di lingkungan nyata, pastikan untuk menetapkan kebijakan cabang untuk memastikan PR melewati pemeriksaan kualitas Anda. Untuk informasi selengkapnya, lihat Kebijakan dan pengaturan 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.
- Setujui penyebaran ke lingkungan
dev
. - Setelah templat dan manifes berubah ke repositori GitOps dibuat, alur CD membuat penerapan, mendorongnya, dan membuat PR untuk disetujui.
- Verifikasi perubahan pada repositori GitOps. Anda akan melihat:
- Perubahan templat Helm tingkat tinggi.
- Manifes Kube tingkat rendah yang menunjukkan perubahan yang mendasari status yang diharapkan.
- Jika semuanya tampak bagus, setujui dan lengkapi PR.
- Tunggu hingga penerapan selesai.
- Sebagai uji asap dasar, navigasikan ke halaman aplikasi dan verifikasi aplikasi pemungutan suara sekarang menampilkan Tab vs Spasi.
- 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.
- Alihkan port secara lokal menggunakan
- Ulangi langkah 1-7 untuk lingkungan
stage
.
Penyebaran sekarang selesai.
Untuk gambaran umum terperinci tentang semua langkah dan teknik yang diterapkan dalam alur kerja CI/CD yang digunakan dalam tutorial ini, lihat diagram Alur GitOps Azure DevOps.
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:
repositori aplikasi arc-cicd-demo-src
- URL: https://github.com/Azure/arc-cicd-demo-src
- Berisi contoh Azure Vote App untuk disebarkan menggunakan GitOps.
repositori GitOps arc-cicd-demo-gitops
- URL: https://github.com/Azure/arc-cicd-demo-gitops
- Berfungsi sebagai basis untuk sumber daya kluster Anda yang menampung Aplikasi Azure Vote.
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 menyiapkan dan menjalankan aplikasi Anda di kluster arc-cicd-cluster Anda.
Repositori GitOps awal hanya berisi manifes yang membuat namespace layanan dev dan stage yang sesuai dengan lingkungan penyebaran.
Koneksi GitOps yang Anda buat secara otomatis:
- Sinkronkan manifes dalam direktori manifes.
- Perbarui status kluster.
Alur kerja CI/CD mengisi direktori manifes dengan manifes tambahan untuk menyebarkan aplikasi.
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 connectedClusters \ --branch master \ --kustomization name=cluster-config prune=true path=arc-cicd-cluster/manifests
Periksa status penyebaran di portal Microsoft Azure.
- Jika berhasil, Anda akan melihat namespace
dev
layanan danstage
yang dibuat di kluster Anda.
- Jika berhasil, Anda akan melihat namespace
Menginstal Konektor GitOps
Tambahkan repositori Konektor GitOps ke repositori Helm:
helm repo add gitops-connector https://azure.github.io/gitops-connector/
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>
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
Langkah selanjutnya adalah membuat repositori GitHub dan rahasia lingkungan.
Membuat rahasia repositori GitHub
Gunakan nilai berikut untuk rahasia repositori GitHub Anda:
Rahasia | Nilai |
---|---|
AZURE_CREDENTIALS |
Kredensial untuk Azure dalam format berikut {"clientId":"GUID","clientSecret":"GUID","subscriptionId":"GUID","tenantId":"GUID"} |
AZ_ACR_NAME |
Nama Azure ACR, misalnya 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 |
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
- Buat
az-vote-app-dev
lingkungan dengan rahasia berikut:
Rahasia | Nilai |
---|---|
ENVIRONMENT_NAME |
Dev |
TARGET_NAMESPACE |
dev |
- 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 CI/CD Dev
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 digunakan oleh tahap CD berikut.
- Menyebarkan aplikasi ke lingkungan Dev.
- Menghasilkan manifes ke repositori GitOps.
- Membuat PR ke repositori GitOps untuk disetujui.
Setelah langkah-langkah ini selesai:
Temukan PR yang dibuat oleh alur ke repositori GitOps.
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.
Jika semuanya tampak bagus, setujui dan lengkapi PR.
Setelah beberapa menit, Flux mengambil perubahan dan memulai penyebaran.
git commit
Pantau status pada tab Terapkan riwayat. Setelah itu ,succeeded
CD Stage
alur kerja dimulai.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 pada browser Anda di
http://localhost:8080/
.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 pengujian 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 Stage digabungkan dan Flux berhasil menerapkan semua perubahan, status penerapan Git diperbarui di repositori GitOps. Penyebaran sekarang selesai.
Untuk gambaran umum terperinci tentang semua langkah dan teknik yang diterapkan dalam alur kerja CI/CD yang digunakan dalam tutorial ini, lihat diagram GitOps Flow GitHub.
Membersihkan sumber daya
Jika Anda akan berhenti menggunakan aplikasi ini, hapus sumber daya mana pun menggunakan langkah berikut:
Hapus koneksi konfigurasi Azure Arc GitOps:
az k8s-configuration flux delete \ --name cluster-config \ --cluster-name arc-cicd-cluster \ --resource-group myResourceGroup \ -t connectedClusters --yes
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 menyiapkan alur kerja CI/CD lengkap yang mengimplementasikan 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.