Konsep Argo CD - Amazon EKS

Bantu tingkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konsep Argo CD

Argo CD mengimplementasikan GitOps dengan memperlakukan Git sebagai satu-satunya sumber kebenaran untuk penerapan aplikasi Anda. Topik ini berjalan melalui contoh praktis, kemudian menjelaskan konsep inti yang perlu Anda pahami ketika bekerja dengan Kemampuan EKS untuk Argo CD.

Memulai dengan Argo CD

Setelah membuat kemampuan Argo CD (lihatMembuat kemampuan Argo CD), Anda dapat mulai menerapkan aplikasi. Contoh ini berjalan melalui pendaftaran cluster dan membuat Aplikasi.

Langkah 1: Mengatur

Daftarkan cluster Anda (wajib)

Daftarkan cluster tempat Anda ingin menyebarkan aplikasi. Untuk contoh ini, kami akan mendaftarkan cluster yang sama di mana Argo CD berjalan (Anda dapat menggunakan nama in-cluster untuk kompatibilitas dengan sebagian besar contoh Argo CD):

# Get your cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster using Argo CD CLI argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default
catatan

Untuk informasi tentang mengonfigurasi CLI CD Argo agar berfungsi dengan kemampuan Argo CD di EKS, lihat. Menggunakan Argo CD CLI dengan kemampuan terkelola

Atau, daftarkan klaster menggunakan Kubernetes Secret (lihat Daftarkan kluster target detailnya).

Konfigurasikan akses repositori (opsional)

Contoh ini menggunakan GitHub repositori publik, jadi tidak diperlukan konfigurasi repositori. Untuk repositori pribadi, konfigurasikan akses menggunakan AWS Secrets Manager, CodeConnections, atau Kubernetes Secrets (lihat detailnya). Konfigurasikan akses repositori

Untuk AWS layanan (ECR untuk bagan Helm,, dan CodeCommit) CodeConnections, Anda dapat mereferensikannya secara langsung di sumber daya Aplikasi tanpa membuat Repositori. Peran Kemampuan harus memiliki izin IAM yang diperlukan. Lihat Konfigurasikan akses repositori untuk detail.

Langkah 2: Buat Aplikasi

Buat manifes Aplikasi ini dimy-app.yaml:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps.git targetRevision: HEAD path: guestbook destination: name: in-cluster namespace: guestbook syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true

Terapkan Aplikasi:

kubectl apply -f my-app.yaml

Setelah menerapkan Aplikasi ini, Argo CD: 1. Menyinkronkan aplikasi dari Git ke klaster Anda (penerapan awal) 2. Memonitor repositori Git untuk perubahan 3. Secara otomatis menyinkronkan perubahan berikutnya ke cluster 4 Anda. Mendeteksi dan memperbaiki penyimpangan apa pun dari keadaan yang diinginkan 5. Menyediakan status kesehatan dan riwayat sinkronisasi di UI

Lihat status aplikasi:

kubectl get application guestbook -n argocd

Anda juga dapat melihat aplikasi menggunakan Argo CD CLI argocd app get guestbook () atau Argo CD UI (dapat diakses dari konsol EKS di bawah tab Capabilities cluster Anda).

catatan

Gunakan nama cluster di destination.name (nama yang Anda gunakan saat mendaftarkan cluster). Kemampuan terkelola tidak mendukung default lokal dalam cluster (kubernetes.default.svc).

Konsep inti

GitOps prinsip dan jenis sumber

Argo CD mengimplementasikan GitOps, di mana sumber aplikasi Anda adalah satu-satunya sumber kebenaran untuk penerapan:

  • Deklaratif - Status yang diinginkan dideklarasikan menggunakan manifes YAMAL, bagan Helm, atau overlay Kustomize

  • Berversi - Setiap perubahan dilacak dengan jejak audit lengkap

  • Otomatis - Argo CD terus memantau sumber dan secara otomatis menyinkronkan perubahan

  • Penyembuhan diri - Mendeteksi dan mengoreksi penyimpangan antara keadaan cluster yang diinginkan dan aktual

Jenis sumber yang didukung:

  • Repositori Git - GitHub, GitLab, Bitbucket, CodeCommit (HTTPS, SSH, atau) CodeConnections

  • Pendaftaran Helm - pendaftar HTTP (seperti https://aws.github.io/eks-charts ) dan pendaftar OCI (seperti) public.ecr.aws

  • Gambar OCI - Gambar kontainer yang berisi manifes atau bagan Helm (seperti) oci://registry-1.docker.io/user/my-app

Fleksibilitas ini memungkinkan organisasi untuk memilih sumber yang memenuhi persyaratan keamanan dan kepatuhan mereka. Misalnya, organisasi yang membatasi akses Git dari cluster dapat menggunakan ECR untuk bagan Helm atau gambar OCI.

Untuk informasi selengkapnya, lihat Sumber Aplikasi dalam dokumentasi Argo CD.

Sinkronisasi dan rekonsiliasi

Argo CD terus memantau sumber dan cluster Anda untuk mendeteksi dan memperbaiki perbedaan:

  1. Sumber jajak pendapat untuk perubahan (default: setiap 6 menit)

  2. Membandingkan status yang diinginkan dengan status cluster

  3. Menandai aplikasi sebagai Synced atau OutOfSync

  4. Menyinkronkan perubahan secara otomatis (jika dikonfigurasi) atau menunggu persetujuan manual

  5. Memantau kesehatan sumber daya setelah sinkronisasi

Gelombang sinkronisasi mengontrol urutan pembuatan sumber daya menggunakan anotasi:

metadata: annotations: argocd.argoproj.io/sync-wave: "0" # Default if not specified

Sumber daya diterapkan dalam urutan gelombang (angka yang lebih rendah terlebih dahulu, termasuk angka negatif seperti-1). Hal ini memungkinkan Anda untuk membuat dependensi seperti namespaces (wave-1) sebelum deployments (wave). 0

Penyembuhan diri secara otomatis mengembalikan perubahan manual:

spec: syncPolicy: automated: selfHeal: true
catatan

Kemampuan terkelola menggunakan pelacakan sumber daya berbasis anotasi (bukan berbasis label) untuk kompatibilitas yang lebih baik dengan konvensi Kubernetes dan alat lainnya.

Untuk informasi rinci tentang fase sinkronisasi, kait, dan pola lanjutan, lihat dokumentasi sinkronisasi CD Argo.

Aplikasi kesehatan

Argo CD memantau kesehatan semua sumber daya dalam aplikasi Anda:

Status Kesehatan: * Sehat - Semua sumber daya berjalan seperti yang diharapkan * Kemajuan - Sumber daya sedang dibuat atau diperbarui * Terdegradasi - Beberapa sumber daya tidak sehat (pod mogok, pekerjaan gagal) * Ditangguhkan - Aplikasi sengaja dijeda * Hilang - Sumber daya yang didefinisikan dalam Git tidak ada di klaster

Argo CD memiliki pemeriksaan kesehatan bawaan untuk sumber daya Kubernetes umum (Deployment,, Jobs StatefulSets, dll.) dan mendukung pemeriksaan kesehatan khusus untuk. CRDs

Kesehatan aplikasi ditentukan oleh semua sumber dayanya - jika ada sumber dayaDegraded, aplikasinyaDegraded.

Untuk informasi lebih lanjut, lihat Resource Health dalam dokumentasi Argo CD.

Pola multi-cluster

Argo CD mendukung dua pola penyebaran utama:

H ub-and-spoke - Jalankan Argo CD pada cluster manajemen khusus yang menyebarkan ke beberapa cluster beban kerja: * Kontrol dan visibilitas terpusat * Kebijakan yang konsisten di semua cluster * Satu instance CD Argo untuk dikelola * Pemisahan yang jelas antara bidang kontrol dan beban kerja

Per-cluster - Jalankan Argo CD di setiap cluster, hanya mengelola aplikasi cluster itu: * Pemisahan cluster (satu kegagalan tidak memengaruhi yang lain) * Jaringan yang lebih sederhana (tidak ada komunikasi lintas cluster) * Pengaturan awal yang lebih mudah (tanpa registrasi cluster)

Pilih hub-and-spoke tim platform yang mengelola banyak cluster, atau per-cluster untuk tim independen atau ketika cluster harus sepenuhnya terisolasi.

Untuk konfigurasi multi-cluster yang mendetail, lihatPertimbangan Argo CD.

Proyek

Proyek menyediakan pengelompokan logis dan kontrol akses untuk Aplikasi:

  • Pembatasan sumber - Batasi repositori Git mana yang dapat digunakan

  • Pembatasan tujuan - Batasi cluster dan ruang nama mana yang dapat ditargetkan

  • Pembatasan sumber daya - Batasi tipe sumber daya Kubernetes mana yang dapat digunakan

  • Integrasi RBAC - Memetakan proyek ke pengguna dan AWS grup Pusat Identitas IDs

Semua Aplikasi milik proyek. Jika tidak ditentukan, mereka menggunakan default proyek (yang tidak memiliki batasan). Untuk produksi, buat proyek dengan batasan yang sesuai.

Untuk konfigurasi proyek dan pola RBAC, lihat. Konfigurasikan izin Argo CD

Organisasi repositori

Sebagian besar tim menggunakan organisasi berbasis direktori dengan overlay Kustomize atau file nilai Helm untuk lingkungan yang berbeda:

my-app/ ├── base/ │ ├── deployment.yaml │ └── service.yaml └── overlays/ ├── dev/ │ └── kustomization.yaml ├── staging/ │ └── kustomization.yaml └── prod/ └── kustomization.yaml

Pendekatan ini memberikan fleksibilitas dan kejelasan sambil menjaga semua konfigurasi lingkungan dalam satu repositori.

Untuk detail pola struktur repositori dan praktik terbaik, lihat dokumentasi praktik terbaik Argo CD.

Opsi sinkronisasi

Sempurnakan perilaku sinkronisasi dengan opsi umum:

  • CreateNamespace=true- Secara otomatis membuat namespace tujuan

  • ServerSideApply=true- Gunakan aplikasi sisi server untuk resolusi konflik yang lebih baik

  • SkipDryRunOnMissingResource=true- Lewati dry run saat CRDs belum ada (berguna untuk instance kro)

spec: syncPolicy: syncOptions: - CreateNamespace=true - ServerSideApply=true

Untuk daftar lengkap opsi sinkronisasi, lihat dokumentasi opsi sinkronisasi CD Argo.

Langkah selanjutnya