

 **Bantu meningkatkan 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 GitHub ** tautan ** Edit halaman ini di yang terletak di panel kanan setiap halaman.

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

# Konsep ACK
<a name="ack-concepts"></a>

ACK mengelola AWS sumber daya melalui API Kubernetes dengan terus mendamaikan status yang diinginkan dalam manifes Anda dengan status aktual di. AWS Saat Anda membuat atau memperbarui sumber daya kustom Kubernetes, ACK membuat panggilan AWS API yang diperlukan untuk membuat atau memodifikasi AWS sumber daya yang sesuai, lalu memantaunya untuk penyimpangan dan memperbarui status Kubernetes untuk mencerminkan status saat ini. Pendekatan ini memungkinkan Anda mengelola infrastruktur menggunakan alat dan alur kerja Kubernetes yang sudah dikenal sambil menjaga konsistensi antara cluster Anda dan. AWS

Topik ini menjelaskan konsep dasar di balik bagaimana ACK mengelola AWS sumber daya melalui API Kubernetes.

## Memulai dengan ACK
<a name="_getting_started_with_ack"></a>

Setelah membuat kemampuan ACK (lihat[Buat kemampuan ACK](create-ack-capability.md)), Anda dapat mulai mengelola AWS sumber daya menggunakan manifes Kubernetes di cluster Anda.

Sebagai contoh, buat manifes bucket S3 ini di`bucket.yaml`, pilih nama bucket unik Anda sendiri.

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: my-test-bucket
  namespace: default
spec:
  name: {{my-unique-bucket-name-12345}}
```

Terapkan manifes:

```
kubectl apply -f bucket.yaml
```

Periksa statusnya:

```
kubectl get bucket my-test-bucket
kubectl describe bucket my-test-bucket
```

Verifikasi bucket dibuat di AWS:

```
aws s3 ls | grep {{my-unique-bucket-name-12345}}
```

Hapus sumber daya Kubernetes:

```
kubectl delete bucket my-test-bucket
```

Verifikasi bucket telah dihapus dari AWS:

```
aws s3 ls | grep {{my-unique-bucket-name-12345}}
```

Bucket seharusnya tidak lagi muncul dalam daftar, menunjukkan bahwa ACK mengelola siklus hidup penuh sumber AWS daya.

Untuk informasi selengkapnya tentang memulai dengan ACK, lihat [ Memulai dengan ACK ](https://aws-controllers-k8s.github.io/docs/getting-started) di situs web ACK.

## Siklus hidup sumber daya dan rekonsiliasi
<a name="_resource_lifecycle_and_reconciliation"></a>

ACK menggunakan loop rekonsiliasi berkelanjutan untuk memastikan AWS sumber daya Anda cocok dengan status yang diinginkan yang ditentukan dalam manifes Kubernetes Anda.

 **Bagaimana rekonsiliasi bekerja**:

1. Anda membuat atau memperbarui sumber daya kustom Kubernetes (misalnya, S3 Bucket)

1. ACK mendeteksi perubahan dan membandingkan keadaan yang diinginkan dengan keadaan sebenarnya di AWS 

1. Jika berbeda, ACK membuat panggilan AWS API untuk merekonsiliasi perbedaan

1. ACK memperbarui status sumber daya di Kubernetes untuk mencerminkan status saat ini

1. Loop berulang terus menerus, biasanya setiap beberapa jam

Rekonsiliasi dipicu saat Anda membuat sumber daya Kubernetes baru, memperbarui sumber daya yang ada`spec`, atau ketika ACK mendeteksi penyimpangan AWS dari perubahan manual yang dilakukan di luar ACK. Selain itu, ACK melakukan rekonsiliasi berkala dengan periode sinkronisasi ulang 10 jam. Perubahan pada sumber daya Kubernetes memicu rekonsiliasi segera, sementara deteksi penyimpangan pasif dari perubahan AWS sumber daya hulu terjadi selama sinkronisasi ulang periodik.

Saat mengerjakan contoh memulai di atas, ACK melakukan langkah-langkah ini:

1. Memeriksa apakah bucket ada di AWS 

1. Jika tidak, panggilan `s3:CreateBucket` 

1. Memperbarui status Kubernetes dengan bucket ARN dan state

1. Melanjutkan pemantauan untuk penyimpangan

Untuk informasi lebih lanjut tentang cara kerja ACK, lihat Rekonsiliasi [ ACK ](https://aws-controllers-k8s.github.io/docs/concepts#reconciliation-loop) di situs web ACK.

## Kondisi status
<a name="_status_conditions"></a>

Sumber daya ACK menggunakan kondisi status untuk mengkomunikasikan keadaan mereka. Memahami kondisi ini membantu Anda memecahkan masalah dan memahami kesehatan sumber daya.
+  **Si ** ap: Menunjukkan sumber daya siap dikonsumsi (kondisi Kubernetes standar).
+  **ACK.ResourceSynced**: Menunjukkan spesifikasi sumber daya cocok dengan status AWS sumber daya.
+  **ACK.Terminal**: Menunjukkan kesalahan yang tidak dapat dipulihkan telah terjadi.
+  **ACK.Adopted**: Menunjukkan sumber daya diadopsi dari AWS sumber daya yang ada daripada dibuat baru.
+  **ACK.Recoverable**: Menunjukkan kesalahan yang dapat dipulihkan yang dapat diselesaikan tanpa memperbarui spesifikasi.
+  **ACK.Advisory**: Memberikan informasi penasihat tentang sumber daya.
+  **ACK.LateInitialized**: Menunjukkan apakah inisialisasi bidang yang terlambat selesai.
+  **ACK.ReferencesResolved**: Menunjukkan apakah semua `AWSResourceReference` bidang telah diselesaikan.
+  **ACK.IAMRoleSelected**: Menunjukkan apakah IAMRoleSelector a telah dipilih untuk mengelola sumber daya ini.

Periksa status sumber daya:

```
# Check if resource is ready
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}'

# Check for terminal errors
kubectl get bucket my-bucket -o jsonpath='{.status.conditions[?(@.type=="ACK.Terminal")]}'
```

Contoh status:

```
status:
  conditions:
  - type: Ready
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.ResourceSynced
    status: "True"
    lastTransitionTime: "2024-01-15T10:30:00Z"
  - type: ACK.Terminal
    status: "False"
  ackResourceMetadata:
    arn: arn:aws:s3:::my-unique-bucket-name
    ownerAccountID: "111122223333"
    region: us-west-2
```

Untuk informasi lebih lanjut tentang status dan kondisi ACK, lihat [ Kondisi ACK ](https://aws-controllers-k8s.github.io/docs/concepts#conditions) di situs web ACK.

## Kebijakan penghapusan
<a name="_deletion_policies"></a>

Kebijakan penghapusan ACK mengontrol apa yang terjadi pada AWS sumber daya saat Anda menghapus sumber daya Kubernetes.

 **Hapus (default) ** 

Sumber AWS daya dihapus saat Anda menghapus sumber daya Kubernetes: Ini adalah perilaku default.

```
# No annotation needed - this is the default
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: temp-bucket
spec:
  name: temporary-bucket
```

Menghapus sumber daya ini akan menghapus bucket S3 di AWS.

 **Pertahankan ** 

Sumber AWS daya disimpan saat Anda menghapus sumber daya Kubernetes:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: important-bucket
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  name: production-data-bucket
```

Menghapus sumber daya ini akan menghapusnya dari Kubernetes tetapi meninggalkan bucket S3. AWS

`retain`Kebijakan ini berguna untuk database produksi yang seharusnya hidup lebih lama dari sumber daya Kubernetes, sumber daya bersama yang digunakan oleh beberapa aplikasi, sumber daya dengan data penting yang tidak boleh dihapus secara tidak sengaja, atau manajemen ACK sementara tempat Anda mengadopsi sumber daya, mengonfigurasinya, lalu melepaskannya kembali ke manajemen manual.

Untuk informasi selengkapnya tentang kebijakan penghapusan [ ACK, lihat Kebijakan Penghapusan ACK ](https://aws-controllers-k8s.github.io/docs/guides/deletion-policy) di situs web ACK.

## Adopsi sumber daya
<a name="_resource_adoption"></a>

Adopsi memungkinkan Anda untuk membawa AWS sumber daya yang ada di bawah manajemen ACK tanpa membuatnya kembali.

Kapan menggunakan adopsi:
+ Migrasi infrastruktur yang ada ke manajemen ACK
+ Memulihkan AWS sumber daya yatim piatu jika terjadi penghapusan sumber daya yang tidak disengaja di Kubernetes
+ Mengimpor sumber daya yang dibuat oleh alat lain (CloudFormation, Terraform)

Bagaimana adopsi bekerja:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Saat Anda membuat sumber daya ini:

1. ACK memeriksa apakah bucket dengan nama itu ada di AWS 

1. Jika ditemukan, ACK mengadopsinya (tidak ada panggilan API untuk dibuat)

1. ACK membaca konfigurasi saat ini dari AWS 

1. ACK memperbarui status Kubernetes untuk mencerminkan keadaan sebenarnya

1. Pembaruan di masa mendatang merekonsiliasi sumber daya secara normal

Setelah diadopsi, sumber daya dikelola seperti sumber daya ACK lainnya, dan menghapus sumber daya Kubernetes akan menghapus sumber AWS daya kecuali Anda menggunakan kebijakan penghapusan. `retain`

Saat mengadopsi sumber daya, AWS sumber daya harus sudah ada dan ACK memerlukan izin baca untuk menemukannya. `adopt-or-create`Kebijakan mengadopsi sumber daya jika ada, atau membuatnya jika tidak ada. Ini berguna ketika Anda menginginkan alur kerja deklaratif yang berfungsi apakah sumber daya ada atau tidak.

Untuk informasi selengkapnya tentang adopsi sumber daya [ ACK, lihat Adopsi Sumber Daya ACK ](https://aws-controllers-k8s.github.io/docs/guides/adoption) di situs web ACK.

## Cross-account dan sumber daya lintas wilayah
<a name="_cross_account_and_cross_region_resources"></a>

ACK dapat mengelola sumber daya di berbagai AWS akun dan wilayah dari satu cluster.

 **Cross-region anotasi sumber daya ** 

Anda dapat menentukan wilayah sumber AWS daya menggunakan anotasi:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: eu-bucket
  annotations:
    services.k8s.aws/region: eu-west-1
spec:
  name: my-eu-bucket
```

Anda juga dapat menentukan wilayah semua sumber AWS daya yang dibuat dalam namespace tertentu:

 **Anotasi namespace ** 

Tetapkan wilayah default untuk semua sumber daya dalam namespace:

```
apiVersion: v1
kind: Namespace
metadata:
  name: production
  annotations:
    services.k8s.aws/default-region: us-west-2
```

Sumber daya yang dibuat di namespace ini menggunakan wilayah ini kecuali diganti dengan anotasi tingkat sumber daya.

 **Cross-account** 

Gunakan Pemilih Peran IAM untuk memetakan peran IAM tertentu ke ruang nama:

```
apiVersion: services.k8s.aws/v1alpha1
kind: IAMRoleSelector
metadata:
  name: target-account-config
spec:
  arn: arn:aws:iam::444455556666:role/ACKTargetAccountRole
  namespaceSelector:
    names:
      - production
```

Sumber daya yang dibuat di namespace yang dipetakan secara otomatis menggunakan peran yang ditentukan.

Untuk mempelajari selengkapnya tentang Pemilih Peran IAM, lihat Manajemen Sumber [ Cross-Account Daya ACK. ](https://aws-controllers-k8s.github.io/docs/guides/cross-account) Untuk detail konfigurasi lintas akun, lihat[Konfigurasikan izin ACK](ack-permissions.md).

## Penanganan kesalahan dan perilaku coba lagi
<a name="_error_handling_and_retry_behavior"></a>

ACK secara otomatis menangani kesalahan sementara dan mencoba kembali operasi yang gagal.

Strategi coba lagi:
+ Kesalahan sementara (pembatasan laju, masalah layanan sementara, izin tidak mencukupi) memicu percobaan ulang otomatis
+ Backoff eksponensial mencegah API yang berlebihan AWS 
+ Upaya coba ulang maksimum bervariasi menurut jenis kesalahan
+ Kesalahan permanen (parameter tidak valid, konflik nama sumber daya) jangan coba lagi

Periksa status sumber daya untuk detail kesalahan menggunakan`kubectl describe`:

```
kubectl describe bucket my-bucket
```

Cari kondisi status dengan pesan kesalahan, peristiwa yang menunjukkan upaya rekonsiliasi baru-baru ini, dan `message` bidang dalam kondisi status yang menjelaskan kegagalan. Kesalahan umum termasuk izin IAM yang tidak mencukupi, konflik nama sumber daya AWS, nilai konfigurasi tidak valid di`spec`, dan kuota AWS layanan terlampaui.

Untuk mengatasi kesalahan umum, lihat[Memecahkan masalah dengan kemampuan ACK](ack-troubleshooting.md).

## Komposisi sumber daya dengan kro
<a name="_resource_composition_with_kro"></a>

Untuk menyusun dan menghubungkan beberapa sumber daya ACK bersama-sama, gunakan Kemampuan EKS untuk kro (Kube Resource Orchestrator). kro menyediakan cara deklaratif untuk menentukan kelompok sumber daya, meneruskan konfigurasi antar sumber daya untuk mengelola pola infrastruktur yang kompleks secara sederhana.

Untuk contoh terperinci tentang membuat komposisi sumber daya khusus dengan sumber daya ACK, lihat[konsep kro](kro-concepts.md).

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [Pertimbangan ACK untuk EKS](ack-considerations.md)- EKS-specific pola dan strategi integrasi