

 **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.

# Penerapan Berkelanjutan dengan Argo CD
<a name="argocd"></a>

Argo CD adalah alat pengiriman GitOps kontinu deklaratif untuk Kubernetes. Dengan Argo CD, Anda dapat mengotomatiskan penerapan dan manajemen siklus hidup aplikasi Anda di beberapa cluster dan lingkungan. Argo CD mendukung beberapa jenis sumber termasuk repositori Git, registri Helm (HTTP dan OCI), dan gambar OCI—memberikan fleksibilitas bagi organisasi dengan persyaratan keamanan dan kepatuhan yang berbeda.

Dengan Kemampuan EKS, Argo CD sepenuhnya dikelola oleh AWS, menghilangkan kebutuhan untuk menginstal, memelihara, dan menskalakan pengontrol CD Argo dan dependensinya pada cluster Anda.

## Bagaimana Argo CD Bekerja
<a name="_how_argo_cd_works"></a>

Argo CD mengikuti GitOps pola, di mana sumber aplikasi Anda (repositori Git, registri Helm, atau gambar OCI) adalah sumber kebenaran untuk mendefinisikan status aplikasi yang diinginkan. Ketika Anda membuat resource Argo CD, Anda menentukan `Application` sumber yang berisi manifes aplikasi Anda dan cluster Kubernetes target dan namespace. Argo CD terus memantau sumber dan status langsung di cluster, secara otomatis menyinkronkan perubahan apa pun untuk memastikan status cluster cocok dengan status yang diinginkan.

**catatan**  
Dengan Kemampuan EKS untuk Argo CD, perangkat lunak Argo CD berjalan di bidang AWS kontrol, bukan pada node pekerja Anda. Ini berarti node pekerja Anda tidak memerlukan akses langsung ke repositori Git atau registri Helm — kapabilitas menangani akses sumber dari akun. AWS 

Argo CD menyediakan tiga jenis sumber daya utama:
+  **Aplikasi**: Mendefinisikan penerapan dari repositori Git ke kluster target
+  **ApplicationSet**: Menghasilkan beberapa Aplikasi dari template untuk penerapan multi-cluster
+  **AppProject**: Menyediakan pengelompokan logis dan kontrol akses untuk Aplikasi

 **Contoh: Membuat Aplikasi Argo CD** 

Contoh berikut menunjukkan cara membuat `Application` sumber daya Argo CD:

```
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
```

**catatan**  
Gunakan `destination.name` dengan nama cluster yang Anda gunakan saat mendaftarkan cluster (seperti `in-cluster` untuk cluster lokal). `destination.server`Bidang ini juga berfungsi dengan cluster EKS ARNs, tetapi menggunakan nama cluster direkomendasikan untuk keterbacaan yang lebih baik.

## Manfaat Argo CD
<a name="_benefits_of_argo_cd"></a>

Argo CD mengimplementasikan GitOps alur kerja di mana Anda menentukan konfigurasi aplikasi Anda di repositori Git dan Argo CD secara otomatis menyinkronkan aplikasi Anda agar sesuai dengan status yang diinginkan. Pendekatan GIT-sentris ini menyediakan jejak audit lengkap dari semua perubahan, memungkinkan pengembalian yang mudah, dan terintegrasi secara alami dengan peninjauan kode dan proses persetujuan Anda yang ada. Argo CD secara otomatis mendeteksi dan merekonsiliasi penyimpangan antara status yang diinginkan di Git dan status aktual di cluster Anda, memastikan penerapan Anda tetap konsisten dengan konfigurasi yang Anda deklarasikan.

Dengan Argo CD, Anda dapat menyebarkan dan mengelola aplikasi di beberapa cluster dari satu instance CD Argo, menyederhanakan operasi di lingkungan multi-cluster dan multi-wilayah. Argo CD UI menyediakan kemampuan visualisasi dan pemantauan, memungkinkan Anda untuk melihat status penerapan, kesehatan, dan riwayat aplikasi Anda. UI terintegrasi dengan AWS Identity Center (sebelumnya AWS SSO) untuk otentikasi dan otorisasi tanpa batas, memungkinkan Anda untuk mengontrol akses menggunakan infrastruktur manajemen identitas yang ada.

Sebagai bagian dari Kemampuan Terkelola EKS, Argo CD sepenuhnya dikelola oleh AWS, menghilangkan kebutuhan untuk menginstal, mengkonfigurasi, dan memelihara infrastruktur Argo CD. AWS menangani penskalaan, penambalan, dan manajemen operasional, yang memungkinkan tim Anda untuk fokus pada pengiriman aplikasi daripada pemeliharaan alat.

## Integrasi dengan Pusat AWS Identitas
<a name="integration_with_shared_aws_identity_center"></a>

EKS Managed Capabilities menyediakan integrasi langsung antara Argo CD dan AWS Identity Center, memungkinkan otentikasi dan otorisasi tanpa batas untuk pengguna Anda. Saat Anda mengaktifkan kemampuan Argo CD, Anda dapat mengonfigurasi integrasi Pusat AWS Identitas untuk memetakan grup Pusat Identitas dan pengguna ke peran Argo CD RBAC, memungkinkan Anda mengontrol siapa yang dapat mengakses dan mengelola aplikasi di Argo CD.

## Integrasi dengan Kemampuan Terkelola EKS Lainnya
<a name="_integration_with_other_eks_managed_capabilities"></a>

Argo CD terintegrasi dengan Kemampuan Terkelola EKS lainnya.
+  ** AWS Controller for Kubernetes (ACK)**: Gunakan Argo CD untuk mengelola penyebaran sumber daya ACK di beberapa cluster, memungkinkan alur kerja untuk infrastruktur Anda. GitOps AWS 
+  **kro (Kube Resource Orchestrator)**: Gunakan Argo CD untuk menyebarkan komposisi kro di beberapa cluster, memungkinkan komposisi sumber daya yang konsisten di seluruh estate Kubernetes Anda.

## Memulai dengan Argo CD
<a name="_getting_started_with_argo_cd"></a>

Untuk memulai dengan Kemampuan EKS untuk Argo CD:

1. Buat dan konfigurasikan Peran Kemampuan IAM dengan izin yang diperlukan untuk Argo CD untuk mengakses sumber Anda dan mengelola aplikasi.

1.  [Buat sumber daya kemampuan Argo CD](create-argocd-capability.md) di kluster EKS Anda melalui AWS Konsol, AWS CLI, atau infrastruktur pilihan Anda sebagai alat kode.

1. Konfigurasikan akses repositori dan daftarkan cluster untuk penerapan aplikasi.

1. Buat sumber daya Aplikasi untuk menyebarkan aplikasi Anda dari sumber deklaratif Anda.

# Membuat kemampuan Argo CD
<a name="create-argocd-capability"></a>

Topik ini menjelaskan cara membuat kemampuan Argo CD di cluster Amazon EKS Anda.

## Prasyarat
<a name="_prerequisites"></a>

Sebelum membuat kemampuan Argo CD, pastikan Anda memiliki:
+ Cluster Amazon EKS yang sudah ada yang menjalankan versi Kubernetes yang didukung (semua versi dalam dukungan standar dan diperpanjang didukung)
+  ** AWS Pusat Identitas dikonfigurasi** - Diperlukan untuk otentikasi CD Argo (pengguna lokal tidak didukung)
+ Peran Kemampuan IAM dengan izin untuk Argo CD
+ Izin IAM yang memadai untuk membuat sumber daya kemampuan di kluster EKS
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda
+ (Opsional) Argo CD CLI diinstal untuk manajemen cluster dan repositori yang lebih mudah
+ (Untuk CLI/Eksctl) Alat CLI yang sesuai diinstal dan dikonfigurasi

Untuk petunjuk tentang cara membuat Peran Kemampuan IAM, lihat[Peran IAM kemampuan Amazon EKS](capability-role.md). Untuk penyiapan Pusat Identitas, lihat [Memulai dengan Pusat AWS Identitas](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html).

**penting**  
Peran Kemampuan IAM yang Anda berikan menentukan AWS sumber daya yang dapat diakses Argo CD. Ini termasuk akses repositori Git via CodeConnections dan rahasia di Secrets Manager. Untuk panduan tentang membuat peran yang sesuai dengan izin hak istimewa paling sedikit, lihat dan. [Peran IAM kemampuan Amazon EKS](capability-role.md) [Pertimbangan keamanan untuk Kemampuan EKS](capabilities-security.md)

## Pilih alat Anda
<a name="_choose_your_tool"></a>

Anda dapat membuat kemampuan Argo CD menggunakan, AWS CLI Konsol Manajemen AWS, atau eksctl:
+  [Buat kemampuan Argo CD menggunakan Konsol](argocd-create-console.md)- Gunakan Konsol untuk pengalaman terpandu
+  [Buat kemampuan Argo CD menggunakan CLI AWS](argocd-create-cli.md)- Gunakan AWS CLI untuk scripting dan otomatisasi
+  [Buat kemampuan Argo CD menggunakan eksctl](argocd-create-eksctl.md)- Gunakan eksctl untuk pengalaman asli Kubernetes

## Apa yang terjadi ketika Anda membuat kemampuan Argo CD
<a name="_what_happens_when_you_create_an_argo_cd_capability"></a>

Saat Anda membuat kemampuan Argo CD:

1. EKS menciptakan layanan kemampuan Argo CD di bidang AWS kontrol

1. Definisi Sumber Daya Kustom (CRDs) diinstal di klaster Anda

1. Entri akses dibuat secara otomatis untuk Peran Kemampuan IAM Anda dengan kebijakan entri akses khusus kemampuan yang memberikan izin Kubernetes dasar (lihat) [Pertimbangan keamanan untuk Kemampuan EKS](capabilities-security.md)

1. Argo CD mulai menonton sumber daya kustomnya (Aplikasi, ApplicationSets, AppProjects)

1. Status kemampuan berubah dari `CREATING` menjadi `ACTIVE` 

1. Argo CD UI dapat diakses melalui URL-nya

Setelah aktif, Anda dapat membuat Aplikasi Argo CD di cluster Anda untuk menyebarkan dari sumber deklaratif Anda.

**catatan**  
Entri akses yang dibuat secara otomatis tidak memberikan izin untuk menyebarkan aplikasi ke cluster. Untuk menerapkan aplikasi, Anda harus mengonfigurasi izin Kubernetes RBAC tambahan untuk setiap kluster target. Lihat [Daftarkan cluster target](argocd-register-clusters.md) detail tentang mendaftarkan kluster dan mengonfigurasi akses.

## Langkah selanjutnya
<a name="_next_steps"></a>

Setelah membuat kemampuan Argo CD:
+  [Konsep Argo CD](argocd-concepts.md)- Pelajari tentang GitOps prinsip, kebijakan sinkronisasi, dan pola multi-cluster
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Konfigurasikan akses repositori, daftarkan cluster target, dan buat Aplikasi
+  [Pertimbangan Argo CD](argocd-considerations.md)- Jelajahi pola arsitektur multi-cluster dan konfigurasi lanjutan

# Buat kemampuan Argo CD menggunakan Konsol
<a name="argocd-create-console"></a>

Topik ini menjelaskan cara membuat kemampuan Argo CD menggunakan file. Konsol Manajemen AWS

## Prasyarat
<a name="_prerequisites"></a>
+  ** AWS Pusat Identitas dikonfigurasi** - Argo CD memerlukan Pusat AWS Identitas untuk otentikasi. Pengguna lokal tidak didukung. Jika Anda belum menyiapkan Pusat AWS Identitas, lihat [Memulai dengan Pusat AWS Identitas](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) untuk membuat instance Pusat Identitas, dan [Menambahkan pengguna](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) dan [Menambahkan grup](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) untuk membuat pengguna dan grup untuk akses CD Argo.

## Buat kemampuan Argo CD
<a name="_create_the_argo_cd_capability"></a>

1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/ rumah\$1/cluster.

1. Pilih nama cluster Anda untuk membuka halaman detail cluster.

1. Pilih tab **Kemampuan**.

1. Di navigasi kiri, pilih **Argo CD**.

1. Pilih **Buat kemampuan CD Argo**.

1. Untuk **Peran Kemampuan IAM**:
   + Jika Anda sudah memiliki Peran Kemampuan IAM, pilih dari dropdown
   + Jika Anda perlu membuat peran, pilih **Buat peran CD Argo** 

     Ini membuka konsol IAM di tab baru dengan kebijakan kepercayaan yang telah diisi sebelumnya dan akses baca penuh ke Secrets Manager. Tidak ada izin lain yang ditambahkan secara default, tetapi Anda dapat menambahkannya jika diperlukan. Jika Anda berencana untuk menggunakan CodeCommit repositori atau AWS layanan lain, tambahkan izin yang sesuai sebelum membuat peran.

     Setelah membuat peran, kembali ke konsol EKS dan peran akan dipilih secara otomatis.
**catatan**  
Jika Anda berencana untuk menggunakan integrasi opsional dengan AWS Secrets Manager atau AWS CodeConnections, Anda harus menambahkan izin ke peran tersebut. Untuk contoh kebijakan IAM dan panduan konfigurasi, lihat [Kelola rahasia aplikasi dengan AWS Secrets Manager](integration-secrets-manager.md) dan[Connect ke repositori Git dengan AWS CodeConnections](integration-codeconnections.md).

1. Konfigurasikan integrasi Pusat AWS Identitas:

   1. Pilih **Aktifkan integrasi Pusat AWS Identitas**.

   1. Pilih instans Pusat Identitas Anda dari dropdown.

   1. Konfigurasikan pemetaan peran untuk RBAC dengan menetapkan pengguna atau grup ke peran Argo CD (ADMIN, EDITOR, atau VIEWER)

1. Pilih **Buat**.

Proses pembuatan kapabilitas dimulai.

## Verifikasi kemampuan aktif
<a name="_verify_the_capability_is_active"></a>

1. Pada tab **Capabilities**, lihat status kemampuan Argo CD.

1. Tunggu status berubah dari `CREATING` ke`ACTIVE`.

1. Setelah aktif, kemampuan siap digunakan.

Untuk informasi tentang status kemampuan dan pemecahan masalah, lihat. [Bekerja dengan sumber daya kemampuan](working-with-capabilities.md)

## Akses UI CD Argo
<a name="_access_the_argo_cd_ui"></a>

Setelah kemampuan aktif, Anda dapat mengakses Argo CD UI:

1. Pada halaman kemampuan Argo CD, pilih **Open Argo CD UI**.

1. Argo CD UI terbuka di tab browser baru.

1. Anda sekarang dapat membuat Aplikasi dan mengelola penerapan melalui UI.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Konfigurasikan repositori, daftarkan cluster, dan buat Aplikasi
+  [Pertimbangan Argo CD](argocd-considerations.md)- Arsitektur multi-cluster dan konfigurasi lanjutan
+  [Bekerja dengan sumber daya kemampuan](working-with-capabilities.md)- Kelola sumber daya kemampuan Argo CD Anda

# Buat kemampuan Argo CD menggunakan CLI AWS
<a name="argocd-create-cli"></a>

Topik ini menjelaskan cara membuat kemampuan Argo CD menggunakan AWS CLI.

## Prasyarat
<a name="_prerequisites"></a>
+  ** AWS CLI** — Versi `2.12.3` atau yang lebih baru. Untuk memeriksa versi Anda, jalankan`aws --version`. Untuk informasi selengkapnya, lihat [Menginstal](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) di Panduan Pengguna Antarmuka Baris AWS Perintah.
+  **`kubectl`**— Alat baris perintah untuk bekerja dengan cluster Kubernetes. Untuk informasi selengkapnya, lihat [Mengatur `kubectl` dan `eksctl`](install-kubectl.md).
+  ** AWS Pusat Identitas dikonfigurasi** - Argo CD memerlukan Pusat AWS Identitas untuk otentikasi. Pengguna lokal tidak didukung. Jika Anda belum menyiapkan Pusat AWS Identitas, lihat [Memulai dengan Pusat AWS Identitas](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) untuk membuat instance Pusat Identitas, dan [Menambahkan pengguna](https://docs.aws.amazon.com/singlesignon/latest/userguide/addusers.html) dan [Menambahkan grup](https://docs.aws.amazon.com/singlesignon/latest/userguide/addgroups.html) untuk membuat pengguna dan grup untuk akses CD Argo.

## Langkah 1: Buat Peran Kemampuan IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Buat file kebijakan kepercayaan:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Buat peran IAM:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**catatan**  
Jika Anda berencana untuk menggunakan integrasi opsional dengan AWS Secrets Manager atau AWS CodeConnections, Anda harus menambahkan izin ke peran tersebut. Untuk contoh kebijakan IAM dan panduan konfigurasi, lihat [Kelola rahasia aplikasi dengan AWS Secrets Manager](integration-secrets-manager.md) dan[Connect ke repositori Git dengan AWS CodeConnections](integration-codeconnections.md).

## Langkah 2: Buat kemampuan Argo CD
<a name="_step_2_create_the_argo_cd_capability"></a>

Buat sumber daya kemampuan Argo CD di cluster Anda.

Pertama, atur variabel lingkungan untuk konfigurasi Pusat Identitas Anda:

```
# Get your Identity Center instance ARN (replace region if your IDC instance is in a different region)
export IDC_INSTANCE_ARN=$(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].InstanceArn' --output text)

# Get a user ID for RBAC mapping (replace with your username and region if needed)
export IDC_USER_ID=$(aws identitystore list-users \
  --region [.replaceable]`region` \
  --identity-store-id $(aws sso-admin list-instances --region [.replaceable]`region` --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text)

echo "IDC_INSTANCE_ARN=$IDC_INSTANCE_ARN"
echo "IDC_USER_ID=$IDC_USER_ID"
```

Buat kemampuan dengan integrasi Pusat Identitas. Ganti *region-code* dengan AWS Wilayah tempat klaster Anda berada dan *my-cluster* dengan nama cluster Anda dan *idc-region-code* dengan kode wilayah tempat Pusat Identitas IAM Anda telah dikonfigurasi:

```
aws eks create-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):role/ArgoCDCapabilityRole \
  --delete-propagation-policy RETAIN \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "'$IDC_INSTANCE_ARN'",
        "idcRegion": "'[.replaceable]`idc-region-code`'"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "'$IDC_USER_ID'",
          "type": "SSO_USER"
        }]
      }]
    }
  }'
```

Perintah segera kembali, tetapi kemampuannya membutuhkan waktu untuk menjadi aktif karena EKS menciptakan infrastruktur dan komponen kemampuan yang diperlukan. EKS akan menginstal Definisi Sumber Daya Kustom Kubernetes yang terkait dengan kemampuan ini di cluster Anda saat sedang dibuat.

**catatan**  
Jika Anda menerima kesalahan bahwa klaster tidak ada atau Anda tidak memiliki izin, verifikasi:  
Nama klaster sudah benar
 AWS CLI Anda dikonfigurasi untuk wilayah yang benar
Anda memiliki izin IAM yang diperlukan

## Langkah 3: Verifikasi kemampuan aktif
<a name="_step_3_verify_the_capability_is_active"></a>

Tunggu kemampuan untuk menjadi aktif. Ganti *region-code* dengan AWS Wilayah tempat klaster Anda berada dan *my-cluster* dengan nama cluster Anda.

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd \
  --query 'capability.status' \
  --output text
```

Kemampuan siap ketika status ditampilkan`ACTIVE`. Jangan melanjutkan ke langkah berikutnya sampai statusnya`ACTIVE`.

Anda juga dapat melihat detail kemampuan lengkap:

```
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd
```

## Langkah 4: Verifikasi sumber daya kustom tersedia
<a name="_step_4_verify_custom_resources_are_available"></a>

Setelah kemampuan aktif, verifikasi bahwa sumber daya kustom Argo CD tersedia di cluster Anda:

```
kubectl api-resources | grep argoproj.io
```

Anda harus melihat `Application` dan jenis `ApplicationSet` sumber daya terdaftar.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Konfigurasikan repositori, daftarkan cluster, dan buat Aplikasi
+  [Pertimbangan Argo CD](argocd-considerations.md)- Arsitektur multi-cluster dan konfigurasi lanjutan
+  [Bekerja dengan sumber daya kemampuan](working-with-capabilities.md)- Kelola sumber daya kemampuan Argo CD Anda

# Buat kemampuan Argo CD menggunakan eksctl
<a name="argocd-create-eksctl"></a>

Topik ini menjelaskan cara membuat kemampuan Argo CD menggunakan eksctl.

**catatan**  
Langkah-langkah berikut memerlukan versi `0.220.0` eksctl atau yang lebih baru. Untuk memeriksa versi Anda, jalankan`eksctl version`.

## Langkah 1: Buat Peran Kemampuan IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Buat file kebijakan kepercayaan:

```
cat > argocd-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Buat peran IAM:

```
aws iam create-role \
  --role-name ArgoCDCapabilityRole \
  --assume-role-policy-document file://argocd-trust-policy.json
```

**catatan**  
Untuk pengaturan dasar ini, tidak diperlukan kebijakan IAM tambahan. Jika Anda berencana menggunakan Secrets Manager untuk kredenal repositori atau CodeConnections, Anda harus menambahkan izin ke peran tersebut. Untuk contoh kebijakan IAM dan panduan konfigurasi, lihat [Kelola rahasia aplikasi dengan AWS Secrets Manager](integration-secrets-manager.md) dan[Connect ke repositori Git dengan AWS CodeConnections](integration-codeconnections.md).

## Langkah 2: Dapatkan konfigurasi Pusat AWS Identitas Anda
<a name="step_2_get_your_shared_aws_identity_center_configuration"></a>

Dapatkan ARN dan ID pengguna instance Identity Center Anda untuk konfigurasi RBAC:

```
# Get your Identity Center instance ARN
aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text

# Get a user ID for admin access (replace 'your-username' with your Identity Center username)
aws identitystore list-users \
  --identity-store-id $(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text) \
  --query 'Users[?UserName==`your-username`].UserId' --output text
```

Perhatikan nilai-nilai ini - Anda akan membutuhkannya di langkah berikutnya.

## Langkah 3: Buat file konfigurasi eksctl
<a name="_step_3_create_an_eksctl_configuration_file"></a>

Buat file dengan nama `argocd-capability.yaml` dengan konten berikut ini. Ganti nilai placeholder dengan nama cluster Anda, wilayah cluster, ARN peran IAM, ARN instance Identity Center, wilayah Pusat Identitas, dan ID pengguna:

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: my-cluster
  region: cluster-region-code

capabilities:
  - name: my-argocd
    type: ARGOCD
    roleArn: arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole
    deletePropagationPolicy: RETAIN
    configuration:
      argocd:
        awsIdc:
          idcInstanceArn: arn:aws:sso:::instance/ssoins-123abc
          idcRegion: idc-region-code
        rbacRoleMappings:
          - role: ADMIN
            identities:
              - id: 38414300-1041-708a-01af-5422d6091e34
                type: SSO_USER
```

**catatan**  
Anda dapat menambahkan beberapa pengguna atau grup ke pemetaan RBAC. Untuk grup, gunakan `type: SSO_GROUP` dan berikan ID grup. Peran yang tersedia adalah `ADMIN``EDITOR`,, dan`VIEWER`.

## Langkah 4: Buat kemampuan Argo CD
<a name="_step_4_create_the_argo_cd_capability"></a>

Terapkan file konfigurasi:

```
eksctl create capability -f argocd-capability.yaml
```

Perintah segera kembali, tetapi kemampuannya membutuhkan waktu untuk menjadi aktif.

## Langkah 5: Verifikasi kemampuan aktif
<a name="_step_5_verify_the_capability_is_active"></a>

Periksa status kemampuan. Ganti *region-code* dengan AWS Region tempat cluster Anda berada dan ganti *my-cluster* dengan nama cluster Anda.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-argocd
```

Kemampuan siap ketika status ditampilkan`ACTIVE`.

## Langkah 6: Verifikasi sumber daya kustom tersedia
<a name="_step_6_verify_custom_resources_are_available"></a>

Setelah kemampuan aktif, verifikasi bahwa sumber daya kustom Argo CD tersedia di cluster Anda:

```
kubectl api-resources | grep argoproj.io
```

Anda harus melihat `Application` dan jenis `ApplicationSet` sumber daya terdaftar.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Pelajari cara membuat dan mengelola Aplikasi Argo CD
+  [Pertimbangan Argo CD](argocd-considerations.md)- Konfigurasikan akses SSO dan multi-cluster
+  [Bekerja dengan sumber daya kemampuan](working-with-capabilities.md)- Kelola sumber daya kemampuan Argo CD Anda

# Konsep Argo CD
<a name="argocd-concepts"></a>

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
<a name="_getting_started_with_argo_cd"></a>

Setelah membuat kemampuan Argo CD (lihat[Membuat kemampuan Argo CD](create-argocd-capability.md)), Anda dapat mulai menerapkan aplikasi. Contoh ini berjalan melalui pendaftaran cluster dan membuat Aplikasi.

### Langkah 1: Mengatur
<a name="_step_1_set_up"></a>

 **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](argocd-comparison.md#argocd-cli-configuration)

Atau, daftarkan klaster menggunakan Kubernetes Secret (lihat [Daftarkan cluster target](argocd-register-clusters.md) 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](argocd-configure-repositories.md)

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](argocd-configure-repositories.md) untuk detail.

### Langkah 2: Buat Aplikasi
<a name="_step_2_create_an_application"></a>

Buat manifes Aplikasi ini di`my-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 mengoreksi 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 atau Argo CD UI (dapat diakses dari konsol EKS di bawah tab Capabilities cluster Anda).

**catatan**  
Saat menggunakan Argo CD CLI dengan kemampuan terkelola, tentukan aplikasi dengan awalan namespace:. `argocd app get argocd/guestbook`

**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
<a name="_core_concepts"></a>

### GitOps prinsip dan jenis sumber
<a name="_gitops_principles_and_source_types"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/application-sources/) dalam dokumentasi Argo CD.

### Sinkronisasi dan rekonsiliasi
<a name="_sync_and_reconciliation"></a>

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

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

1. Membandingkan status yang diinginkan dengan status cluster

1. Menandai aplikasi sebagai `Synced` atau `OutOfSync` 

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

1. 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`). Gelombang `0` adalah default jika tidak ditentukan. Hal ini memungkinkan Anda untuk membuat dependensi seperti namespaces (wave`-1`) sebelum deployment (wave) sebelum services (wave`0`). `1`

 **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](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/).

### Aplikasi kesehatan
<a name="_application_health"></a>

Argo CD memantau kesehatan semua sumber daya dalam aplikasi Anda:

 **Status Kesehatan**: \$1 **Sehat** - Semua sumber daya berjalan seperti yang diharapkan \$1 **Kemajuan** - Sumber daya sedang dibuat atau diperbarui \$1 **Terdegradasi - Beberapa sumber daya tidak sehat (pod mogok, pekerjaan gagal) \$1 **Ditangguhkan** - Aplikasi sengaja dijeda \$1 **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 daya`Degraded`, aplikasinya`Degraded`.

Untuk informasi lebih lanjut, lihat [Resource Health](https://argo-cd.readthedocs.io/en/stable/operator-manual/health/) dalam dokumentasi Argo CD.

### Pola multi-cluster
<a name="_multi_cluster_patterns"></a>

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: \$1 Kontrol dan visibilitas terpusat \$1 Kebijakan yang konsisten di semua cluster \$1 Satu instance CD Argo untuk dikelola \$1 Pemisahan yang jelas antara bidang kontrol dan beban kerja

 **Per-cluster** - Jalankan Argo CD di setiap cluster, hanya mengelola aplikasi cluster itu: \$1 Pemisahan cluster (satu kegagalan tidak memengaruhi yang lain) \$1 Jaringan yang lebih sederhana (tidak ada komunikasi lintas cluster) \$1 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, lihat[Pertimbangan Argo CD](argocd-considerations.md).

### Proyek
<a name="_projects"></a>

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

Aplikasi milik satu proyek. Jika tidak ditentukan, mereka menggunakan `default` proyek, yang tidak memiliki batasan secara default. Untuk penggunaan produksi, edit `default` proyek untuk membatasi akses dan membuat proyek baru dengan batasan yang sesuai.

Untuk konfigurasi proyek dan pola RBAC, lihat. [Konfigurasikan izin Argo CD](argocd-permissions.md)

### Opsi sinkronisasi
<a name="_sync_options"></a>

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
    - SkipDryRunOnMissingResource=true
```

Untuk daftar lengkap opsi sinkronisasi, lihat [dokumentasi opsi sinkronisasi CD Argo](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/).

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Konfigurasikan akses repositori](argocd-configure-repositories.md)- Konfigurasikan akses repositori Git
+  [Daftarkan cluster target](argocd-register-clusters.md)- Daftarkan cluster target untuk penyebaran
+  [Buat Aplikasi](argocd-create-application.md)- Buat Aplikasi pertama Anda
+  [Pertimbangan Argo CD](argocd-considerations.md)- Pola khusus EKS, integrasi Pusat Identitas, dan konfigurasi multi-cluster
+  [Dokumentasi CD Argo - Dokumentasi](https://argo-cd.readthedocs.io/en/stable/) CD Argo yang komprehensif termasuk kait sinkronisasi, pemeriksaan kesehatan, dan pola lanjutan

# Konfigurasikan izin Argo CD
<a name="argocd-permissions"></a>

Kemampuan terkelola Argo CD terintegrasi dengan AWS Identity Center untuk otentikasi dan menggunakan peran RBAC bawaan untuk otorisasi. Topik ini menjelaskan cara mengonfigurasi izin untuk pengguna dan tim.

## Cara kerja izin dengan Argo CD
<a name="_how_permissions_work_with_argo_cd"></a>

Kemampuan Argo CD menggunakan AWS Identity Center untuk otentikasi dan menyediakan tiga peran RBAC bawaan untuk otorisasi.

Saat pengguna mengakses Argo CD:

1. Mereka mengautentikasi menggunakan Pusat AWS Identitas (yang dapat berfederasi ke penyedia identitas perusahaan Anda)

1.  AWS Identity Center menyediakan informasi pengguna dan grup ke Argo CD

1. Argo CD memetakan pengguna dan grup ke peran RBAC berdasarkan konfigurasi Anda

1. Pengguna hanya melihat aplikasi dan sumber daya yang mereka miliki izin untuk diakses

## Peran RBAC bawaan
<a name="_built_in_rbac_roles"></a>

Kemampuan Argo CD menyediakan tiga peran bawaan yang Anda petakan ke pengguna dan grup Pusat AWS Identitas. Ini adalah **peran cakupan global** yang mengontrol akses ke sumber daya Argo CD seperti proyek, cluster, dan repositori.

**penting**  
Peran global mengontrol akses ke Argo CD itu sendiri, bukan ke sumber daya cakupan proyek seperti Aplikasi. Pengguna EDITOR dan VIEWER tidak dapat melihat atau mengelola Aplikasi secara default—mereka memerlukan peran proyek untuk mengakses sumber daya cakupan proyek. Lihat [Peran proyek dan akses cakupan proyek](#project-roles) detail tentang pemberian akses ke Aplikasi dan sumber daya cakupan proyek lainnya.

 **ADMIN** 

Akses penuh ke semua sumber daya dan pengaturan Argo CD:
+ Buat, perbarui, dan hapus Aplikasi dan ApplicationSets dalam proyek apa pun
+ Kelola konfigurasi Argo CD
+ Mendaftarkan dan mengelola cluster target penyebaran
+ Konfigurasikan akses repositori
+ Membuat dan mengelola proyek
+ Lihat semua status dan riwayat aplikasi
+ Daftar dan akses semua cluster dan repositori

 **PENYUNTING** 

Dapat memperbarui proyek dan mengonfigurasi peran proyek, tetapi tidak dapat mengubah pengaturan CD Argo global:
+ Perbarui proyek yang ada (tidak dapat membuat atau menghapus proyek)
+ Konfigurasikan peran dan izin proyek
+ Lihat kunci dan sertifikat GPG
+ Tidak dapat mengubah konfigurasi CD Argo global
+ Tidak dapat mengelola cluster atau repositori secara langsung
+ Tidak dapat melihat atau mengelola Aplikasi tanpa peran proyek

 **PENAMPIL** 

Akses hanya-baca ke sumber daya Argo CD:
+ Lihat konfigurasi proyek
+ Buat daftar semua proyek (termasuk proyek yang tidak ditetapkan oleh pengguna)
+ Lihat kunci dan sertifikat GPG
+ Tidak dapat mencantumkan cluster atau repositori
+ Tidak dapat membuat perubahan apa pun
+ Tidak dapat melihat atau mengelola Aplikasi tanpa peran proyek

**catatan**  
Untuk memberikan akses kepada pengguna EDITOR atau VIEWER ke Aplikasi, ADMIN atau EDITOR harus membuat peran proyek yang memetakan grup Pusat Identitas ke izin tertentu dalam proyek.

## Peran proyek dan akses cakupan proyek
<a name="project-roles"></a>

Peran global (ADMIN, EDITOR, VIEWER) mengontrol akses ke Argo CD itu sendiri. Peran proyek mengontrol akses ke sumber daya dan kemampuan dalam proyek tertentu, termasuk:
+  **Sumber Daya**: Aplikasi, ApplicationSets, kredensi repositori, kredensi cluster
+  **Kemampuan**: Akses log, akses exec ke pod aplikasi

 **Memahami model izin dua tingkat**:
+  **Cakupan global**: Peran bawaan menentukan apa yang dapat dilakukan pengguna dengan proyek, cluster, repositori, dan pengaturan Argo CD
+  **Ruang lingkup proyek**: Peran proyek menentukan apa yang dapat dilakukan pengguna dengan sumber daya dan kemampuan dalam proyek tertentu

Ini berarti:
+ Pengguna ADMIN dapat mengakses semua sumber daya dan kemampuan proyek tanpa konfigurasi tambahan
+ Pengguna EDITOR dan VIEWER harus diberikan peran proyek untuk mengakses sumber daya dan kemampuan proyek
+ Pengguna EDITOR dapat membuat peran proyek untuk memberikan akses kepada diri mereka sendiri dan orang lain dalam proyek yang dapat mereka perbarui

 **Contoh alur kerja**:

1. ADMIN memetakan grup Pusat Identitas ke peran EDITOR secara global

1. Admin membuat proyek untuk tim

1. EDITOR mengonfigurasi peran proyek dalam proyek tersebut untuk memberikan anggota tim akses ke sumber daya cakupan proyek

1. Anggota tim (yang mungkin memiliki peran global VIEWER) sekarang dapat melihat dan mengelola Aplikasi dalam proyek tersebut berdasarkan izin peran proyek mereka

Untuk detail tentang mengonfigurasi peran proyek, lihat[Kontrol akses berbasis proyek](#_project_based_access_control).

## Konfigurasikan pemetaan peran
<a name="_configure_role_mappings"></a>

Peta pengguna dan grup Pusat AWS Identitas ke peran CD Argo saat membuat atau memperbarui kemampuan.

 **Contoh pemetaan peran**:

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["AdminGroup", "alice@example.com"],
    "EDITOR": ["DeveloperGroup", "DevOpsTeam"],
    "VIEWER": ["ReadOnlyGroup", "bob@example.com"]
  }
}
```

**catatan**  
Nama peran peka huruf besar/kecil dan harus huruf besar (ADMIN, EDITOR, VIEWER).

**penting**  
Integrasi Kemampuan EKS dengan AWS Identity Center mendukung hingga 1.000 identitas per kemampuan Argo CD. Identitas dapat berupa pengguna atau grup.

 **Perbarui pemetaan peran**:

```
aws eks update-capability \
  --region us-east-1 \
  --cluster-name cluster \
  --capability-name capname \
  --endpoint "https://eks.ap-northeast-2.amazonaws.com" \
  --role-arn "arn:aws:iam::[.replaceable]111122223333:role/[.replaceable]`EKSCapabilityRole`" \
  --configuration '{
    "argoCd": {
      "rbacRoleMappings": {
        "addOrUpdateRoleMappings": [
          {
            "role": "ADMIN",
            "identities": [
              { "id": "686103e0-f051-7068-b225-e6392b959d9e", "type": "SSO_USER" }
            ]
          }
        ]
      }
    }
  }'
```

## Penggunaan akun admin
<a name="_admin_account_usage"></a>

Akun admin dirancang untuk penyiapan awal dan tugas administratif seperti mendaftarkan cluster dan mengkonfigurasi repositori.

 **Kapan akun admin sesuai**:
+ Pengaturan dan konfigurasi kemampuan awal
+ Pengembangan solo atau demonstrasi cepat
+ Tugas administratif (pendaftaran cluster, konfigurasi repositori, pembuatan proyek)

 **Praktik terbaik untuk akun admin**:
+ Jangan komit token akun ke kontrol versi
+ Putar token segera jika terpapar
+ Batasi penggunaan token akun untuk pengaturan dan tugas administratif
+ Atur waktu kedaluwarsa pendek (maksimum 12 jam)
+ Hanya 5 token akun yang dapat dibuat pada waktu tertentu

 **Kapan menggunakan akses berbasis proyek** sebagai gantinya:
+ Lingkungan pengembangan bersama dengan banyak pengguna
+ Lingkungan apa pun yang menyerupai produksi
+ Bila Anda membutuhkan jejak audit tentang siapa yang melakukan tindakan
+ Ketika Anda perlu menegakkan pembatasan sumber daya atau batas akses

Untuk lingkungan produksi dan skenario multi-pengguna, gunakan kontrol akses berbasis proyek dengan peran RBAC khusus yang dipetakan ke grup Pusat Identitas. AWS 

## Kontrol akses berbasis proyek
<a name="_project_based_access_control"></a>

Gunakan Argo CD Projects (AppProject) untuk menyediakan kontrol akses halus dan isolasi sumber daya untuk tim.

**penting**  
Sebelum menetapkan pengguna atau grup ke peran khusus proyek, Anda harus terlebih dahulu memetakannya ke peran CD Argo global (ADMIN, EDITOR, atau VIEWER) dalam konfigurasi kemampuan. Pengguna tidak dapat mengakses Argo CD tanpa pemetaan peran global, meskipun mereka ditugaskan ke peran proyek.  
Pertimbangkan untuk memetakan pengguna ke peran VIEWER secara global, lalu berikan izin tambahan melalui peran khusus proyek. Ini memberikan akses dasar sambil memungkinkan kontrol berbutir halus di tingkat proyek.

Proyek menyediakan:
+  **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 grup Pusat AWS Identitas atau peran CD Argo

 **Contoh proyek untuk isolasi tim**:

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  description: Team A applications

  # Required: Specify which namespaces this project watches for Applications
  sourceNamespaces:
  - argocd

  # Source restrictions
  sourceRepos:
  - https://github.com/myorg/team-a-apps

  # Destination restrictions
  destinations:
  - namespace: team-a-*
    server: arn:aws:eks:us-west-2:111122223333:cluster/production

  # Resource restrictions
  clusterResourceWhitelist:
  - group: ''
    kind: Namespace
  namespaceResourceWhitelist:
  - group: 'apps'
    kind: Deployment
  - group: ''
    kind: Service
  - group: ''
    kind: ConfigMap
```

### Ruang nama sumber
<a name="_source_namespaces"></a>

Saat menggunakan kemampuan CD EKS Argo, `spec.sourceNamespaces` bidang ini diperlukan dalam AppProject definisi. Bidang ini menentukan namespace mana yang dapat berisi Aplikasi atau referensi proyek ApplicationSets ini.

**penting**  
Kemampuan EKS Argo CD hanya mendukung satu namespace untuk Aplikasi dan ApplicationSets —namespace yang Anda tentukan saat membuat kemampuan (biasanya). `argocd` Ini berbeda dari CD Argo open source yang mendukung beberapa ruang nama.

 **AppProject konfigurasi** 

Semua AppProjects harus menyertakan namespace yang dikonfigurasi kemampuan di: `sourceNamespaces`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a-project
  namespace: argocd
spec:
  description: Applications for Team A

  # Required: Specify the capability's configured namespace (configuration.argoCd.namespace)
  sourceNamespaces:
    - argocd  # Must match your capability's namespace configuration

  # Source repositories this project can deploy from
  sourceRepos:
    - 'https://github.com/my-org/team-a-*'

  # Destination restrictions
  destinations:
    - namespace: 'team-a-*'
      server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
```

**catatan**  
Jika Anda menghilangkan namespace kemampuan dari`sourceNamespaces`, Aplikasi atau ApplicationSets dalam namespace itu tidak dapat mereferensikan proyek ini, yang mengakibatkan kegagalan penerapan.

 **Tetapkan pengguna ke proyek**:

Peran proyek memberi pengguna EDITOR dan VIEWER akses ke sumber daya proyek (Aplikasi, ApplicationSets, repositori, dan kredensi cluster) dan kemampuan (log, exec). Tanpa peran proyek, pengguna ini tidak dapat mengakses sumber daya ini bahkan jika mereka memiliki akses peran global.

Pengguna ADMIN memiliki akses ke semua Aplikasi tanpa memerlukan peran proyek.

 **Contoh: Memberikan akses Aplikasi ke anggota tim** 

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: team-a
  namespace: argocd
spec:
  # ... project configuration ...

  sourceNamespaces:
  - argocd

  # Project roles grant Application-level access
  roles:
  - name: developer
    description: Team A developers - can manage Applications
    policies:
    - p, proj:team-a:developer, applications, *, team-a/*, allow
    - p, proj:team-a:developer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 686103e0-f051-7068-b225-e6392b959d9e  # Identity Center group ID

  - name: viewer
    description: Team A viewers - read-only Application access
    policies:
    - p, proj:team-a:viewer, applications, get, team-a/*, allow
    - p, proj:team-a:viewer, clusters, get, *, allow  # See cluster names in UI
    groups:
    - 786203e0-f051-7068-b225-e6392b959d9f  # Identity Center group ID
```

**catatan**  
Sertakan `clusters, get, *, allow` dalam peran proyek untuk memungkinkan pengguna melihat nama cluster di UI. Tanpa izin ini, cluster tujuan ditampilkan sebagai “tidak diketahui”.

 **Memahami kebijakan peran proyek**:

Format kebijakan adalah: `p, proj:<project>:<role>, <resource>, <action>, <object>, <allow/deny>` 

 **Kebijakan sumber daya**:
+  `applications, , team-a/, allow`- Akses penuh ke semua Aplikasi dalam tim-proyek
+  `applications, get, team-a/*, allow`- Akses hanya-baca ke Aplikasi
+  `applications, sync, team-a/*, allow`- Dapat menyinkronkan Aplikasi tetapi tidak membuat/menghapus
+  `applications, delete, team-a/*, allow`- Dapat menghapus Aplikasi (gunakan dengan hati-hati)
+  `applicationsets, , team-a/, allow`- Akses penuh ke ApplicationSets
+  `repositories, *, *, allow`- Akses ke kredensi repositori
+  `clusters, *, *, allow`- Akses ke kredensi cluster

 **Kebijakan kemampuan**:
+  `logs, , team-a/, allow`- Akses ke log aplikasi
+  `exec, , team-a/, allow`- Akses Exec ke pod aplikasi

**catatan**  
Pengguna EDITOR dapat membuat peran proyek untuk memberikan izin kepada diri mereka sendiri dan orang lain dalam proyek yang dapat mereka perbarui. Hal ini memungkinkan lead tim untuk mengontrol akses ke sumber daya cakupan proyek untuk tim mereka tanpa memerlukan intervensi ADMIN.

**catatan**  
Gunakan grup Pusat Identitas IDs (bukan nama grup) di `groups` bidang. Anda juga dapat menggunakan pengguna Pusat Identitas IDs untuk akses pengguna individu. Temukan ini IDs di konsol Pusat AWS Identitas atau menggunakan AWS CLI.

## Pola izin umum
<a name="_common_permission_patterns"></a>

 **Pola 1: Tim admin dengan akses penuh** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam", "SRETeam"]
  }
}
```

Pengguna ADMIN dapat melihat dan mengelola semua sumber daya cakupan proyek tanpa konfigurasi tambahan.

 **Pola 2: Pemimpin tim mengelola proyek, akses pengembang melalui peran proyek** 

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

1. ADMIN membuat proyek untuk setiap tim

1. Pemimpin tim (EDITOR) mengonfigurasi peran proyek untuk memberikan pengembang mereka akses ke sumber daya proyek (Aplikasi, ApplicationSets, kredensi) dan kemampuan (log, eksekutif)

1. Pengembang (VIEWER) hanya dapat mengakses sumber daya dan kemampuan yang diizinkan oleh peran proyek mereka

 **Pola 3: Akses berbasis tim dengan peran proyek** 

1. ADMIN membuat proyek dan tim peta mengarah ke peran EDITOR secara global

1. Pemimpin tim (EDITOR) menetapkan anggota tim untuk peran proyek dalam proyek mereka

1. Anggota tim hanya membutuhkan peran global VIEWER — peran proyek menyediakan akses ke sumber daya dan kemampuan proyek

```
{
  "rbacRoleMapping": {		 	 	 
    "ADMIN": ["PlatformTeam"],
    "EDITOR": ["TeamLeads"],
    "VIEWER": ["AllDevelopers"]
  }
}
```

## Praktik terbaik
<a name="_best_practices"></a>

 **Gunakan grup alih-alih pengguna individu**: Petakan grup Pusat AWS Identitas ke peran CD Argo daripada pengguna individu untuk pengelolaan yang lebih mudah.

 **Mulailah dengan hak istimewa paling sedikit**: Mulailah dengan akses VIEWER dan berikan EDITOR atau ADMIN sesuai kebutuhan.

 **Gunakan proyek untuk isolasi tim**: Buat terpisah AppProjects untuk tim atau lingkungan yang berbeda untuk menegakkan batasan.

 **Federasi Pusat Identitas Leverage**: Konfigurasikan Pusat AWS Identitas untuk berfederasi dengan penyedia identitas perusahaan Anda untuk manajemen pengguna terpusat.

 **Tinjauan akses reguler**: Tinjau pemetaan peran dan tugas proyek secara berkala untuk memastikan tingkat akses yang sesuai.

 **Batasi akses klaster**: Ingat bahwa Argo CD RBAC mengontrol akses ke sumber daya dan operasi Argo CD, tetapi tidak sesuai dengan Kubernetes RBAC. Pengguna dengan akses CD Argo dapat menyebarkan aplikasi ke cluster yang dapat diakses oleh Argo CD. Batasi cluster mana Argo CD dapat mengakses dan menggunakan batasan tujuan proyek untuk mengontrol di mana aplikasi dapat digunakan.

## AWS izin layanan
<a name="shared_aws_service_permissions"></a>

Untuk menggunakan AWS layanan secara langsung di sumber daya Aplikasi (tanpa membuat sumber daya Repositori), lampirkan izin IAM yang diperlukan ke Peran Kemampuan.

 **ECR untuk grafik Helm**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken",
        "ecr:BatchCheckLayerAvailability",
        "ecr:GetDownloadUrlForLayer",
        "ecr:BatchGetImage"
      ],
      "Resource": "*"
    }
  ]
}
```

 **CodeCommit repositori**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

 **CodeConnections (GitHub, GitLab, Bitbucket)**:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codeconnections:UseConnection"
      ],
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

Lihat [Konfigurasikan akses repositori](argocd-configure-repositories.md) untuk detail tentang menggunakan integrasi ini.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Pelajari cara membuat aplikasi dan mengelola penerapan
+  [Konsep Argo CD](argocd-concepts.md)- Memahami konsep Argo CD termasuk Proyek
+  [Pertimbangan keamanan untuk Kemampuan EKS](capabilities-security.md)- Tinjau praktik terbaik keamanan untuk kemampuan

# Bekerja dengan Argo CD
<a name="working-with-argocd"></a>

Dengan Argo CD, Anda mendefinisikan aplikasi di repositori Git dan Argo CD secara otomatis menyinkronkannya ke cluster Kubernetes Anda. Ini memungkinkan penerapan aplikasi deklaratif yang dikendalikan versi dengan deteksi drift otomatis.

## Prasyarat
<a name="_prerequisites"></a>

Sebelum bekerja dengan Argo CD, Anda perlu:
+ Cluster EKS dengan kemampuan Argo CD dibuat (lihat[Membuat kemampuan Argo CD](create-argocd-capability.md))
+ Repositori Git yang berisi manifes Kubernetes
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda

## Tugas umum
<a name="_common_tasks"></a>

Topik berikut memandu Anda melalui tugas-tugas CD Argo umum:

 **[Konfigurasikan akses repositori](argocd-configure-repositories.md)**- Konfigurasikan CD Argo untuk mengakses repositori Git Anda menggunakan AWS Secrets Manager, AWS CodeConnections, atau Kubernetes Secrets.

 **[Daftarkan cluster target](argocd-register-clusters.md)**- Daftarkan cluster target tempat Argo CD akan menyebarkan aplikasi.

 **[Bekerja dengan Proyek CD Argo](argocd-projects.md)**- Mengatur aplikasi dan menegakkan batasan keamanan menggunakan Proyek untuk lingkungan multi-penyewa.

 **[Buat Aplikasi](argocd-create-application.md)**- Buat Aplikasi yang menyebarkan dari repositori Git dengan kebijakan sinkronisasi otomatis atau manual.

 **[Gunakan ApplicationSets](argocd-applicationsets.md)**- Gunakan ApplicationSets untuk menyebarkan aplikasi di beberapa lingkungan atau cluster menggunakan template dan generator.

## Akses UI CD Argo
<a name="_access_the_argo_cd_ui"></a>

Akses UI CD Argo melalui konsol EKS:

1. Buka konsol Amazon EKS

1. Pilih klaster Anda

1. Pilih tab **Kemampuan**

1. Pilih **Argo CD** 

1. Pilih **Buka Argo CD UI** 

UI menyediakan topologi aplikasi visual, status sinkronisasi dan riwayat, kesehatan sumber daya dan peristiwa, kontrol sinkronisasi manual, dan manajemen aplikasi.

## Dokumentasi hulu
<a name="_upstream_documentation"></a>

Untuk informasi rinci tentang fitur Argo CD:
+  [Dokumentasi CD Argo](https://argo-cd.readthedocs.io/) - Panduan pengguna lengkap
+  [Spesifikasi Aplikasi - Referensi](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) API Aplikasi Lengkap
+  [ApplicationSet Panduan](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) - ApplicationSet pola dan contoh
+  [Argo CD GitHub](https://github.com/argoproj/argo-cd) - Kode sumber dan contoh

# Konfigurasikan akses repositori
<a name="argocd-configure-repositories"></a>

Sebelum menerapkan aplikasi, konfigurasikan Argo CD untuk mengakses repositori Git dan registrasi bagan Helm Anda. Argo CD mendukung beberapa metode otentikasi untuk GitHub, Bitbucket GitLab,, dan ECR. AWS CodeCommit AWS 

**catatan**  
Untuk integrasi AWS layanan langsung (bagan Helm ECR, CodeCommit repositori, dan CodeConnections), Anda dapat mereferensikannya secara langsung di sumber daya Aplikasi tanpa membuat konfigurasi Repositori. Peran Kemampuan harus memiliki izin IAM yang diperlukan. Lihat [Konfigurasikan izin Argo CD](argocd-permissions.md) untuk detail.

## Prasyarat
<a name="_prerequisites"></a>
+ Cluster EKS dengan kemampuan Argo CD dibuat
+ Repositori Git yang berisi manifes Kubernetes
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda

**catatan**  
 AWS CodeConnections dapat terhubung ke server Git yang berada di AWS Cloud atau lokal. Untuk informasi selengkapnya, lihat [AWS CodeConnections](https://docs.aws.amazon.com/codeconnections/latest/userguide/welcome.html).

## Metode otentikasi
<a name="_authentication_methods"></a>


| Metode | Kasus Penggunaan | Izin IAM Diperlukan | 
| --- | --- | --- | 
|   **Integrasi langsung dengan AWS layanan**   | 
|  CodeCommit  |  Integrasi langsung dengan AWS CodeCommit repositori Git. Tidak diperlukan konfigurasi Repositori.  |   `codecommit:GitPull`   | 
|  CodeConnections  |  Connect to GitHub, GitLab, atau Bitbucket dengan autentikasi terkelola. Membutuhkan pengaturan koneksi.  |   `codeconnections:UseConnection`   | 
|  Artefak ECR OCI  |  Integrasi langsung dengan AWS ECR untuk bagan Helm OCI dan gambar manifes. Tidak diperlukan konfigurasi Repositori.  |   `arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly`   | 
|   **Konfigurasi repositori dengan kredensional**   | 
|   AWS Secrets Manager (Nama Pengguna/Token)  |  Simpan token atau kata sandi akses pribadi. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (Kunci SSH)  |  Gunakan otentikasi kunci SSH. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|   AWS Secrets Manager (GitHub Aplikasi)  |  GitHub Otentikasi aplikasi dengan kunci pribadi. Mengaktifkan rotasi kredenal tanpa akses Kubernetes.  |   `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess`   | 
|  Rahasia Kubernetes  |  Metode CD Argo standar menggunakan rahasia in-cluster  |  Tidak ada (izin ditangani oleh EKS Access Entry dengan Kubernetes RBAC)  | 

## Akses langsung ke AWS layanan
<a name="direct_access_to_shared_aws_services"></a>

Untuk AWS layanan, Anda dapat mereferensikannya secara langsung di sumber daya Aplikasi tanpa membuat konfigurasi Repositori. Peran Kemampuan harus memiliki izin IAM yang diperlukan.

### CodeCommit repositori
<a name="_codecommit_repositories"></a>

 CodeCommit Repositori referensi langsung di Aplikasi:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Izin Peran Kemampuan yang Diperlukan:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codecommit:GitPull",
      "Resource": "arn:aws:codecommit:region:account-id:repository-name"
    }
  ]
}
```

### CodeConnections
<a name="_codeconnections"></a>

Referensi GitHub, GitLab, atau repositori Bitbucket melalui. CodeConnections Format URL repositori berasal dari koneksi CodeConnections ARN.

Format URL repositori adalah:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app
  namespace: argocd
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Izin Peran Kemampuan yang Diperlukan:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "codeconnections:UseConnection",
      "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id"
    }
  ]
}
```

### Grafik ECR Helm
<a name="_ecr_helm_charts"></a>

ECR menyimpan bagan Helm sebagai artefak OCI. Argo CD mendukung dua cara untuk mereferensikannya:

 **Format helm** (direkomendasikan untuk bagan Helm):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-helm
  namespace: argocd
spec:
  source:
    repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
    helm:
      valueFiles:
        - values.yaml
```

Catatan: Jangan sertakan `oci://` awalan saat menggunakan format Helm. Gunakan `chart` bidang untuk menentukan nama bagan.

 **Format OCI** (untuk artefak OCI dengan manifes Kubernetes):

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-oci
  namespace: argocd
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: artifact-version
    path: path-to-manifests
```

Catatan: Sertakan `oci://` awalan saat menggunakan format OCI. Gunakan `path` bidang sebagai ganti`chart`.

Izin Peran Kemampuan yang Diperlukan - lampirkan kebijakan terkelola:

```
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
```

Kebijakan ini mencakup izin ECR yang diperlukan:`ecr:GetAuthorizationToken`,`ecr:BatchGetImage`, dan. `ecr:GetDownloadUrlForLayer`

## Menggunakan AWS Secrets Manager
<a name="using_shared_aws_secrets_manager"></a>

Simpan kredensyal repositori di Secrets Manager dan referensikan mereka dalam konfigurasi Argo CD Repository. Menggunakan Secrets Manager memungkinkan rotasi kredenal otomatis tanpa memerlukan akses Kubernetes RBAC — kredensyal dapat diputar menggunakan izin IAM ke Secrets Manager, dan Argo CD secara otomatis membaca nilai yang diperbarui.

**catatan**  
Untuk penggunaan kembali kredensyal di beberapa repositori (misalnya, semua repositori di bawah GitHub organisasi), gunakan templat kredensyal repositori dengan. `argocd.argoproj.io/secret-type: repo-creds` Ini memberikan UX yang lebih baik daripada membuat rahasia repositori individu. Untuk informasi selengkapnya, lihat [Kredensial Repositori](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) dalam dokumentasi Argo CD.

### Otentikasi nama pengguna dan token
<a name="_username_and_token_authentication"></a>

Untuk repositori HTTPS dengan token atau kata sandi akses pribadi:

 **Buat rahasia di Secrets Manager**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo \
  --description "GitHub credentials for Argo CD" \
  --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
```

 **Bidang sertifikat klien TLS opsional** (untuk server Git pribadi):

```
aws secretsmanager create-secret \
  --name argocd/my-private-repo \
  --secret-string '{
    "username":"your-username",
    "token":"your-token",
    "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t",
    "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t"
  }'
```

**catatan**  
`tlsClientCertKey`Nilai `tlsClientCertData` dan harus dikodekan base64.

 **Buat Rahasia Repositori yang mereferensikan Secrets Manager**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf
  project: default
```

### Otentikasi kunci SSH
<a name="_ssh_key_authentication"></a>

Untuk akses Git berbasis SSH, simpan kunci pribadi sebagai plaintext (bukan JSON):

 **Buat rahasia dengan kunci pribadi SSH**:

```
aws secretsmanager create-secret \
  --name argocd/my-repo-ssh \
  --description "SSH key for Argo CD" \
  --secret-string "-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
...
-----END OPENSSH PRIVATE KEY-----"
```

 **Buat Rahasia Repositori untuk SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf
  project: default
```

### GitHub Otentikasi aplikasi
<a name="_github_app_authentication"></a>

Untuk otentikasi GitHub Aplikasi dengan kunci pribadi:

 **Buat rahasia dengan kredensyal GitHub Aplikasi**:

```
aws secretsmanager create-secret \
  --name argocd/github-app \
  --description "GitHub App credentials for Argo CD" \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678"
  }'
```

**catatan**  
`githubAppPrivateKeySecret`Nilai harus dikodekan base64.

 **Bidang opsional untuk GitHub Perusahaan**:

```
aws secretsmanager create-secret \
  --name argocd/github-enterprise-app \
  --secret-string '{
    "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=",
    "githubAppID":"123456",
    "githubAppInstallationID":"12345678",
    "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3"
  }'
```

 **Buat Rahasia Repositori untuk GitHub Aplikasi**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-github-app
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf
  project: default
```

### Templat kredensi repositori
<a name="_repository_credential_templates"></a>

Untuk penggunaan kembali kredensyal di beberapa repositori (misalnya, semua repositori di bawah GitHub organisasi atau pengguna), gunakan templat kredensi repositori dengan. `argocd.argoproj.io/secret-type: repo-creds` Ini memberikan UX yang lebih baik daripada membuat rahasia repositori individual untuk setiap repositori.

 **Buat template kredensi repositori**:

```
apiVersion: v1
kind: Secret
metadata:
  name: github-org-creds
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repo-creds
stringData:
  type: git
  url: https://github.com/your-org
  secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
```

Template kredensyal ini berlaku untuk semua repositori yang cocok dengan awalan URL. `https://github.com/your-org` Anda kemudian dapat mereferensikan repositori apa pun di bawah organisasi ini di Aplikasi tanpa membuat rahasia tambahan.

Untuk informasi selengkapnya, lihat [Kredensial Repositori](https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/) dalam dokumentasi Argo CD.

**penting**  
Pastikan Peran Kemampuan IAM Anda memiliki kebijakan terkelola yang `arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess` dilampirkan, atau izin yang setara termasuk `secretsmanager:GetSecretValue` dan izin dekripsi KMS. Lihat [Pertimbangan Argo CD](argocd-considerations.md) konfigurasi kebijakan IAM.

## Menggunakan AWS CodeConnections
<a name="using_shared_aws_codeconnections"></a>

Untuk CodeConnections integrasi, lihat[Connect ke repositori Git dengan AWS CodeConnections](integration-codeconnections.md).

CodeConnections menyediakan otentikasi terkelola untuk GitHub, GitLab, dan Bitbucket tanpa menyimpan kredensyal.

## Menggunakan Rahasia Kubernetes
<a name="_using_kubernetes_secrets"></a>

Simpan kredensyal secara langsung di Kubernetes menggunakan metode CD Argo standar.

 **Untuk HTTPS dengan token akses pribadi**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://github.com/your-org/your-repo
  username: your-username
  password: your-personal-access-token
```

 **Untuk SSH**:

```
apiVersion: v1
kind: Secret
metadata:
  name: my-repo-ssh
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: git@github.com:your-org/your-repo.git
  sshPrivateKey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    ... your private key ...
    -----END OPENSSH PRIVATE KEY-----
```

## CodeCommit repositori
<a name="_codecommit_repositories_2"></a>

Untuk AWS CodeCommit, berikan CodeCommit izin Peran Kemampuan IAM Anda ()`codecommit:GitPull`.

Konfigurasikan repositori:

```
apiVersion: v1
kind: Secret
metadata:
  name: codecommit-repo
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: repository
stringData:
  type: git
  url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo
  project: default
```

Untuk konfigurasi kebijakan IAM yang mendetail, lihat[Pertimbangan Argo CD](argocd-considerations.md).

## Verifikasi koneksi repositori
<a name="_verify_repository_connection"></a>

Periksa status koneksi melalui Argo CD UI di bawah Pengaturan → Repositori. UI menunjukkan status koneksi dan kesalahan otentikasi apa pun.

Rahasia Repositori tidak termasuk informasi status.

## Sumber daya tambahan
<a name="_additional_resources"></a>
+  [Daftarkan cluster target](argocd-register-clusters.md)- Daftarkan cluster target untuk penerapan
+  [Buat Aplikasi](argocd-create-application.md)- Buat Aplikasi pertama Anda
+  [Pertimbangan Argo CD](argocd-considerations.md)- Izin IAM dan konfigurasi keamanan
+  [Repositori Pribadi - Referensi](https://argo-cd.readthedocs.io/en/stable/user-guide/private-repositories/) konfigurasi repositori hulu

# Daftarkan cluster target
<a name="argocd-register-clusters"></a>

Daftarkan cluster untuk mengaktifkan Argo CD untuk menyebarkan aplikasi ke mereka. Anda dapat mendaftarkan cluster yang sama di mana Argo CD berjalan (cluster lokal) atau cluster jarak jauh di akun atau wilayah yang berbeda. Setelah cluster terdaftar, itu akan tetap dalam keadaan koneksi Tidak Dikenal sampai Anda membuat aplikasi dalam cluster itu. Untuk membuat aplikasi Argo CD setelah cluster Anda terdaftar, lihat[Buat Aplikasi](argocd-create-application.md).

## Prasyarat
<a name="_prerequisites"></a>
+ Cluster EKS dengan kemampuan Argo CD dibuat
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda
+ Untuk cluster jarak jauh: izin IAM yang sesuai dan entri akses

## Daftarkan cluster lokal
<a name="_register_the_local_cluster"></a>

Untuk menyebarkan aplikasi ke cluster yang sama di mana Argo CD berjalan, daftarkan sebagai target penyebaran.

**penting**  
Kemampuan Argo CD tidak secara otomatis mendaftarkan cluster lokal. Anda harus mendaftarkannya secara eksplisit untuk menyebarkan aplikasi ke cluster yang sama. Anda dapat menggunakan nama cluster `in-cluster` untuk kompatibilitas dengan sebagian besar contoh Argo CD online.

**catatan**  
Entri Akses EKS secara otomatis dibuat untuk cluster lokal dengan Peran Kemampuan CD Argo, tetapi tidak ada izin RBAC Kubernetes yang diberikan secara default. Ini mengikuti prinsip hak istimewa terkecil — Anda harus secara eksplisit mengonfigurasi izin yang dibutuhkan Argo CD berdasarkan kasus penggunaan Anda. Misalnya, jika Anda hanya menggunakan klaster ini sebagai hub CD Argo untuk mengelola klaster jarak jauh, klaster ini tidak memerlukan izin penerapan lokal. Lihat bagian Persyaratan RBAC Entri Akses di bawah ini untuk opsi konfigurasi.

 **Menggunakan Argo CD CLI**:

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/my-cluster \
  --name local-cluster
```

 **Menggunakan Rahasia Kubernetes**:

```
apiVersion: v1
kind: Secret
metadata:
  name: local-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: local-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster
  project: default
```

Terapkan konfigurasi:

```
kubectl apply -f local-cluster.yaml
```

**catatan**  
Gunakan ARN cluster EKS di `server` bidang, bukan URL server API Kubernetes. Kemampuan yang dikelola diperlukan ARNs untuk mengidentifikasi cluster. Default `kubernetes.default.svc` tidak didukung.

## Daftarkan cluster jarak jauh
<a name="_register_remote_clusters"></a>

Untuk menyebarkan ke cluster jarak jauh:

 **Langkah 1: Buat entri akses pada cluster jarak jauh** 

Ganti *region-code* dengan AWS Wilayah tempat cluster jarak jauh Anda berada, ganti *remote-cluster* dengan nama cluster jarak jauh Anda, dan ganti ARN dengan peran kemampuan Argo CD ARN Anda.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD
```

 **Langkah 2: Kaitkan kebijakan akses dengan izin Kubernetes RBAC** 

Entri Akses memerlukan izin Kubernetes RBAC untuk Argo CD untuk menyebarkan aplikasi. Untuk memulai dengan cepat, Anda dapat menggunakan`AmazonEKSClusterAdminPolicy`:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name remote-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**penting**  
`AmazonEKSClusterAdminPolicy`Ini menyediakan akses cluster-admin penuh (setara dengan). `system:masters` Ini nyaman untuk memulai tetapi tidak boleh digunakan dalam produksi. Untuk lingkungan produksi, gunakan izin yang lebih ketat dengan mengaitkan Entri Akses dengan grup Kubernetes kustom dan membuat Peran atau binding yang sesuai. ClusterRole Lihat bagian penyiapan produksi di bawah ini untuk konfigurasi hak istimewa paling sedikit.

 **Langkah 3: Daftarkan cluster di Argo CD** 

 **Menggunakan Argo CD CLI**:

```
argocd cluster add <cluster-context-name> \
  --aws-cluster-name arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster \
  --name remote-cluster
```

 **Menggunakan Rahasia Kubernetes**:

```
apiVersion: v1
kind: Secret
metadata:
  name: remote-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
stringData:
  name: remote-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/remote-cluster
  project: default
```

Terapkan konfigurasi:

```
kubectl apply -f remote-cluster.yaml
```

## Cluster lintas akun
<a name="_cross_account_clusters"></a>

Untuk menyebarkan ke cluster di akun yang berbeda AWS :

1. Di akun target, buat Access Entry pada cluster EKS target menggunakan Argo CD IAM Capability Role ARN dari akun sumber sebagai prinsipal

1. Kaitkan kebijakan akses dengan izin Kubernetes RBAC yang sesuai

1. Daftarkan cluster di Argo CD menggunakan ARN cluster EKS nya

Tidak diperlukan pembuatan peran IAM tambahan atau konfigurasi kebijakan kepercayaan — Entri Akses EKS menangani akses lintas akun.

Format ARN cluster mencakup wilayah, sehingga penerapan lintas wilayah menggunakan proses yang sama dengan penerapan wilayah yang sama.

## Verifikasi pendaftaran klaster
<a name="_verify_cluster_registration"></a>

Lihat cluster terdaftar:

```
kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=cluster
```

Atau periksa status cluster di Argo CD UI di bawah Pengaturan → Clusters.

## klaster privat
<a name="_private_clusters"></a>

Kemampuan Argo CD menyediakan akses transparan ke cluster EKS yang sepenuhnya pribadi tanpa memerlukan peering VPC atau konfigurasi jaringan khusus.

 AWS mengelola konektivitas antara kemampuan Argo CD dan cluster jarak jauh pribadi secara otomatis.

Cukup daftarkan cluster pribadi menggunakan ARN-nya — tidak diperlukan pengaturan jaringan tambahan.

## Persyaratan Akses Entri RBAC
<a name="_access_entry_rbac_requirements"></a>

Saat Anda membuat kemampuan CD Argo, Entri Akses EKS secara otomatis dibuat untuk Peran Kemampuan, tetapi tidak ada izin RBAC Kubernetes yang diberikan secara default. Desain yang disengaja ini mengikuti prinsip hak istimewa paling kecil—kasus penggunaan yang berbeda memerlukan izin yang berbeda.

Misalnya: \$1 Jika Anda menggunakan cluster hanya sebagai hub CD Argo untuk mengelola cluster jarak jauh, itu tidak memerlukan izin penerapan lokal \$1 Jika Anda menerapkan aplikasi secara lokal, perlu akses baca di seluruh cluster dan tulis akses ke ruang nama tertentu\$1 Jika Anda perlu membuat, itu memerlukan izin cluster-admin tambahan CRDs

Anda harus secara eksplisit mengonfigurasi izin yang dibutuhkan Argo CD berdasarkan kebutuhan Anda.

### Izin minimum untuk Argo CD
<a name="_minimum_permissions_for_argo_cd"></a>

Argo CD membutuhkan dua jenis izin untuk berfungsi tanpa kesalahan:

 **Izin baca (seluruh cluster)**: Argo CD harus dapat membaca semua jenis sumber daya dan Definisi Sumber Daya Kustom (CRDs) di seluruh cluster untuk:
+ Penemuan sumber daya dan pemeriksaan kesehatan
+ Mendeteksi penyimpangan antara keadaan yang diinginkan dan sebenarnya
+ Memvalidasi sumber daya sebelum penerapan

 **Izin tulis (khusus ruang nama)**: Argo CD perlu membuat, memperbarui, dan menghapus izin untuk sumber daya yang ditentukan dalam Aplikasi:
+ Menyebarkan beban kerja aplikasi (Deployment, Services, ConfigMaps dll.)
+ Terapkan Sumber Daya Kustom (CRDs khusus untuk aplikasi Anda)
+ Kelola siklus hidup aplikasi

### Pengaturan cepat
<a name="_quick_setup"></a>

Untuk memulai dengan cepat, pengujian, atau lingkungan pengembangan, gunakan`AmazonEKSClusterAdminPolicy`:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**penting**  
`AmazonEKSClusterAdminPolicy`Ini menyediakan akses cluster-admin penuh (setara dengan`system:masters`), termasuk kemampuan untuk membuat, memodifikasi sumber daya di seluruh cluster CRDs, dan menyebarkan ke namespace apa pun. Ini nyaman untuk pengembangan dan POCs tetapi tidak boleh digunakan dalam produksi. Untuk produksi, gunakan pengaturan hak istimewa paling sedikit di bawah ini.

### Pengaturan produksi dengan hak istimewa paling sedikit
<a name="_production_setup_with_least_privilege"></a>

Untuk lingkungan produksi, buat Kubernetes RBAC kustom yang memberikan:
+ Akses baca seluruh cluster ke semua sumber daya (untuk penemuan dan pemeriksaan kesehatan)
+ Akses tulis khusus ruang nama (untuk penerapan)

 **Langkah 1: Kaitkan Entri Akses dengan grup Kubernetes kustom** 

```
aws eks associate-access-policy \
  --region region-code \
  --cluster-name my-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSEditPolicy \
  --access-scope type=namespace,namespaces=app-namespace
```

 **Langkah 2: Buat ClusterRole untuk akses baca** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: argocd-read-all
rules:
# Read access to all resources for discovery and health checks
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

 **Langkah 3: Buat Peran untuk akses tulis ke ruang nama aplikasi** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: argocd-deploy
  namespace: app-namespace
rules:
# Full access to deploy application resources
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
```

 **Langkah 4: Mengikat peran ke grup Kubernetes** 

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: argocd-read-all
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: argocd-read-all
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: argocd-deploy
  namespace: app-namespace
subjects:
- kind: Group
  name: eks-access-entry:arn:aws:iam::111122223333:role/ArgoCDCapabilityRole
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: argocd-deploy
  apiGroup: rbac.authorization.k8s.io
```

**catatan**  
Format nama grup untuk Entri Akses `eks-access-entry:` diikuti oleh ARN utama. Ulangi RoleBinding untuk setiap namespace di mana Argo CD harus menyebarkan aplikasi.

**penting**  
Argo CD harus dapat membaca semua jenis sumber daya di seluruh cluster untuk pemeriksaan dan penemuan kesehatan, meskipun hanya diterapkan ke ruang nama tertentu. Tanpa akses baca di seluruh cluster, Argo CD akan menampilkan kesalahan saat memeriksa kesehatan aplikasi.

## Batasi akses klaster dengan Proyek
<a name="_restrict_cluster_access_with_projects"></a>

Gunakan Proyek untuk mengontrol kluster dan ruang nama mana yang dapat diterapkan Aplikasi dengan mengonfigurasi cluster target dan ruang nama yang diizinkan di: `spec.destinations`

```
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
  name: production
  namespace: argocd
spec:
  destinations:
  - server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster
    namespace: '*'
  - server: arn:aws:eks:eu-west-1:111122223333:cluster/prod-eu-cluster
    namespace: '*'
  sourceRepos:
  - 'https://github.com/example/production-apps'
```

Lihat perinciannya di [Bekerja dengan Proyek CD Argo](argocd-projects.md).

## Sumber daya tambahan
<a name="_additional_resources"></a>
+  [Bekerja dengan Proyek CD Argo](argocd-projects.md)- Mengatur aplikasi dan menegakkan batas-batas keamanan
+  [Buat Aplikasi](argocd-create-application.md)- Menyebarkan aplikasi pertama Anda
+  [Gunakan ApplicationSets](argocd-applicationsets.md)- Menyebarkan ke beberapa cluster dengan ApplicationSets
+  [Pertimbangan Argo CD](argocd-considerations.md)- Pola multi-cluster dan pengaturan lintas akun
+  [Pengaturan Kluster Deklaratif](https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#clusters) - Referensi konfigurasi cluster hulu

# Bekerja dengan Proyek CD Argo
<a name="argocd-projects"></a>

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
<a name="_when_to_use_projects"></a>

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
<a name="_default_project"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#the-default-project) dalam dokumentasi Argo CD.

## Buat Proyek
<a name="_create_a_project"></a>

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
<a name="_project_configuration"></a>

### Repositori sumber
<a name="_source_repositories"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) dalam dokumentasi Argo CD.

### Pembatasan tujuan
<a name="_destination_restrictions"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#managing-projects) dalam dokumentasi Argo CD.

### Pembatasan sumber daya
<a name="_resource_restrictions"></a>

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
<a name="_assign_applications_to_projects"></a>

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
<a name="_project_roles_and_rbac"></a>

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](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/#project-roles) dalam dokumentasi Argo CD.

## Pola umum
<a name="_common_patterns"></a>

### Proyek Berbasis Lingkungan
<a name="_environment_based_projects"></a>

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
<a name="_team_based_projects"></a>

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
<a name="_multi_cluster_projects"></a>

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
<a name="_best_practices"></a>

 **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 (seperti`team-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
<a name="_additional_resources"></a>
+  [Konfigurasikan izin Argo CD](argocd-permissions.md)- Konfigurasikan integrasi RBAC dan Identity Center
+  [Buat Aplikasi](argocd-create-application.md)- Buat Aplikasi dalam Proyek
+  [Gunakan ApplicationSets](argocd-applicationsets.md)- Gunakan ApplicationSets dengan Proyek untuk penyebaran multi-cluster
+  [Dokumentasi Proyek CD Argo - Referensi](https://argo-cd.readthedocs.io/en/stable/user-guide/projects/) hulu lengkap

# Buat Aplikasi
<a name="argocd-create-application"></a>

Aplikasi mewakili penerapan dalam cluster target. Setiap Aplikasi mendefinisikan sumber (repositori Git) dan tujuan (cluster dan namespace). Ketika diterapkan, Argo CD akan membuat sumber daya yang ditentukan oleh manifes dalam repositori Git ke namespace di cluster. Aplikasi sering menentukan penerapan beban kerja, tetapi mereka dapat mengelola sumber daya Kubernetes apa pun yang tersedia di klaster tujuan.

## Prasyarat
<a name="_prerequisites"></a>
+ Cluster EKS dengan kemampuan Argo CD dibuat
+ Akses repositori dikonfigurasi (lihat) [Konfigurasikan akses repositori](argocd-configure-repositories.md)
+ Kluster target terdaftar (lihat[Daftarkan cluster target](argocd-register-clusters.md))
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda

## Buat Aplikasi dasar
<a name="_create_a_basic_application"></a>

Tentukan Aplikasi yang menyebarkan dari repositori Git:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: guestbook
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/argoproj/argocd-example-apps
    targetRevision: HEAD
    path: guestbook
  destination:
    name: in-cluster
    namespace: default
```

**catatan**  
Gunakan `destination.name` dengan nama cluster yang Anda gunakan saat mendaftarkan cluster (seperti `in-cluster` untuk cluster lokal). `destination.server`Bidang ini juga berfungsi dengan cluster EKS ARNs, tetapi menggunakan nama cluster direkomendasikan untuk keterbacaan yang lebih baik.

Terapkan Aplikasi:

```
kubectl apply -f application.yaml
```

Lihat status Aplikasi:

```
kubectl get application guestbook -n argocd
```

## Konfigurasi sumber
<a name="_source_configuration"></a>

 **Repositori** Git:

```
spec:
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: kubernetes/manifests
```

 **Tag atau komit Git tertentu**:

```
spec:
  source:
    targetRevision: v1.2.0  # or commit SHA
```

 **Bagan helm**:

```
spec:
  source:
    repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - values.yaml
      parameters:
      - name: image.tag
        value: v1.2.0
```

 **Bagan helm dengan nilai dari repositori Git eksternal** (pola multi-sumber):

```
spec:
  sources:
  - repoURL: https://github.com/example/helm-charts
    targetRevision: main
    path: charts/my-app
    helm:
      valueFiles:
      - $values/environments/production/values.yaml
  - repoURL: https://github.com/example/config-repo
    targetRevision: main
    ref: values
```

Untuk informasi selengkapnya, lihat [File Nilai Helm dari Repositori Git Eksternal dalam dokumentasi](https://argo-cd.readthedocs.io/en/stable/user-guide/multiple_sources/#helm-value-files-from-external-git-repository) Argo CD.

 **Bagan helm dari ECR**:

```
spec:
  source:
    repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name
    targetRevision: chart-version
    chart: chart-name
```

Jika Peran Kemampuan memiliki izin ECR yang diperlukan, repositori digunakan secara langsung dan tidak diperlukan konfigurasi Repositori. Lihat [Konfigurasikan akses repositori](argocd-configure-repositories.md) untuk detail.

 **Repositori** Git dari: CodeCommit

```
spec:
  source:
    repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name
    targetRevision: main
    path: kubernetes/manifests
```

Jika Peran Kemampuan memiliki CodeCommit izin yang diperlukan, repositori digunakan secara langsung dan tidak diperlukan konfigurasi Repositori. Lihat [Konfigurasikan akses repositori](argocd-configure-repositories.md) untuk detail.

 **Repositori** Git dari: CodeConnections

```
spec:
  source:
    repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git
    targetRevision: main
    path: kubernetes/manifests
```

Format URL repositori berasal dari koneksi CodeConnections ARN. Jika Peran Kemampuan memiliki CodeConnections izin yang diperlukan dan koneksi dikonfigurasi, repositori digunakan secara langsung dan tidak ada konfigurasi Repositori yang diperlukan. Lihat [Konfigurasikan akses repositori](argocd-configure-repositories.md) untuk detail.

 **Kustomisasi**:

```
spec:
  source:
    repoURL: https://github.com/example/kustomize-app
    targetRevision: main
    path: overlays/production
    kustomize:
      namePrefix: prod-
```

## Kebijakan sinkronisasi
<a name="_sync_policies"></a>

Kontrol bagaimana Argo CD menyinkronkan aplikasi.

 **Sinkronisasi manual (default)**:

Aplikasi memerlukan persetujuan manual untuk menyinkronkan:

```
spec:
  syncPolicy: {}  # No automated sync
```

Memicu sinkronisasi secara manual:

```
kubectl patch application guestbook -n argocd \
  --type merge \
  --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
```

 **Sinkronisasi otomatis**:

Aplikasi secara otomatis menyinkronkan ketika perubahan Git terdeteksi:

```
spec:
  syncPolicy:
    automated: {}
```

 **Penyembuhan diri**:

Secara otomatis mengembalikan perubahan manual ke cluster:

```
spec:
  syncPolicy:
    automated:
      selfHeal: true
```

Saat diaktifkan, Argo CD mengembalikan setiap perubahan manual yang dibuat langsung ke cluster, memastikan Git tetap menjadi sumber kebenaran.

 **Pemangkasan**:

Secara otomatis menghapus sumber daya yang dihapus dari Git:

```
spec:
  syncPolicy:
    automated:
      prune: true
```

**Awas**  
Pemangkasan akan menghapus sumber daya dari cluster Anda. Gunakan dengan hati-hati di lingkungan produksi.

 **Sinkronisasi otomatis gabungan**:

```
spec:
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
    - CreateNamespace=true
```

 **Coba lagi konfigurasi**:

Konfigurasikan perilaku coba lagi untuk sinkronisasi yang gagal:

```
spec:
  syncPolicy:
    retry:
      limit: 5  # Number of failed sync attempts; unlimited if less than 0
      backoff:
        duration: 5s  # Amount to back off (default unit: seconds, also supports "2m", "1h")
        factor: 2  # Factor to multiply the base duration after each failed retry
        maxDuration: 3m  # Maximum amount of time allowed for the backoff strategy
```

Ini sangat berguna untuk sumber daya yang bergantung pada CRDs pembuatan terlebih dahulu, atau ketika bekerja dengan instance kro di mana CRD mungkin tidak segera tersedia.

## Opsi sinkronisasi
<a name="_sync_options"></a>

Konfigurasi sinkronisasi tambahan:

 **Buat namespace jika tidak ada**:

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

 **Lewati dry run untuk sumber daya yang hilang**:

Berguna saat menerapkan sumber daya CRDs yang bergantung pada yang belum ada (seperti instance kro):

```
spec:
  syncPolicy:
    syncOptions:
    - SkipDryRunOnMissingResource=true
```

Ini juga dapat diterapkan pada sumber daya tertentu menggunakan label pada sumber daya itu sendiri.

 **Validasi sumber daya sebelum menerapkan**:

```
spec:
  syncPolicy:
    syncOptions:
    - Validate=true
```

 **Terapkan tidak sinkron saja**:

```
spec:
  syncPolicy:
    syncOptions:
    - ApplyOutOfSyncOnly=true
```

## Fitur sinkronisasi lanjutan
<a name="_advanced_sync_features"></a>

Argo CD mendukung fitur sinkronisasi lanjutan untuk penerapan kompleks:
+  **Gelombang sinkronisasi** - Kontrol urutan pembuatan sumber daya dengan `argocd.argoproj.io/sync-wave` anotasi
+  **Sinkronkan kait** - Jalankan pekerjaan sebelum atau sesudah sinkronisasi dengan `argocd.argoproj.io/hook` anotasi (PreSync,, PostSync) SyncFail
+  **Penilaian kesehatan sumber daya** - Pemeriksaan kesehatan khusus untuk sumber daya khusus aplikasi

Untuk detailnya, lihat [Menyinkronkan Gelombang](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-waves/) dan [Kait Sumber Daya](https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/) dalam dokumentasi Argo CD.

## Abaikan perbedaan
<a name="_ignore_differences"></a>

Mencegah Argo CD menyinkronkan bidang tertentu yang dikelola oleh pengontrol lain (seperti replika pengelola HPA):

```
spec:
  ignoreDifferences:
  - group: apps
    kind: Deployment
    jsonPointers:
    - /spec/replicas
```

Untuk detail tentang pola abaikan dan pengecualian bidang, lihat [Diffing Customization](https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/) dalam dokumentasi Argo CD.

## Penyebaran multi-lingkungan
<a name="_multi_environment_deployment"></a>

Terapkan aplikasi yang sama ke beberapa lingkungan:

 **Pengembangan**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-dev
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: develop
    path: overlays/development
  destination:
    name: dev-cluster
    namespace: my-app
```

 **Produksi**:

```
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: my-app-prod
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/my-app
    targetRevision: main
    path: overlays/production
  destination:
    name: prod-cluster
    namespace: my-app
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
```

## Memantau dan mengelola Aplikasi
<a name="_monitor_and_manage_applications"></a>

 **Lihat status Aplikasi**:

```
kubectl get application my-app -n argocd
```

 **Akses UI CD Argo**:

Buka Argo CD UI melalui konsol EKS untuk melihat topologi aplikasi, status sinkronisasi, kesehatan sumber daya, dan riwayat penerapan. Lihat [Bekerja dengan Argo CD](working-with-argocd.md) petunjuk akses UI.

 **Aplikasi Rollback**:

Kembalikan ke revisi sebelumnya menggunakan Argo CD UI, Argo CD CLI, atau dengan memperbarui spesifikasi Aplikasi ke commit atau tag Git sebelumnya. `targetRevision`

Menggunakan Argo CD CLI:

```
argocd app rollback argocd/my-app <revision-id>
```

**catatan**  
Saat menggunakan Argo CD CLI dengan kemampuan terkelola, tentukan aplikasi dengan awalan namespace:. `namespace/appname`

Untuk informasi selengkapnya, lihat [rollback aplikasi argocd](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_rollback/) di dokumentasi Argo CD.

## Sumber daya tambahan
<a name="_additional_resources"></a>
+  [Bekerja dengan Proyek CD Argo](argocd-projects.md)- Mengatur aplikasi dengan Proyek untuk lingkungan multi-penyewa
+  [Gunakan ApplicationSets](argocd-applicationsets.md)- Menyebarkan ke beberapa cluster dengan template
+  [Spesifikasi Aplikasi](https://argo-cd.readthedocs.io/en/stable/user-guide/application-specification/) - Referensi API Aplikasi Lengkap
+  [Opsi Sinkronisasi](https://argo-cd.readthedocs.io/en/stable/user-guide/sync-options/) - Konfigurasi sinkronisasi lanjutan

# Gunakan ApplicationSets
<a name="argocd-applicationsets"></a>

ApplicationSets menghasilkan beberapa Aplikasi dari template, memungkinkan Anda untuk menyebarkan aplikasi yang sama di beberapa cluster, lingkungan, atau ruang nama dengan definisi sumber daya tunggal.

## Prasyarat
<a name="_prerequisites"></a>
+ Cluster EKS dengan kemampuan Argo CD dibuat
+ Akses repositori dikonfigurasi (lihat) [Konfigurasikan akses repositori](argocd-configure-repositories.md)
+  `kubectl`dikonfigurasi untuk berkomunikasi dengan cluster Anda

**catatan**  
Beberapa cluster target tidak diperlukan untuk ApplicationSets. Anda dapat menggunakan generator selain generator cluster (seperti generator list, git, atau matriks) untuk menyebarkan aplikasi tanpa cluster jarak jauh.

## Bagaimana cara ApplicationSets kerja
<a name="_how_applicationsets_work"></a>

ApplicationSets gunakan generator untuk menghasilkan parameter, lalu terapkan parameter tersebut ke template Aplikasi. Setiap set parameter yang dihasilkan menciptakan satu Aplikasi.

Generator umum untuk penerapan EKS:
+  **Generator daftar** - Secara eksplisit mendefinisikan cluster dan parameter untuk setiap lingkungan
+  **Generator cluster** - Secara otomatis menyebarkan ke semua cluster terdaftar
+  **Generator Git** - Hasilkan Aplikasi dari struktur repositori
+  **Generator matriks** - Gabungkan generator untuk penerapan multi-dimensi
+  **Gabungkan generator** - Gabungkan parameter dari beberapa generator

Untuk referensi generator lengkap, lihat [ApplicationSet Dokumentasi](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/).

## Daftar Generator
<a name="_list_generator"></a>

Terapkan ke beberapa cluster dengan konfigurasi eksplisit:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: guestbook-all-clusters
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - environment: dev
        replicas: "2"
      - environment: staging
        replicas: "3"
      - environment: prod
        replicas: "5"
  template:
    metadata:
      name: 'guestbook-{{environment}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/guestbook
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{environment}}-cluster'
        namespace: guestbook
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

**catatan**  
Gunakan `destination.name` dengan nama cluster untuk keterbacaan yang lebih baik. `destination.server`Bidang ini juga berfungsi dengan cluster EKS ARNs jika diperlukan.

Ini menciptakan tiga Aplikasi:`guestbook-dev`,`guestbook-staging`, dan`guestbook-prod`.

## Generator cluster
<a name="_cluster_generator"></a>

Terapkan ke semua cluster terdaftar secara otomatis:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: cluster-addons
  namespace: argocd
spec:
  generators:
  - clusters: {}
  template:
    metadata:
      name: '{{name}}-addons'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/cluster-addons
        targetRevision: HEAD
        path: addons
      destination:
        server: '{{server}}'
        namespace: kube-system
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

Ini secara otomatis membuat Aplikasi untuk setiap cluster terdaftar.

 **Cluster filter**:

Gunakan `matchLabels` untuk menyertakan cluster tertentu, atau `matchExpressions` untuk mengecualikan cluster:

```
spec:
  generators:
  - clusters:
      selector:
        matchLabels:
          environment: production
        matchExpressions:
        - key: skip-appset
          operator: DoesNotExist
```

## Generator Git
<a name="_git_generators"></a>

Generator Git membuat Aplikasi berdasarkan struktur repositori:
+  **Generator direktori** - Menyebarkan setiap direktori sebagai Aplikasi terpisah (berguna untuk layanan mikro)
+  **Generator file** - Hasilkan Aplikasi dari file parameter (berguna untuk penyebaran multi-penyewa)

 **Contoh: Penyebaran Microservices** 

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: microservices
  namespace: argocd
spec:
  generators:
  - git:
      repoURL: https://github.com/example/microservices
      revision: HEAD
      directories:
      - path: services/*
  template:
    metadata:
      name: '{{path.basename}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/microservices
        targetRevision: HEAD
        path: '{{path}}'
      destination:
        name: my-cluster
        namespace: '{{path.basename}}'
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - CreateNamespace=true
```

Untuk detail tentang generator Git dan konfigurasi berbasis file, lihat [Git Generator dalam dokumentasi](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Git/) Argo CD.

## Generator matriks
<a name="_matrix_generator"></a>

Gabungkan beberapa generator untuk digunakan di berbagai dimensi (lingkungan × cluster):

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: multi-env-multi-cluster
  namespace: argocd
spec:
  generators:
  - matrix:
      generators:
      - list:
          elements:
          - environment: dev
          - environment: staging
          - environment: prod
      - clusters:
          selector:
            matchLabels:
              region: us-west-2
  template:
    metadata:
      name: 'app-{{environment}}-{{name}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: 'overlays/{{environment}}'
      destination:
        name: '{{name}}'
        namespace: 'app-{{environment}}'
```

Untuk detail tentang menggabungkan generator, lihat [Matrix Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators-Matrix/) dalam dokumentasi Argo CD.

## Penyebaran multi-wilayah
<a name="_multi_region_deployment"></a>

Terapkan ke cluster di beberapa wilayah:

```
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: global-app
  namespace: argocd
spec:
  generators:
  - list:
      elements:
      - clusterName: prod-us-west
        region: us-west-2
      - clusterName: prod-us-east
        region: us-east-1
      - clusterName: prod-eu-west
        region: eu-west-1
  template:
    metadata:
      name: 'app-{{region}}'
    spec:
      project: default
      source:
        repoURL: https://github.com/example/app
        targetRevision: HEAD
        path: kubernetes
        helm:
          parameters:
          - name: region
            value: '{{region}}'
      destination:
        name: '{{clusterName}}'
        namespace: app
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
```

## Mengelola ApplicationSets
<a name="_manage_applicationsets"></a>

 **Lihat ApplicationSets dan dihasilkan Aplikasi**:

```
kubectl get applicationsets -n argocd
kubectl get applications -n argocd -l argocd.argoproj.io/application-set-name=<applicationset-name>
```

 **Perbarui ApplicationSet**:

Ubah ApplicationSet spesifikasi dan aplikasikan kembali. Argo CD secara otomatis memperbarui semua Aplikasi yang dihasilkan:

```
kubectl apply -f applicationset.yaml
```

 **Hapus sebuah ApplicationSet**:

```
kubectl delete applicationset <name> -n argocd
```

**Awas**  
Menghapus ApplicationSet menghapus semua Aplikasi yang dihasilkan. Jika Aplikasi tersebut memiliki`prune: true`, sumber daya mereka juga akan dihapus dari cluster target.  
Untuk mempertahankan sumber daya yang digunakan saat menghapus ApplicationSet, setel `.syncPolicy.preserveResourcesOnDeletion` ke `true` dalam spesifikasi. ApplicationSet Untuk informasi lebih lanjut, lihat [Pemangkasan Aplikasi & Penghapusan Sumber Daya](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Application-Deletion/) dalam dokumentasi Argo CD.

**penting**  
 ApplicationSets Fitur Argo CD memiliki pertimbangan keamanan yang harus Anda ketahui sebelum menggunakannya. ApplicationSets Untuk informasi selengkapnya, lihat [ApplicationSet Keamanan](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Security/) dalam dokumentasi Argo CD.

## Sumber daya tambahan
<a name="_additional_resources"></a>
+  [Bekerja dengan Proyek CD Argo](argocd-projects.md)- Mengatur ApplicationSets dengan Proyek
+  [Buat Aplikasi](argocd-create-application.md)- Memahami konfigurasi Aplikasi
+  [ApplicationSet Dokumentasi](https://argo-cd.readthedocs.io/en/stable/user-guide/application-set/) - Referensi dan pola generator lengkap
+  [Referensi Generator](https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/Generators/) - Spesifikasi generator terperinci

# Pertimbangan Argo CD
<a name="argocd-considerations"></a>

Topik ini mencakup pertimbangan penting untuk menggunakan Kemampuan EKS untuk Argo CD, termasuk perencanaan, izin, otentikasi, dan pola penyebaran multi-cluster.

## Perencanaan
<a name="_planning"></a>

Sebelum menerapkan Argo CD, pertimbangkan hal berikut:

 **Strategi repositori**: Tentukan di mana manifes aplikasi Anda akan disimpan (CodeCommit,, GitHub GitLab, Bitbucket). Rencanakan struktur repositori dan strategi percabangan Anda untuk lingkungan yang berbeda.

 **Strategi RBAC**: Rencanakan tim atau pengguna mana yang harus memiliki akses admin, editor, atau penampil. Petakan ini ke grup Pusat AWS Identitas atau peran CD Argo.

 **Arsitektur multi-cluster**: Tentukan apakah Anda akan mengelola beberapa cluster dari satu instance Argo CD. Pertimbangkan untuk menggunakan cluster manajemen khusus untuk Argo CD.

 **Organisasi aplikasi**: Rencanakan bagaimana Anda akan menyusun Aplikasi dan ApplicationSets. Pertimbangkan untuk menggunakan proyek untuk mengatur aplikasi berdasarkan tim atau lingkungan.

 **Kebijakan sinkronisasi**: Putuskan apakah aplikasi harus disinkronkan secara otomatis atau memerlukan persetujuan manual. Sinkronisasi otomatis adalah umum untuk pengembangan, manual untuk produksi.

## Izin
<a name="_permissions"></a>

Untuk informasi rinci tentang Peran Kemampuan IAM, kebijakan kepercayaan, dan praktik terbaik keamanan, lihat [Peran IAM kemampuan Amazon EKS](capability-role.md) dan[Pertimbangan keamanan untuk Kemampuan EKS](capabilities-security.md).

### Ikhtisar Peran Kemampuan IAM
<a name="_iam_capability_role_overview"></a>

Saat Anda membuat sumber daya kemampuan Argo CD, Anda menyediakan Peran Kemampuan IAM. Tidak seperti ACK, Argo CD terutama mengelola sumber daya Kubernetes, bukan sumber daya secara langsung. AWS Namun, Peran Kemampuan IAM diperlukan untuk:
+ Mengakses repositori Git pribadi di CodeCommit
+ Integrasi dengan Pusat AWS Identitas untuk otentikasi
+ Mengakses AWS rahasia di Secrets Manager (jika dikonfigurasi)
+ Penerapan lintas-cluster ke cluster EKS lainnya

### CodeCommit integrasi
<a name="_codecommit_integration"></a>

Jika Anda menggunakan CodeCommit repositori, lampirkan kebijakan dengan izin baca:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codecommit:GitPull"
      ],
      "Resource": "*"
    }
  ]
}
```

**penting**  
Untuk penggunaan produksi, batasi `Resource` bidang ke repositori tertentu ARNs alih-alih menggunakan. `"*"`  
Contoh:  

```
"Resource": "arn:aws:codecommit:us-west-2:111122223333:my-app-repo"
```
Ini membatasi akses kemampuan Argo CD hanya ke repositori yang perlu dikelola.

### Integrasi Secrets Manager
<a name="_secrets_manager_integration"></a>

Jika Anda menyimpan kredensyal repositori di Secrets Manager, lampirkan kebijakan terkelola untuk akses baca:

```
arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess
```

Kebijakan ini mencakup izin yang diperlukan:`secretsmanager:GetSecretValue`,`secretsmanager:DescribeSecret`, dan izin dekripsi KMS.

### Pengaturan dasar
<a name="_basic_setup"></a>

Untuk fungsionalitas CD Argo dasar dengan repositori Git publik, tidak ada kebijakan IAM tambahan yang diperlukan di luar kebijakan kepercayaan.

## Autentikasi
<a name="_authentication"></a>

### AWS Integrasi Pusat Identitas
<a name="shared_aws_identity_center_integration"></a>

Kemampuan terkelola Argo CD terintegrasi langsung dengan AWS Identity Center (sebelumnya AWS SSO), memungkinkan Anda menggunakan penyedia identitas yang ada untuk otentikasi.

Saat Anda mengonfigurasi integrasi Pusat AWS Identitas:

1. Pengguna mengakses Argo CD UI melalui konsol EKS

1. Mereka mengautentikasi menggunakan Pusat AWS Identitas (yang dapat berfederasi ke penyedia identitas perusahaan Anda)

1.  AWS Identity Center menyediakan informasi pengguna dan grup ke Argo CD

1. Argo CD memetakan pengguna dan grup ke peran RBAC berdasarkan konfigurasi Anda

1. Pengguna hanya melihat aplikasi dan sumber daya yang mereka miliki izin untuk diakses

### Menyederhanakan akses dengan set izin Pusat Identitas
<a name="_simplifying_access_with_identity_center_permission_sets"></a>

 AWS Identity Center menyediakan dua jalur otentikasi yang berbeda saat bekerja dengan Argo CD:

 **Otentikasi Argo CD API**: Identity Center menyediakan otentikasi SSO ke UI dan API Argo CD. Ini dikonfigurasi melalui pemetaan peran RBAC kemampuan Argo CD.

 **Akses kluster EKS**: Kemampuan Argo CD menggunakan peran IAM yang disediakan pelanggan untuk mengautentikasi dengan kluster EKS melalui entri akses. Entri akses ini dapat dikonfigurasi secara manual untuk menambah atau menghapus izin.

Anda dapat menggunakan [set izin Pusat Identitas](https://docs.aws.amazon.com/singlesignon/latest/userguide/howtocreatepermissionset.html) untuk menyederhanakan manajemen identitas dengan mengizinkan satu identitas untuk mengakses kluster Argo CD dan EKS. Ini mengurangi overhead dengan mengharuskan Anda mengelola hanya satu identitas di kedua sistem, daripada mempertahankan kredensi terpisah untuk akses CD Argo dan akses cluster.

### Pemetaan peran RBAC
<a name="_rbac_role_mappings"></a>

Argo CD memiliki peran bawaan yang dapat Anda petakan ke pengguna dan grup Pusat AWS Identitas:

 **ADMIN**: Akses penuh ke semua aplikasi dan pengaturan. Dapat membuat, memperbarui, dan menghapus aplikasi. Dapat mengelola konfigurasi Argo CD.

 **EDITOR**: Dapat membuat dan memodifikasi aplikasi. Tidak dapat mengubah pengaturan CD Argo atau menghapus aplikasi.

 **VIEWER**: Akses hanya-baca ke aplikasi. Dapat melihat status dan riwayat aplikasi. Tidak dapat membuat perubahan.

**catatan**  
Nama peran peka huruf besar/kecil dan harus huruf besar (ADMIN, EDITOR, VIEWER).

**penting**  
Integrasi Kemampuan EKS dengan AWS Identity Center mendukung hingga 1.000 identitas per kemampuan Argo CD. Identitas dapat berupa pengguna atau grup.

## Penerapan multi-cluster
<a name="_multi_cluster_deployments"></a>

Kemampuan terkelola Argo CD mendukung penerapan multi-cluster, memungkinkan Anda mengelola aplikasi di seluruh cluster pengembangan, pementasan, dan produksi dari satu instance CD Argo.

### Cara kerja multi-cluster
<a name="_how_multi_cluster_works"></a>

Saat Anda mendaftarkan cluster tambahan dengan Argo CD:

1. Anda membuat rahasia cluster yang mereferensikan kluster EKS target oleh ARN

1. Anda membuat Aplikasi atau ApplicationSets yang menargetkan cluster yang berbeda

1. Argo CD terhubung ke setiap cluster untuk menyebarkan dan menonton sumber daya

1. Anda melihat dan mengelola semua cluster dari satu Argo CD UI

### Prasyarat untuk multi-cluster
<a name="_prerequisites_for_multi_cluster"></a>

Sebelum mendaftarkan cluster tambahan:
+ Buat Entri Akses pada cluster target untuk peran kemampuan Argo CD
+ Pastikan konektivitas jaringan antara kemampuan Argo CD dan cluster target
+ Verifikasi izin IAM untuk mengakses kluster target

### Daftarkan klaster
<a name="_register_a_cluster"></a>

Daftarkan cluster menggunakan Kubernetes Secrets di namespace. `argocd`

Dapatkan ARN cluster target. Ganti *region-code* dengan AWS Region tempat cluster target Anda berada dan ganti *target-cluster* dengan nama cluster target Anda.

```
aws eks describe-cluster \
  --region region-code \
  --name target-cluster \
  --query 'cluster.arn' \
  --output text
```

Buat rahasia cluster menggunakan ARN cluster:

```
apiVersion: v1
kind: Secret
metadata:
  name: target-cluster
  namespace: argocd
  labels:
    argocd.argoproj.io/secret-type: cluster
type: Opaque
stringData:
  name: target-cluster
  server: arn:aws:eks:us-west-2:111122223333:cluster/target-cluster
  project: default
```

**penting**  
Gunakan ARN cluster EKS di `server` bidang, bukan URL server API Kubernetes. Kemampuan yang dikelola diperlukan ARNs untuk mengidentifikasi cluster target.

Terapkan rahasianya:

```
kubectl apply -f cluster-secret.yaml
```

### Konfigurasikan Entri Akses pada kluster target
<a name="_configure_access_entry_on_target_cluster"></a>

Cluster target harus memiliki Entri Akses yang memberikan izin peran kemampuan Argo CD untuk menyebarkan aplikasi. Ganti *region-code* dengan AWS Region tempat cluster target Anda berada, ganti *target-cluster* dengan nama cluster target Anda, dan ganti ARN dengan peran kemampuan Argo CD ARN Anda.

```
aws eks create-access-entry \
  --region region-code \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/ArgoCDCapabilityRole \
  --type STANDARD \
  --kubernetes-groups system:masters
```

**catatan**  
Untuk penggunaan produksi, pertimbangkan untuk menggunakan grup Kubernetes yang lebih ketat daripada grup Kubernetes. `system:masters`

### Akses klaster pribadi
<a name="_private_cluster_access"></a>

Kemampuan terkelola Argo CD dapat diterapkan ke cluster EKS yang sepenuhnya pribadi tanpa memerlukan peering VPC atau konfigurasi jaringan khusus. AWS mengelola konektivitas antara kemampuan Argo CD dan cluster jarak jauh pribadi secara otomatis. Pastikan kontrol akses repositori Anda dan kebijakan Argo CD RBAC dikonfigurasi dengan benar.

### Penerapan lintas akun
<a name="_cross_account_deployments"></a>

Untuk penerapan lintas akun, tambahkan Peran Kemampuan IAM Argo CD dari akun sumber ke Entri Akses EKS kluster target:

1. Di akun target, buat Entri Akses pada kluster EKS target

1. Gunakan Argo CD IAM Capability Role ARN dari akun sumber sebagai prinsipal

1. Konfigurasikan izin Kubernetes RBAC yang sesuai untuk Entri Akses

1. Daftarkan kluster target di Argo CD menggunakan ARN cluster EKS miliknya

Tidak diperlukan pembuatan peran IAM tambahan atau konfigurasi kebijakan kepercayaan — Entri Akses EKS menangani akses lintas akun.

## Praktik terbaik
<a name="_best_practices"></a>

 **Gunakan sumber deklaratif sebagai sumber kebenaran**: Simpan semua manifes aplikasi Anda dalam sumber deklaratif (repositori Git, pendaftar Helm, atau gambar OCI), aktifkan kontrol versi, jejak audit, dan kolaborasi.

 **Menerapkan RBAC yang tepat**: Gunakan integrasi Pusat AWS Identitas untuk mengontrol siapa yang dapat mengakses dan mengelola aplikasi dalam Argo CD. Argo CD mendukung kontrol akses halus ke sumber daya dalam Aplikasi (Deployment, Pod,, Secrets). ConfigMaps

 **Gunakan ApplicationSets untuk penerapan multi-lingkungan**: Gunakan ApplicationSets untuk menyebarkan aplikasi di beberapa cluster atau ruang nama dengan konfigurasi yang berbeda.

## Manajemen siklus hidup
<a name="_lifecycle_management"></a>

### Kebijakan sinkronisasi aplikasi
<a name="_application_sync_policies"></a>

Kontrol bagaimana Argo CD menyinkronkan aplikasi:

 **Sinkronisasi manual**: Aplikasi memerlukan persetujuan manual untuk menyinkronkan perubahan. Direkomendasikan untuk lingkungan **produksi**.

 **Sinkronisasi otomatis**: Aplikasi secara otomatis menyinkronkan ketika perubahan Git terdeteksi. Umum untuk lingkungan pengembangan dan pementasan.

 **Penyembuhan diri**: Secara otomatis mengembalikan perubahan manual yang dibuat ke cluster. Memastikan status klaster cocok dengan Git.

 **Pemangkasan**: Secara otomatis menghapus sumber daya yang dihapus dari Git. Gunakan dengan hati-hati karena ini dapat menghapus sumber daya.

### Aplikasi kesehatan
<a name="_application_health"></a>

Argo CD terus memantau kesehatan aplikasi:
+  **Sehat**: Semua sumber daya berjalan seperti yang diharapkan
+  **Kemajuan**: Sumber daya sedang dibuat atau diperbarui
+  **Terdegradasi**: Beberapa sumber daya tidak sehat
+  **Ditangguhkan**: Aplikasi dijeda
+  **Hilang**: Sumber daya hilang dari cluster

### Sinkronkan jendela
<a name="_sync_windows"></a>

Konfigurasikan jendela sinkronisasi untuk mengontrol kapan aplikasi dapat disinkronkan:
+ Izinkan sinkronisasi hanya selama jendela pemeliharaan
+ Blokir sinkronisasi selama jam kerja
+ Jadwalkan sinkronisasi otomatis untuk waktu tertentu
+ Gunakan jendela sinkronisasi dalam situasi di mana Anda perlu membuat perubahan dan menghentikan sinkronisasi apa pun (skenario break-glass)

## Konfigurasi Webhook untuk sinkronisasi lebih cepat
<a name="_webhook_configuration_for_faster_sync"></a>

Secara default, Argo CD polling repositori Git setiap 6 menit untuk mendeteksi perubahan. Untuk penerapan yang lebih responsif, konfigurasikan webhook Git untuk memicu sinkronisasi langsung saat perubahan didorong.

Webhook memberikan beberapa manfaat:
+ Respons sinkronisasi segera saat kode didorong (detik vs menit)
+ Mengurangi overhead pemungutan suara dan meningkatkan kinerja sistem
+ Penggunaan batas tarif API yang lebih efisien
+ Pengalaman pengguna yang lebih baik dengan umpan balik yang lebih cepat

### Titik akhir webhook
<a name="_webhook_endpoint"></a>

URL webhook mengikuti pola`${serverUrl}/api/webhook`, di mana `serverUrl` URL server CD Argo Anda.

Misalnya, jika URL server CD Argo Anda`https://abc123.eks-capabilities.us-west-2.amazonaws.com`, URL webhook adalah:

```
https://abc123.eks-capabilities.us-west-2.amazonaws.com/api/webhook
```

### Konfigurasikan webhook oleh penyedia Git
<a name="_configure_webhooks_by_git_provider"></a>

 **GitHub**: Di pengaturan repositori Anda, tambahkan webhook dengan URL webhook Argo CD. Atur jenis konten ke `application/json` dan pilih “Just the push event”.

 **GitLab**: Dalam pengaturan proyek Anda, tambahkan webhook dengan URL webhook Argo CD. Aktifkan “Push events” dan opsional “Tag push events”.

 **Bitbucket**: Di pengaturan repositori Anda, tambahkan webhook dengan URL webhook Argo CD. Pilih “Repository push” sebagai pemicunya.

 **CodeCommit**: Buat EventBridge aturan Amazon yang memicu perubahan status CodeCommit repositori dan mengirimkan notifikasi ke titik akhir webhook Argo CD.

Untuk petunjuk konfigurasi webhook yang mendetail, lihat Konfigurasi [Webhook CD Argo](https://argo-cd.readthedocs.io/en/stable/operator-manual/webhook/).

**catatan**  
Webhook melengkapi polling—mereka tidak menggantikannya. Argo CD terus melakukan polling repositori sebagai mekanisme fallback jika pemberitahuan webhook terlewatkan.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Pelajari cara membuat dan mengelola Aplikasi Argo CD
+  [Memecahkan masalah dengan kemampuan Argo CD](argocd-troubleshooting.md)- Memecahkan masalah Argo CD
+  [Bekerja dengan sumber daya kemampuan](working-with-capabilities.md)- Kelola sumber daya kemampuan Argo CD Anda

# Memecahkan masalah dengan kemampuan Argo CD
<a name="argocd-troubleshooting"></a>

Topik ini memberikan panduan pemecahan masalah untuk Kemampuan EKS untuk CD Argo, termasuk pemeriksaan kesehatan kemampuan, masalah sinkronisasi aplikasi, otentikasi repositori, dan penerapan multi-cluster.

**catatan**  
Kemampuan EKS sepenuhnya dikelola dan dijalankan di luar cluster Anda. Anda tidak memiliki akses ke log server CD Argo atau `argocd` namespace. Pemecahan masalah berfokus pada kesehatan kemampuan, status aplikasi, dan konfigurasi.

## Kemampuan aktif tetapi aplikasi tidak disinkronkan
<a name="_capability_is_active_but_applications_arent_syncing"></a>

Jika kemampuan Argo CD Anda menunjukkan `ACTIVE` status tetapi aplikasi tidak disinkronkan, periksa kesehatan kemampuan dan status aplikasi.

 **Periksa kesehatan kemampuan**:

Anda dapat melihat masalah kesehatan dan status kemampuan di konsol EKS atau menggunakan AWS CLI.

 **Konsol**:

1. Buka konsol Amazon EKS di https://console.aws.amazon.com/eks/ rumah\$1/cluster.

1. Pilih nama cluster Anda.

1. Pilih tab **Observability**.

1. Pilih **Monitor cluster**.

1. Pilih tab **Kemampuan** untuk melihat kesehatan dan status untuk semua kemampuan.

 ** AWS CLI**:

```
# View capability status and health
aws eks describe-capability \
  --region region-code \
  --cluster-name my-cluster \
  --capability-name my-argocd

# Look for issues in the health section
```

 **Penyebab umum**:
+  **Repositori tidak dikonfigurasi**: Repositori Git tidak ditambahkan ke Argo CD
+  **Otentikasi gagal**: Kunci SSH, token, atau CodeCommit kredenal tidak valid
+  **Aplikasi tidak dibuat**: Tidak ada sumber daya Aplikasi di cluster
+  **Kebijakan sinkronisasi**: Sinkronisasi manual diperlukan (sinkronisasi otomatis tidak diaktifkan)
+  **Izin IAM: Izin** tidak ada untuk CodeCommit atau Secrets Manager

 **Periksa status aplikasi**:

```
# List applications
kubectl get application -n argocd

# View sync status
kubectl get application my-app -n argocd -o jsonpath='{.status.sync.status}'

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

 **Periksa kondisi aplikasi**:

```
# Describe application to see detailed status
kubectl describe application my-app -n argocd

# View application health
kubectl get application my-app -n argocd -o jsonpath='{.status.health}'
```

## Aplikasi terjebak dalam status “Kemajuan”
<a name="_applications_stuck_in_progressing_state"></a>

Jika aplikasi ditampilkan `Progressing` tetapi tidak pernah mencapai`Healthy`, periksa status sumber daya aplikasi dan peristiwa.

 **Periksa kesehatan sumber daya**:

```
# View application resources
kubectl get application my-app -n argocd -o jsonpath='{.status.resources}'

# Check for unhealthy resources
kubectl describe application my-app -n argocd | grep -A 10 "Health Status"
```

 **Penyebab umum**:
+  **Deployment not ready**: Pod gagal memulai atau probe kesiapan gagal
+  **Ketergantungan sumber** daya: Sumber daya menunggu sumber daya lain siap
+  **Kesalahan penarikan gambar**: Gambar kontainer tidak dapat diakses
+  **Sumber daya tidak mencukupi**: Cluster kekurangan CPU atau memori untuk pod

 **Verifikasi konfigurasi cluster target** (untuk pengaturan multi-cluster):

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# View cluster secret details
kubectl get secret cluster-secret-name -n argocd -o yaml
```

## Kegagalan otentikasi repositori
<a name="_repository_authentication_failures"></a>

Jika Argo CD tidak dapat mengakses repositori Git Anda, verifikasi konfigurasi otentikasi.

 **Untuk CodeCommit repositori**:

Verifikasi Peran Kemampuan IAM memiliki CodeCommit izin:

```
# View IAM policies
aws iam list-attached-role-policies --role-name my-argocd-capability-role
aws iam list-role-policies --role-name my-argocd-capability-role

# Get specific policy details
aws iam get-role-policy --role-name my-argocd-capability-role --policy-name policy-name
```

Peran tersebut membutuhkan `codecommit:GitPull` izin untuk repositori.

 **Untuk repositori Git pribadi**:

Verifikasi kredenal repositori dikonfigurasi dengan benar:

```
# Check repository secret exists
kubectl get secret -n argocd repo-secret-name -o yaml
```

Pastikan rahasia berisi kredensi otentikasi yang benar (kunci SSH, token, atau nama pengguna/kata sandi).

 **Untuk repositori menggunakan Secrets** Manager:

```
# Verify IAM Capability Role has Secrets Manager permissions
aws iam list-attached-role-policies --role-name my-argocd-capability-role

# Test secret retrieval
aws secretsmanager get-secret-value --secret-id arn:aws:secretsmanager:region-code:111122223333:secret:my-secret
```

## Masalah penyebaran multi-cluster
<a name="_multi_cluster_deployment_issues"></a>

Jika aplikasi tidak menerapkan ke cluster jarak jauh, verifikasi registrasi klaster dan konfigurasi akses.

 **Periksa pendaftaran klaster**:

```
# List registered clusters
kubectl get secret -n argocd -l argocd.argoproj.io/secret-type=cluster

# Verify cluster secret format
kubectl get secret CLUSTER_SECRET_NAME -n argocd -o yaml
```

Pastikan `server` field tersebut berisi ARN klaster EKS, bukan URL API Kubernetes.

 **Verifikasi Entri Akses kluster target**:

Pada cluster target, periksa apakah Peran Kemampuan CD Argo memiliki Entri Akses:

```
# List access entries (run on target cluster or use AWS CLI)
aws eks list-access-entries --cluster-name target-cluster

# Describe specific access entry
aws eks describe-access-entry \
  --cluster-name target-cluster \
  --principal-arn arn:aws:iam::[.replaceable]111122223333:role/my-argocd-capability-role
```

 **Periksa izin IAM untuk** lintas akun:

Untuk penerapan lintas akun, verifikasi Peran Kemampuan CD Argo memiliki Entri Akses pada kluster target. Kemampuan terkelola menggunakan Entri Akses EKS untuk akses lintas akun, bukan asumsi peran IAM.

Untuk informasi lebih lanjut tentang konfigurasi multi-cluster, lihat[Daftarkan cluster target](argocd-register-clusters.md).

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Pertimbangan Argo CD](argocd-considerations.md)- Pertimbangan Argo CD dan praktik terbaik
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Membuat dan mengelola Aplikasi Argo CD
+  [Daftarkan cluster target](argocd-register-clusters.md)- Konfigurasikan penerapan multi-cluster
+  [Memecahkan Masalah Kemampuan EKS](capabilities-troubleshooting.md)- Panduan pemecahan masalah kemampuan umum

# Membandingkan Kemampuan EKS untuk Argo CD dengan Argo CD yang dikelola sendiri
<a name="argocd-comparison"></a>

Kemampuan EKS untuk Argo CD memberikan pengalaman CD Argo yang dikelola sepenuhnya yang berjalan di EKS. Untuk perbandingan umum Kemampuan EKS vs solusi yang dikelola sendiri, lihat[Pertimbangan Kemampuan EKS](capabilities-considerations.md). Topik ini berfokus pada perbedaan spesifik CD Argo, termasuk otentikasi, manajemen multi-cluster, dan dukungan fitur hulu.

## Perbedaan dari CD Argo hulu
<a name="_differences_from_upstream_argo_cd"></a>

Kemampuan EKS untuk Argo CD didasarkan pada CD Argo hulu tetapi berbeda dalam cara diakses, dikonfigurasi, dan terintegrasi dengan layanan. AWS 

 **RBAC dan otentikasi**: Kemampuan ini dilengkapi dengan tiga peran RBAC (admin, editor, penampil) dan menggunakan Pusat AWS Identitas untuk otentikasi alih-alih otentikasi bawaan Argo CD. Konfigurasikan pemetaan peran melalui `rbacRoleMapping` parameter kemampuan untuk memetakan grup Pusat Identitas ke peran CD Argo, bukan melalui CD Argo. `argocd-rbac-cm` ConfigMap Argo CD UI di-host dengan URL langsungnya sendiri (temukan di konsol EKS di bawah tab Capabilities cluster Anda), dan akses API menggunakan AWS otentikasi dan otorisasi melalui IAM.

 **Konfigurasi cluster**: Kemampuan tidak secara otomatis mengkonfigurasi cluster lokal atau hub-and-spoke topologi. Anda mengonfigurasi kluster target penerapan dan entri akses EKS. Kemampuan ini hanya mendukung klaster Amazon EKS sebagai target penerapan menggunakan kluster EKS ARNs (bukan server API Kubernetes). URLs Kemampuan tidak secara otomatis menambahkan cluster lokal (`kubernetes.default.svc`) sebagai target penyebaran — untuk menyebarkan ke cluster yang sama di mana kemampuan dibuat, secara eksplisit mendaftarkan cluster tersebut menggunakan ARN -nya.

 **Akses cluster jarak jauh yang disederhanakan**: Kemampuan ini menyederhanakan penerapan multi-cluster dengan menggunakan Entri Akses EKS untuk memberikan akses CD Argo ke cluster jarak jauh, menghilangkan kebutuhan untuk mengonfigurasi Peran IAM untuk Akun Layanan (IRSA) atau mengatur asumsi peran IAM lintas akun. Kemampuan ini juga menyediakan akses transparan ke kluster EKS yang sepenuhnya pribadi tanpa memerlukan peering VPC atau konfigurasi jaringan khusus AWS — mengelola konektivitas antara kemampuan Argo CD dan cluster jarak jauh pribadi secara otomatis.

 **Integrasi AWS layanan langsung**: Kemampuan menyediakan integrasi langsung dengan AWS layanan melalui izin IAM Peran Kemampuan. Anda dapat CodeCommit mereferensikan repositori, bagan Helm ECR, dan CodeConnections langsung di sumber daya Aplikasi tanpa membuat konfigurasi Repositori. Ini menyederhanakan otentikasi dan menghilangkan kebutuhan untuk mengelola kredensyal terpisah untuk layanan. AWS Lihat [Konfigurasikan akses repositori](argocd-configure-repositories.md) untuk detail.

 **Dukungan namespace**: Kemampuan ini mengharuskan Anda untuk menentukan satu namespace di mana Aplikasi Argo CD ApplicationSet, dan sumber daya AppProject khusus harus dibuat.

**catatan**  
Pembatasan namespace ini hanya berlaku untuk sumber daya kustom Argo CD sendiri (Application,,). ApplicationSet AppProject Beban kerja aplikasi Anda dapat diterapkan ke namespace apa pun di klaster target apa pun. Misalnya, jika Anda membuat kemampuan dengan namespace`argocd`, semua Aplikasi CRs harus dibuat di `argocd` namespace, tetapi Aplikasi tersebut dapat menyebarkan beban kerja ke,, `default``production`, `staging` atau namespace lainnya.

**catatan**  
Kemampuan terkelola memiliki persyaratan khusus untuk penggunaan dan AppProject konfigurasi CLI:  
Saat menggunakan Argo CD CLI, tentukan aplikasi dengan awalan namespace: `argocd app sync namespace/appname` 
AppProject sumber daya harus menentukan `.spec.sourceNamespaces` untuk menentukan ruang nama mana yang dapat dilihat proyek untuk Aplikasi (biasanya disetel ke namespace yang Anda tentukan saat membuat kemampuan)
Anotasi pelacakan sumber daya menggunakan format: `namespace_appname:group/kind:namespace/name` 

 **Fitur yang tidak didukung**: Fitur berikut tidak tersedia dalam kemampuan terkelola:
+ Config Management Plugins (CMPs) untuk pembuatan manifes kustom
+ Skrip Lua khusus untuk penilaian kesehatan sumber daya (pemeriksaan kesehatan bawaan untuk sumber daya standar didukung)
+ Pengontrol Pemberitahuan
+ Penyedia SSO khusus (hanya Pusat AWS Identitas yang didukung, termasuk identitas federasi pihak ketiga melalui Pusat AWS Identitas)
+ Ekstensi UI dan spanduk kustom
+ Akses langsung ke`argocd-cm`,`argocd-params`, dan konfigurasi lainnya ConfigMaps
+ Memodifikasi batas waktu sinkronisasi (tetap pada 120 detik)

 **Kompatibilitas**: Aplikasi dan ApplicationSets bekerja secara identik dengan CD Argo hulu tanpa perubahan pada manifes Anda. Kemampuannya menggunakan Kubernetes yang sama APIs dan CRDs, jadi alat seperti `kubectl` bekerja dengan cara yang sama. Kemampuan ini sepenuhnya mendukung Aplikasi dan ApplicationSets, GitOps alur kerja dengan sinkronisasi otomatis, penerapan multi-cluster, kebijakan sinkronisasi (otomatis, pangkas, penyembuhan sendiri), gelombang sinkronisasi dan kait, penilaian kesehatan untuk sumber daya Kubernetes standar, kemampuan rollback, sumber repositori Git (HTTPS dan SSH), Helm, Kustomize, dan manifes YAMAL biasa, kredensi aplikasi, proyek untuk multi-tenancy, dan pengecualian sumber daya dan inklusi. GitHub 

## Menggunakan Argo CD CLI dengan kemampuan terkelola
<a name="argocd-cli-configuration"></a>

CLI CD Argo bekerja sama dengan CD Argo hulu untuk sebagian besar operasi, tetapi otentikasi dan pendaftaran cluster berbeda.

### Prasyarat
<a name="_prerequisites"></a>

Instal Argo CD CLI mengikuti petunjuk instalasi [upstream](https://argo-cd.readthedocs.io/en/stable/cli_installation/).

### Konfigurasi
<a name="_configuration"></a>

Konfigurasikan CLI menggunakan variabel lingkungan:

1. Dapatkan URL server CD Argo dari konsol EKS (di bawah tab **Capabilities** cluster Anda), atau gunakan AWS CLI. `https://`Awalan harus dihapus:

   ```
   export ARGOCD_SERVER=$(aws eks describe-capability \
     --cluster-name my-cluster \
     --capability-name my-argocd \
     --query 'capability.configuration.argoCd.serverUrl' \
     --output text \
     --region region-code | sed 's|^https://||')
   ```

1. Buat token akun dari Argo CD UI (**Pengaturan** → **Akun** → **admin** → **Hasilkan Token Baru**), lalu atur sebagai variabel lingkungan:

   ```
   export ARGOCD_AUTH_TOKEN="your-token-here"
   ```

**penting**  
Konfigurasi ini menggunakan token akun admin untuk alur kerja penyiapan dan pengembangan awal. Untuk kasus penggunaan produksi, gunakan peran dan token dengan cakupan proyek untuk mengikuti prinsip hak istimewa paling sedikit. Untuk informasi selengkapnya tentang mengonfigurasi peran proyek dan RBAC, lihat. [Konfigurasikan izin Argo CD](argocd-permissions.md)

1. Atur opsi gRPC yang diperlukan:

   ```
   export ARGOCD_OPTS="--grpc-web"
   ```

Dengan variabel lingkungan ini diatur, Anda dapat menggunakan Argo CD CLI tanpa `argocd login` perintah.

### Perbedaan utama
<a name="_key_differences"></a>

Kemampuan terkelola memiliki batasan CLI berikut:
+  `argocd admin`perintah tidak didukung (mereka memerlukan akses pod langsung)
+  `argocd login`tidak didukung (gunakan akun atau token proyek sebagai gantinya)
+  `argocd cluster add`membutuhkan `--aws-cluster-name` bendera dengan ARN cluster EKS

### Contoh: Daftarkan cluster
<a name="_example_register_a_cluster"></a>

Daftarkan kluster EKS untuk penerapan aplikasi:

```
# Get the cluster ARN
CLUSTER_ARN=$(aws eks describe-cluster \
  --name my-cluster \
  --query 'cluster.arn' \
  --output text)

# Register the cluster
argocd cluster add $CLUSTER_ARN \
  --aws-cluster-name $CLUSTER_ARN \
  --name in-cluster \
  --project default
```

Untuk dokumentasi CLI CD Argo lengkap, lihat referensi [Argo CD CLI](https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd/).

## Jalur Migrasi
<a name="_migration_path"></a>

Anda dapat bermigrasi dari CD Argo yang dikelola sendiri ke kemampuan terkelola:

1. Tinjau konfigurasi CD Argo Anda saat ini untuk fitur yang tidak didukung (Pengontrol pemberitahuan, CMPs, pemeriksaan kesehatan khusus, ekstensi UI)

1. Skalakan pengontrol CD Argo yang dikelola sendiri ke nol replika untuk mencegah konflik

1. Buat sumber daya kemampuan Argo CD di cluster Anda

1. Ekspor Aplikasi Anda yang ada, ApplicationSets, dan AppProjects

1. Migrasikan kredensyal repositori, rahasia klaster, dan templat kredensi repositori (repocreds)

1. Jika menggunakan kunci GPG, sertifikat TLS, atau host yang dikenal SSH, migrasi konfigurasi ini juga

1. Perbarui `destination.server` bidang untuk menggunakan nama cluster atau kluster EKS ARNs

1. Terapkan ke instance CD Argo yang dikelola

1. Verifikasi aplikasi disinkronkan dengan benar

1. Nonaktifkan instalasi Argo CD yang dikelola sendiri

Kemampuan terkelola menggunakan CD Argo APIs dan definisi sumber daya yang sama, sehingga manifes Anda yang ada bekerja dengan modifikasi minimal.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Membuat kemampuan Argo CD](create-argocd-capability.md)- Buat sumber daya kemampuan Argo CD
+  [Bekerja dengan Argo CD](working-with-argocd.md)- Menyebarkan aplikasi pertama Anda
+  [Pertimbangan Argo CD](argocd-considerations.md)- Konfigurasikan integrasi Pusat AWS Identitas