Bagikan melalui


Alur kerja CI/CD menggunakan GitOps - Kubernetes yang mendukung Azure Arc

Penting

Alur kerja yang dijelaskan dalam dokumen ini menggunakan GitOps dengan Flux v1. GitOps dengan Flux v2 sekarang tersedia untuk kluster Kubernetes dan Azure Kubernetes Service (AKS) dengan dukungan Azure Arc; pelajari tentang alur kerja CI/CD menggunakan GitOps dengan Flux v2. Sebaiknya migrasi ke Flux v2 sesegera mungkin.

Dukungan untuk sumber daya konfigurasi kluster berbasis Flux v1 yang dibuat sebelum 1 Januari 2024 akan berakhir pada 24 Mei 2025. Mulai 1 Januari 2024, Anda tidak akan dapat membuat sumber daya konfigurasi kluster berbasis Flux v1 baru.

Penyebaran Kubernetes modern menampung banyak aplikasi, kluster, dan lingkungan. Dengan GitOps, Anda dapat mengelola pengaturan yang rumit ini dengan lebih mudah, melacak status lingkungan Kubernetes yang diinginkan secara deklaratif dengan Git. Dengan menggunakan alat Git umum untuk melacak status kluster, Anda dapat meningkatkan akuntabilitas, memudahkan investigasi kesalahan, dan mengaktifkan otomatisasi untuk mengelola lingkungan.

Gambaran umum konseptual ini menjelaskan GitOps sebagai realitas dalam siklus hidup perubahan aplikasi lengkap menggunakan Azure Arc, Azure Repos, dan Azure Pipelines. Langsung ke contoh perubahan aplikasi tunggal ke lingkungan Kubernetes yang dikontrol GitOps.

Arsitektur

Pertimbangkan aplikasi yang disebarkan ke satu atau beberapa lingkungan Kubernetes.

GitOps CI/CD architecture

Repositori aplikasi

Repositori aplikasi berisi kode aplikasi yang dikerjakan pengembang selama perulangan dalam mereka. Templat penyebaran aplikasi berlangsung di repositori ini dalam bentuk umum, seperti Helm atau Kustomize. Nilai spesifik lingkungan tidak disimpan. Perubahan pada repositori ini memanggil alur PR atau CI yang memulai proses penyebaran.

Container Registry

Registri kontainer menyimpan semua gambar pihak pertama dan ketiga yang digunakan di lingkungan Kubernetes. Beri tag pada gambar aplikasi pihak pertama dengan tag yang dapat dibaca manusia dan terapkan Git yang digunakan untuk membangun gambar. Cache gambar pihak ketiga untuk keamanan, kecepatan, dan ketahanan. Tetapkan rencana untuk pengujian dan integrasi pembaruan keamanan secara tepat waktu. Untuk informasi selengkapnya, lihat panduan ACR Menggunakan dan memelihara konten publik sebagai contoh.

Alur PR

PR ke repositori aplikasi dipagari pada keberhasilan menjalankan alur PR. Alur ini menjalankan gerbang kualitas dasar, seperti linting dan pengujian unit pada kode aplikasi. Pipeline menguji aplikasi dan lints Templat Dockerfiles dan Helm yang digunakan untuk penyebaran ke lingkungan Kubernetes. Gambar Docker harus dibangun dan diuji, tetapi tidak dikirim. Pastikan durasi alur relatif singkat untuk memungkinkan perulangan cepat.

CI Pipeline

Alur CI aplikasi menjalankan semua langkah alur PR dan memperluas pengujian dan pemeriksaan penyebaran. Alur dapat dijalankan untuk setiap penerapan, atau pada irama biasa dengan sekelompok penerapan. Pada tahap ini, lakukan pengujian aplikasi yang terlalu lama untuk alur PR. Dorong gambar Docker ke Container Registry setelah membangun persiapan untuk penyebaran. Templat yang diganti dapat dilapisi dengan serangkaian nilai pengujian. Gambar yang digunakan pada runtime layanan harus dilapisi, dibangun, dan diuji pada saat ini. Dalam build CI secara khusus, artefak diterbitkan untuk langkah CD untuk digunakan sebagai persiapan penyebaran.

Flux

Flux adalah layanan yang berjalan di setiap kluster dan bertanggung jawab mempertahankan status yang diinginkan. Layanan ini sering melakukan jajak pendapat repositori GitOps untuk perubahan pada klusternya dan menerapkannya.

Alur CD

Alur CD otomatis dipicu oleh build CI yang berhasil. Ini menggunakan templat yang diterbitkan sebelumnya, mengganti nilai lingkungan, dan membuka PR ke repositori GitOps untuk meminta perubahan pada status yang diinginkan dari satu atau beberapa kluster Kubernetes. Administrator kluster meninjau PR perubahan status dan menyetujui penggabungan ke repositori GitOps. Alur kemudian menunggu PR selesai, yang memungkinkan Flux untuk mengambil perubahan status.

Repositori GitOps

Repositori GitOps merepresentasikan status yang diinginkan saat ini dari semua lingkungan di seluruh kluster. Setiap perubahan pada repositori ini diambil oleh layanan Flux di setiap kluster dan disebarkan. PR dibuat dengan perubahan pada status yang diinginkan, ditinjau, dan digabungkan. PR ini berisi perubahan pada templat penyebaran dan manifes Kubernetes yang dihasilkan. Manifes render tingkat rendah memungkinkan pemeriksaan perubahan yang lebih hati-hati biasanya tidak terlihat di tingkat templat.

Kluster Kubernetes

Setidaknya satu kluster Kubernetes dengan dukungan Azure Arc melayani berbagai lingkungan yang diperlukan oleh aplikasi. Misalnya, satu kluster dapat melayani lingkungan dev dan QA melalui namespace layanan yang berbeda. Kluster kedua dapat memberikan pemisahan lingkungan yang lebih mudah dan kontrol yang lebih halus.

Contoh alur kerja

Sebagai pengembang aplikasi, Alice:

  • Menulis kode aplikasi.
  • Menentukan cara menjalankan aplikasi dalam kontainer Docker.
  • Menentukan templat yang menjalankan kontainer dan layanan dependen dalam kluster Kubernetes.

Meski Alice tau bahwa aplikasi membutuhkan kemampuan untuk berjalan di beberapa lingkungan, dia tidak mengetahui pengaturan khusus untuk setiap lingkungan.

Misalkan Alice ingin membuat perubahan aplikasi yang mengubah gambar Docker yang digunakan dalam templat penyebaran aplikasi.

  1. Alice mengubah templat penyebaran, mendorongnya ke cabang jarak jauh pada repositori aplikasi, dan membuka PR untuk ditinjau.
  2. Alice meminta timnya untuk meninjau perubahan tersebut.
    • Alur PR menjalankan validasi.
    • Setelah alur berhasil berjalan, tim menandatangani dan perubahan digabungkan.
  3. Alur CI memvalidasi perubahan Alice dan berhasil diselesaikan.
    • Perubahan tersebut aman untuk disebarkan ke kluster, dan artefak disimpan ke alur CI yang dijalankan.
  4. Perubahan Alice menggabungkan dan memicu alur CD.
    • Alur CD mengambil artefak yang disimpan oleh alur CI Alice yang dijalankan.
    • Alur CD mengganti templat dengan nilai khusus lingkungan, dan tahapan perubahan apa pun terhadap status kluster yang ada dalam repositori GitOps.
    • Alur CD membuat PR ke repositori GitOps dengan perubahan yang diinginkan pada status kluster.
  5. Tim Alice meninjau dan menyetujui PR-nya.
    • Perubahan digabungkan ke dalam cabang target yang sesuai dengan lingkungan.
  6. Dalam beberapa menit, Flux melihat perubahan dalam repositori GitOps dan menarik perubahan Alice.
    • Karena perubahan gambar Docker, pod aplikasi memerlukan pembaruan.
    • Flux menerapkan perubahan pada kluster.
  7. Alice menguji titik akhir aplikasi untuk memastikan penyebaran berhasil diselesaikan.

    Catatan

    Untuk lebih banyak lingkungan yang ditargetkan untuk penyebaran, alur CD mengulangi dengan membuat PR untuk lingkungan berikutnya dan mengulangi langkah 4-7. Proses ini banyak membutuhkan persetujuan tambahan untuk penyebaran atau lingkungan yang lebih berisiko, seperti perubahan terkait keamanan atau lingkungan produksi.

  8. Setelah semua lingkungan menerima penyebaran yang berhasil, alur telah selesai.

Langkah berikutnya

Pelajari lebih lanjut tentang membuat sambungan antara kluster Anda dan repositori Git sebagai sumber daya konfigurasi dengan Kubernetes yang didukung Azure Arc