

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

# 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 langsung ke ruang nama pengontrol. Anda dapat mengonfigurasi pengiriman log pengontrol untuk visibilitas ke perilaku pengontrol. Lihat [Akses log pengontrol Kemampuan EKS](capabilities-controller-logs.md). Pemecahan masalah berfokus pada kesehatan kemampuan, konfigurasi RBAC, dan status sumber daya.

## Kemampuan aktif ResourceGraphDefinitions tetapi tidak berfungsi
<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 tidak siap
+  **Validasi skema**: Instans 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 mengawasi instance API kustom Anda

Jika `ResourceGraphAccepted` ya`False`, periksa pesan kondisi untuk kesalahan validasi seperti bidang yang tidak diketahui, ketidakcocokan jenis, 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 khusus ada tetapi sumber daya Kubernetes yang mendasarinya (Deployments, Services, ConfigMaps) tidak dibuat, verifikasi kro memiliki izin dan periksa kesalahan komposisi.

 **Periksa status instans**:

```
# 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}'
```

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

Instans 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 instance secara keseluruhan (hanya menjadi `True` ketika semua sub-kondisi ada`True`)

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

 **Verifikasi izin RBAC: **

Kemampuan kro memerlukan izin untuk membuat sumber daya Kubernetes yang mendasari yang ditentukan di Anda. ResourceGraphDefinitions

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

Jika izin hilang, 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, memeriksa ekspresi tipe terhadap skema Kubernetes, dan memverifikasi keberadaan bidang saat Anda membuat RGD.

 **Kesalahan validasi CEL umum**:
+  **Referensi bidang 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**: Kurung tanda kurung, tanda kutip, atau operator hilang dalam ekspresi CEL
+  **Jenis sumber daya tidak dikenal**: Mereferensikan 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}
```

## Ketergantungan 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): **

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

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

 **Periksa peristiwa 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
+  **Jenis ketidakcocokan**: Menyediakan string di mana integer 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 instance 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
+  [Pemecahan Masalah Kemampuan EKS](capabilities-troubleshooting.md)- Panduan pemecahan masalah kemampuan umum