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.
Bekerja dengan Proyek CD Argo
Argo CD Projects (AppProject) menyediakan pengelompokan logis dan kontrol akses untuk Aplikasi. Proyek menentukan repositori Git, cluster target, dan ruang nama yang dapat digunakan Aplikasi, memungkinkan batas multi-tenancy dan keamanan dalam instance CD Argo bersama.
Kapan menggunakan Proyek
Gunakan Proyek untuk:
-
Pisahkan aplikasi berdasarkan tim, lingkungan, atau unit bisnis
-
Batasi tim repositori mana yang dapat digunakan
-
Batasi cluster dan ruang nama mana yang dapat diterapkan oleh tim
-
Menerapkan kuota sumber daya dan jenis sumber daya yang diizinkan
-
Menyediakan penerapan aplikasi swalayan dengan pagar pembatas
Proyek Default
Setiap kemampuan Argo CD mencakup default proyek yang memungkinkan akses ke semua repositori, cluster, dan ruang nama. Meskipun berguna untuk pengujian awal, buat proyek khusus dengan batasan eksplisit untuk penggunaan produksi.
Untuk detail tentang konfigurasi proyek default dan cara membatasinya, lihat Proyek Default
Buat Proyek
Buat Proyek dengan menerapkan sumber AppProject daya ke cluster Anda.
Contoh: Proyek khusus tim
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: description: Applications for Team A # Source repositories this project can deploy from sourceRepos: - 'https://github.com/my-org/team-a-*' - 'https://github.com/my-org/shared-libs' # Destination clusters and namespaces destinations: - name: dev-cluster namespace: team-a-dev - name: prod-cluster namespace: team-a-prod # Allowed resource types clusterResourceWhitelist: - group: '' kind: Namespace namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap
Terapkan Proyek:
kubectl apply -f team-a-project.yaml
Konfigurasi proyek
Repositori sumber
Kontrol repositori Git mana yang dapat digunakan Aplikasi dalam proyek ini:
spec: sourceRepos: - 'https://github.com/my-org/app-*' # Wildcard pattern - 'https://github.com/my-org/infra' # Specific repo
Anda dapat menggunakan wildcard dan pola negasi (!awalan) untuk mengizinkan atau menolak repositori tertentu. Untuk detailnya, lihat Mengelola Proyek
Pembatasan tujuan
Batasi tempat Aplikasi dapat menyebarkan:
spec: destinations: - name: prod-cluster # Specific cluster by name namespace: production - name: '*' # Any cluster namespace: team-a-* # Namespace pattern
penting
Gunakan nama cluster dan pola namespace tertentu daripada wildcard untuk Proyek produksi. Ini mencegah penyebaran yang tidak disengaja ke cluster atau ruang nama yang tidak sah.
Anda dapat menggunakan wildcard dan pola negasi untuk mengontrol tujuan. Untuk detailnya, lihat Mengelola Proyek
Pembatasan sumber daya
Kontrol tipe sumber daya Kubernetes mana yang dapat digunakan:
Sumber daya cakupan cluster:
spec: clusterResourceWhitelist: - group: '' kind: Namespace - group: 'rbac.authorization.k8s.io' kind: Role
Sumber daya dengan cakupan ruang nama:
spec: namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service - group: '' kind: ConfigMap - group: 's3.services.k8s.aws' kind: Bucket
Gunakan daftar hitam untuk menolak sumber daya tertentu:
spec: namespaceResourceBlacklist: - group: '' kind: Secret # Prevent direct Secret creation
Tetapkan Aplikasi ke Proyek
Saat membuat Aplikasi, tentukan proyek di spec.project lapangan:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: team-a # Assign to team-a project source: repoURL: https://github.com/my-org/my-app path: manifests destination: name: prod-cluster namespace: team-a-prod
Aplikasi tanpa proyek tertentu menggunakan default proyek.
Peran proyek dan RBAC
Proyek dapat menentukan peran khusus untuk kontrol akses berbutir halus. Petakan peran proyek ke pengguna dan grup Pusat AWS Identitas dalam konfigurasi kemampuan Anda untuk mengontrol siapa yang dapat menyinkronkan, memperbarui, atau menghapus aplikasi.
Contoh: Proyek dengan peran pengembang dan admin
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: team-a namespace: argocd spec: sourceRepos: - '*' destinations: - name: '*' namespace: 'team-a-*' roles: - name: developer description: Developers can sync applications policies: - p, proj:team-a:developer, applications, sync, team-a/*, allow - p, proj:team-a:developer, applications, get, team-a/*, allow groups: - team-a-developers - name: admin description: Admins have full access policies: - p, proj:team-a:admin, applications, *, team-a/*, allow groups: - team-a-admins
Untuk detail tentang peran proyek, token JWT untuk CI/CD pipeline, dan konfigurasi RBAC, lihat Peran Proyek
Pola umum
Proyek Berbasis Lingkungan
Buat proyek terpisah untuk setiap lingkungan:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: production namespace: argocd spec: sourceRepos: - 'https://github.com/my-org/*' destinations: - name: prod-cluster namespace: '*' # Strict resource controls for production clusterResourceWhitelist: [] namespaceResourceWhitelist: - group: 'apps' kind: Deployment - group: '' kind: Service
Proyek Berbasis Tim
Mengisolasi tim dengan proyek khusus:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: platform-team namespace: argocd spec: sourceRepos: - 'https://github.com/my-org/platform-*' destinations: - name: '*' namespace: 'platform-*' # Platform team can manage cluster resources clusterResourceWhitelist: - group: '*' kind: '*'
Proyek Multi-cluster
Terapkan ke beberapa cluster dengan kebijakan yang konsisten:
apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: global-app namespace: argocd spec: sourceRepos: - 'https://github.com/my-org/global-app' destinations: - name: us-west-cluster namespace: app - name: eu-west-cluster namespace: app - name: ap-south-cluster namespace: app
Praktik terbaik
Mulailah dengan Proyek yang membatasi: Mulailah dengan izin sempit dan perluas sesuai kebutuhan daripada memulai dengan akses luas.
Gunakan pola namespace: Manfaatkan wildcard dalam batasan namespace (sepertiteam-a-*) untuk memungkinkan fleksibilitas sambil mempertahankan batas.
Proyek produksi terpisah: Gunakan Proyek khusus untuk produksi dengan kontrol yang lebih ketat dan kebijakan sinkronisasi manual.
Tujuan Proyek Dokumen: Gunakan description bidang untuk menjelaskan untuk apa setiap Proyek dan siapa yang harus menggunakannya.
Tinjau izin Proyek secara teratur: Audit Proyek secara berkala untuk memastikan pembatasan masih selaras dengan kebutuhan tim dan persyaratan keamanan.
Sumber daya tambahan
-
Konfigurasikan izin Argo CD- Konfigurasikan integrasi RBAC dan Identity Center
-
Buat Aplikasi- Buat Aplikasi dalam Proyek
-
Gunakan ApplicationSets- Gunakan ApplicationSets dengan Proyek untuk penyebaran multi-cluster
-
Dokumentasi Proyek CD Argo - Referensi
hulu lengkap