Halaman ini berlaku untuk Apigee dan Apigee hybrid.
Lihat Dokumentasi Apigee Edge.
Error Istio 404 (Tidak Ditemukan)
Men-debug error 404 (Not Found) di Istio bisa membuat frustrasi. Semoga ini akan memberi Anda tempat untuk mulai melacak di mana letak kesalahannya.
Konflik Gateway Karakter Pengganti
Hanya boleh ada satu definisi Gateway yang menggunakan karakter pengganti "*" nilai host. Jika Anda sudah men-deploy aplikasi apa pun yang menyertakan Gateway karakter pengganti, panggilan klien akan gagal dengan status 404.
Contoh:
$ istioctl get gateways GATEWAY NAME HOSTS NAMESPACE AGE bookinfo-gateway * default 20s httpbin-gateway * default 3s
Jika demikian, Anda harus menghapus atau mengubah salah satu gateway yang bentrok.
Telusuri bagian yang mengalami kegagalan rute
Istio seperti bawang (atau, mungkin, Ogre), dan memiliki lapisan. Cara sistematis untuk men-debug 404 adalah bekerja keluar dari target.
Workload backend
Pastikan Anda dapat mengakses workload dari file bantuan:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers
File bantuan backend
Tetapkan alamat layanan Anda dan dapatkan alamat IP pod workload.
SERVICE=httpbin.default.svc.cluster.local:80 POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')
Akses beban kerja melalui file bantuan:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"
Atau, jika Istio mTLS diaktifkan:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v https://$SERVICE/headers --resolve "$SERVICE:$POD_IP" --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem --insecure
Gateway (atau file bantuan frontend)
Akses layanan dari gateway:
kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header
Atau, jika Istio mTLS diaktifkan:
kubectl -n istio-system exec $GATEWAY_POD -- curl -v https://$SERVICE/headers --key /etc/certs/key.pem --cert /etc/certs/cert-chain.pem --cacert /etc/certs/root-cert.pem --insecure
Analisis tidak ada
Jika Anda tidak melihat analisis di UI Analytics, pertimbangkan kemungkinan penyebabnya berikut:
- Proses masuk Apigee dapat tertunda beberapa menit
- Log Akses Envoy gRPC tidak dikonfigurasi dengan benar
- Envoy tidak dapat menjangkau Layanan Jarak Jauh
- Layanan Jarak Jauh gagal diupload
Kunci API tidak ada atau rusak tidak ditolak
Jika validasi kunci API tidak berfungsi dengan benar, pertimbangkan kemungkinan penyebabnya:
Proxy langsung
Periksa konfigurasi ext-authz
.
- Pastikan pemroses dikonfigurasi untuk mencegat.
- Periksa konfigurasi
ext-authz
.
Permintaan yang tidak valid sedang diperiksa dan diizinkan
- Remote Service yang dikonfigurasi untuk fail open
- Envoy tidak dikonfigurasi untuk pemeriksaan RBAC
Untuk mendapatkan informasi tentang cara mengatasi masalah ini, lihat dokumentasi Envoy berikut
topic: Otorisasi Eksternal,
dan lihat informasi tentang properti failure_mode_allow
. Properti ini
memungkinkan Anda untuk mengubah
perilaku filter pada kesalahan.
JWT tidak ada atau buruk tidak ditolak
Kemungkinan penyebabnya adalah filter Envoy JWT tidak dikonfigurasi.
Kunci API yang valid gagal
Kemungkinan penyebab
- Envoy tidak dapat menjangkau layanan jarak jauh
- Kredensial Anda tidak valid
- Produk Apigee API tidak dikonfigurasi untuk target dan env
- Envoy tidak mengetahui Produk Apigee API
Langkah pemecahan masalah
Memeriksa Produk API Anda di Apigee
- Apakah fitur ini diaktifkan untuk lingkungan Anda (pengujian vs. produk)?
Produk harus terikat ke lingkungan yang sama dengan Layanan Jarak Jauh Anda.
- Apakah tujuan itu terikat dengan target yang Anda akses?
Periksa bagian Target layanan jarak jauh Apigee. Ingat, nama layanan harus berupa atau nama {i>host<i} yang sepenuhnya memenuhi syarat. Jika ini adalah layanan Istio, namanya akan terlihat seperti
helloworld.default.svc.cluster.local
code> - yang mewakili layananhelloworld
dalam namespacedefault
. - Apakah Jalur Resource sesuai dengan permintaan Anda?
Ingat, jalur seperti
/
atau/**
akan cocok dengan jalur apa pun. Anda juga dapat menggunakan '*' atau '**' karakter pengganti untuk pencocokan. - Apakah Anda memiliki Aplikasi Developer?
Produk API harus terikat ke Aplikasi Developer untuk memeriksa kuncinya.
- Apakah OperationsConfigType Produk Apigee API ditetapkan ke remoteservice?
Periksa konfigurasi Produk API menggunakan Apigee Management API, dan pastikan bahwa
operationConfigType
disetel keremoteservice
.
Memeriksa permintaan Anda
- Apakah Anda meneruskan Kunci Konsumen di
x-api-key header
Contoh:
curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
- Apakah Anda menggunakan Kunci Konsumen yang baik?
Pastikan Kredensial dari Aplikasi yang Anda gunakan disetujui untuk Produk API Anda.
Memeriksa log Remote Service
- Mulai Service Remote dengan logging pada
debug level
. Lihat Menyetel tingkat log layanan jarak jauh.Gunakan opsi
-l debug
pada command line. Contoh:apigee-remote-service-envoy -l debug
- Mencoba mengakses target Anda dan memeriksa log
Periksa log untuk baris yang terlihat seperti ini:
Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: [] Selected: [helloworld] Eliminated: [helloworld2 doesn't match path: /hello]
Menyetel level log layanan jarak jauh
Dengan tanda command line, Anda dapat memulai layanan jarak jauh di salah satu proses debug berikut
mode, dalam urutan verbositas, dengan debug
paling panjang dan error
paling tidak panjang:
debug
- Mode logging yang paling panjang.info
- Default.warn
error
- Mode logging panjang terkecil.
Misalnya, untuk memulai layanan di level debug
:
apigee-remote-service-envoy -l debug