

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

# 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