

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

# Memecahkan masalah dengan kemampuan kro
<a name="kro-troubleshooting"></a>

**catatan**  
Kemampuan EKS sepenuhnya dikelola dan dijalankan di luar cluster Anda. Anda tidak memiliki akses ke log pengontrol atau ruang nama pengontrol. Pemecahan masalah berfokus pada kesehatan kemampuan, konfigurasi RBAC, dan status sumber daya.

## Kemampuan aktif tetapi ResourceGraphDefinitions tidak bekerja
<a name="_capability_is_active_but_resourcegraphdefinitions_arent_working"></a>

Jika kemampuan kro Anda menunjukkan `ACTIVE` status tetapi ResourceGraphDefinitions tidak membuat sumber daya yang mendasarinya, periksa kesehatan kemampuan, izin RBAC, dan status sumber daya.

 **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/home \#/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-kro

# Look for issues in the health section
```

 **Penyebab umum**:
+  Izin **RBAC hilang: kro tidak memiliki izin** untuk membuat sumber daya Kubernetes yang mendasarinya
+  **Ekspresi CEL tidak valid: Kesalahan** sintaks di ResourceGraphDefinition
+  **Ketergantungan sumber daya**: Sumber daya dependen belum siap
+  **Validasi skema**: Instance tidak cocok dengan persyaratan skema RGD

 **Verifikasi izin RBAC**:

```
# Check if capability has cluster admin policy
kubectl get accessentry -A | grep kro
```

Jika kemampuan tidak memiliki izin yang diperlukan, kaitkan `AmazonEKSClusterAdminPolicy` dengan entri akses kemampuan kro, atau buat kebijakan RBAC yang lebih ketat untuk penggunaan produksi. Lihat [Konfigurasikan izin kro](kro-permissions.md) untuk detail.

 **Periksa ResourceGraphDefinition status**:

```
# List all RGDs
kubectl get resourcegraphdefinition

# Describe specific RGD
kubectl describe resourcegraphdefinition my-rgd

# Check for validation errors
kubectl get resourcegraphdefinition my-rgd -o jsonpath='{.status.conditions}'
```

ResourceGraphDefinitions memiliki tiga kondisi status utama:
+  `ResourceGraphAccepted`- Apakah RGD lulus validasi (sintaks CEL, pemeriksaan tipe, keberadaan bidang)
+  `KindReady`- Apakah CRD untuk API kustom Anda dibuat dan terdaftar
+  `ControllerReady`- Apakah kro secara aktif menonton instance API kustom Anda

Jika `ResourceGraphAccepted` ya`False`, periksa pesan kondisi untuk kesalahan validasi seperti bidang yang tidak dikenal, ketidakcocokan tipe, atau dependensi melingkar.

## Instans dibuat tetapi sumber daya yang mendasarinya tidak muncul
<a name="_instances_created_but_underlying_resources_not_appearing"></a>

Jika instance sumber daya kustom ada tetapi sumber daya Kubernetes yang mendasarinya (Deployment, Services, ConfigMaps) tidak dibuat, verifikasi kro memiliki izin dan periksa kesalahan komposisi.

 **Periksa status instance**:

```
# Describe the instance (replace with your custom resource kind and name)
kubectl describe {{custom-kind}}
         {{my-instance}}

# View instance events
kubectl get events --field-selector involvedObject.name={{my-instance}}

# Check instance status conditions
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status.conditions}'

# Check instance state
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status.state}'
```

Instance memiliki `state` bidang yang menunjukkan status tingkat tinggi:
+  `ACTIVE`- Instance berhasil berjalan
+  `IN_PROGRESS`- Instance sedang diproses atau direkonsiliasi
+  `FAILED`- Instance gagal untuk mendamaikan
+  `DELETING`- Instance sedang dihapus
+  `ERROR`- Terjadi kesalahan selama pemrosesan

Contoh juga memiliki empat kondisi status:
+  `InstanceManaged`- Finalizer dan label diatur dengan benar
+  `GraphResolved`- Grafik runtime dibuat dan sumber daya diselesaikan
+  `ResourcesReady`- Semua sumber daya dibuat dan siap
+  `Ready`- Kesehatan contoh keseluruhan (hanya menjadi `True` ketika semua sub-kondisi) `True`

Fokus pada `Ready` kondisi untuk menentukan kesehatan contoh. Jika `Ready` ya`False`, periksa sub-kondisi untuk mengidentifikasi fase mana yang gagal.

 **Verifikasi izin RBAC**:

Kemampuan kro membutuhkan izin untuk membuat sumber daya Kubernetes yang mendasari yang ditentukan dalam Anda. ResourceGraphDefinitions

```
# Check if the capability has the AmazonEKSClusterAdminPolicy
kubectl get accessentry -A | grep kro
```

Jika izin tidak ada, kaitkan `AmazonEKSClusterAdminPolicy` dengan entri akses kemampuan kro, atau buat kebijakan RBAC yang lebih ketat untuk penggunaan produksi. Lihat [Konfigurasikan izin kro](kro-permissions.md) untuk detail.

## Kesalahan ekspresi CEL
<a name="_cel_expression_errors"></a>

Kesalahan ekspresi CEL ditangkap pada waktu ResourceGraphDefinition pembuatan, bukan saat instance dibuat. kro memvalidasi semua sintaks CEL, mengecek tipe ekspresi terhadap skema Kubernetes, dan memverifikasi keberadaan bidang saat Anda membuat RGD.

 **Kesalahan validasi CEL umum**:
+  **Referensi bidang yang tidak ditentukan**: Mereferensikan bidang yang tidak ada dalam skema atau sumber daya
+  **Ketidakcocokan tipe**: Ekspresi mengembalikan tipe yang salah (misalnya, string di mana bilangan bulat diharapkan)
+  **Sintaks tidak valid**: Tanda kurung, tanda kutip, atau operator tidak ada dalam ekspresi CEL
+  **Jenis sumber daya tidak dikenal**: Merujuk CRD yang tidak ada di cluster

 **Periksa status validasi RGD**:

```
# Check if RGD was accepted
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.conditions[?(@.type=="ResourceGraphAccepted")]}'

# View detailed validation errors
kubectl describe resourcegraphdefinition {{my-rgd}}
```

Jika `ResourceGraphAccepted` ya`False`, pesan kondisi berisi kesalahan validasi.

 **Contoh ekspresi CEL yang valid**:

```
# Reference schema field
${schema.spec.appName}

# Conditional expression
${schema.spec.replicas > 1}

# String template (expressions must return strings)
name: "${schema.spec.appName}-service"

# Standalone expression (can be any type)
replicas: ${schema.spec.replicaCount}

# Resource reference
${deployment.status.availableReplicas}

# Optional field access (returns null if field doesn't exist)
${configmap.data.?DATABASE_URL}
```

## Dependensi sumber daya tidak terselesaikan
<a name="_resource_dependencies_not_resolving"></a>

kro secara otomatis menyimpulkan dependensi dari ekspresi CEL dan membuat sumber daya dalam urutan yang benar. Jika sumber daya tidak dibuat seperti yang diharapkan, periksa urutan ketergantungan dan kesiapan sumber daya.

 **Lihat urutan pembuatan yang dihitung**:

```
# See the order kro will create resources
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.status.topologicalOrder}'
```

Ini menunjukkan urutan yang dihitung berdasarkan referensi ekspresi CEL antar sumber daya.

 **Periksa kesiapan sumber daya**:

```
# View instance status to see which resources are ready
kubectl get {{custom-kind}}
         {{my-instance}} -o jsonpath='{.status}'

# Check specific resource status
kubectl get deployment {{my-deployment}} -o jsonpath='{.status.conditions}'
```

 **Verifikasi kondisi ReadyWhen (jika digunakan**):

`readyWhen`Bidang ini opsional. Jika tidak ditentukan, sumber daya dianggap siap segera setelah pembuatan. Jika Anda telah menentukan `readyWhen` kondisi, verifikasi bahwa kondisi tersebut memeriksa kesiapan sumber daya dengan benar:

```
resources:
  - id: deployment
    readyWhen:
      - ${deployment.status.availableReplicas == deployment.spec.replicas}
```

 **Periksa acara sumber daya**:

```
# View events for the underlying resources
kubectl get events -n {{namespace}} --sort-by='.lastTimestamp'
```

## Kegagalan validasi skema
<a name="_schema_validation_failures"></a>

Jika instance gagal dibuat karena kesalahan validasi skema, verifikasi instance cocok dengan persyaratan skema RGD.

 **Periksa kesalahan validasi**:

```
# Attempt to create instance and view error
kubectl apply -f instance.yaml

# View existing instance validation status
kubectl describe {{custom-kind}}
         {{my-instance}} | grep -A 5 "Validation"
```

 **Masalah validasi** umum:
+  **Bidang wajib hilang**: Instance tidak menyediakan semua bidang skema yang diperlukan
+  **Ketidakcocokan tipe**: Menyediakan string di mana bilangan bulat diharapkan
+  Nilai **enum tidak valid: Menggunakan nilai** tidak dalam daftar yang diizinkan
+  **Ketidakcocokan pola**: String tidak cocok dengan pola regex

 **Tinjau skema RGD**:

```
# View the schema definition
kubectl get resourcegraphdefinition {{my-rgd}} -o jsonpath='{.spec.schema}'
```

Pastikan instans Anda menyediakan semua bidang wajib dengan tipe yang benar.

## Langkah selanjutnya
<a name="_next_steps"></a>
+  [pertimbangan kro untuk EKS](kro-considerations.md)- pertimbangan kro dan praktik terbaik
+  [Konfigurasikan izin kro](kro-permissions.md)- Konfigurasikan RBAC untuk tim platform dan aplikasi
+  [konsep kro](kro-concepts.md)- Memahami konsep kro dan siklus hidup sumber daya
+  [Memecahkan Masalah Kemampuan EKS](capabilities-troubleshooting.md)- Panduan pemecahan masalah kemampuan umum