Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Istio 404 (Bulunamadı) hatası
Istio'da 404 (Bulunamadı) hatası ayıklamak can sıkıcı olabilir. Umarım bu size nerede ters gidebileceğini izlemek için bir başlangıç noktası belirleyin.
Joker karakter ağ geçidi çakışması
"*" joker karakteri kullanan yalnızca bir Ağ Geçidi tanımı olabilir içerir. Şu anda Joker karakter Ağ Geçidi içeren başka herhangi bir şey dağıtıldığında, istemci çağrıları 404 durumuyla başarısız olur.
Örnek:
$ istioctl get gateways GATEWAY NAME HOSTS NAMESPACE AGE bookinfo-gateway * default 20s httpbin-gateway * default 3s
Böyle bir durumda, çakışan ağ geçitlerinden birini silmeniz veya değiştirmeniz gerekir.
Rotanın başarısız olduğu yeri izleyin
Istio bir soğana (veya belki bir Ogre'a) benzer, katmanlardan oluşur. Hata ayıklamanın sistematik bir yolu hedefin dışına doğru çalışmaktır.
Arka uç iş yükü
İş yüküne yardımcı dosyadan erişebildiğinizi doğrulayın:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers
Arka uç yardımcı dosyası
Hizmet adresinizi ayarlayın ve iş yükü kapsülünün IP adresini alın.
SERVICE=httpbin.default.svc.cluster.local:80 POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')
İş yüküne yardımcı dosyadan erişin:
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"
Ayrıca, Istio mTLS etkinse:
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
Ağ geçidi (veya ön uç yardımcı dosyası)
Hizmete ağ geçidinden erişin:
kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header
Ayrıca, Istio mTLS etkinse:
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
Analiz eksik
Analytics kullanıcı arayüzünde analizleri görmüyorsanız aşağıdaki olası nedenleri göz önünde bulundurun:
- Apigee girişi birkaç dakika gecikebilir
- Envoy gRPC Erişim Günlüğü doğru yapılandırılmadı
- Envoy, Uzak Hizmet'e erişemiyor
- Uzak Hizmet yüklenemiyor
Eksik veya hatalı API anahtarı reddedilemiyor
API anahtarı doğrulaması düzgün çalışmıyorsa şu olası nedenleri göz önünde bulundurun:
Doğrudan proxy
ext-authz
yapılandırmasını kontrol edin.
- İşleyicinin kesme noktası için yapılandırıldığından emin olun.
-
ext-authz
yapılandırmasını kontrol edin.
Geçersiz istekler kontrol ediliyor ve bunlara izin veriliyor
- Uzaktan hizmet başarısız açma için yapılandırıldı
- Envoy, RBAC kontrolleri için yapılandırılmadı
Bu sorunların nasıl çözüleceğiyle ilgili bilgi için aşağıdaki Envoy dokümanlarına bakın
topic: Harici Yetkilendirme,
ve failure_mode_allow
özelliğiyle ilgili bilgilere bakın. Bu mülk
Filtrenin hatalar üzerindeki davranışını değiştirmenize olanak tanır.
Eksik veya kötü JWT reddedilmemesi
Bu durum, Envoy JWT filtresinin yapılandırılmamış olmasından kaynaklanabilir.
Geçerli API anahtarı başarısız oluyor
Olası nedenler
- Envoy, uzak hizmete erişemiyor
- Kimlik bilgileriniz geçerli değil
- Apigee API Ürünü hedef ve ortam için yapılandırılmamış
Sorun giderme adımları
Apigee'deki API Ürününüzü kontrol edin
- Ortamınız için etkinleştirilmiş mi (test veya üretim)?
Ürün, Uzak Hizmetinizle aynı ortama bağlı olmalıdır.
- Erişmekte olduğunuz hedefe bağlı mı?
Apigee uzaktan hizmet hedefleri bölümünü kontrol edin. Hizmet adının bir ana bilgisayar adı olmalıdır. Bu bir Istio hizmetiyse, adı şuna benzer olacaktır:
helloworld.default.svc.cluster.local
code> - Bu,helloworld
hizmetini temsil ederdefault
ad alanında yer alır. - Kaynak Yolu isteğinizle eşleşiyor mu?
/
veya/**
gibi bir yolun her yolla eşleşeceğini unutmayın. '*' işaretini de kullanabilirsiniz veya "**" joker karakterler eşleştirme için kullanılıyor. - Geliştirici uygulamanız var mı?
API Ürünü, anahtarlarını kontrol etmek için bir geliştirici uygulamasına bağlı olmalıdır.
İsteğinizi kontrol edin
- Tüketici Anahtarı'nı
x-api-key header
içinde iletiyor musunuz?Örnek:
curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
- İyi bir Tüketici Anahtarı mı kullanıyorsunuz?
Kullandığınız uygulamadaki kimlik bilgilerinin, API ürününüz için onaylandığından emin olun.
Uzak Hizmet günlüklerini kontrol etme
-
debug level
adresinde günlük kaydıyla Uzak Hizmet'i başlatın. Uzak hizmet günlüğü düzeylerini ayarlama başlıklı makaleye göz atın.Komut satırında
-l debug
seçeneğini kullanın. Örneğin:apigee-remote-service-envoy -l debug
- Hedefinize erişmeye ve günlükleri kontrol etmeyi deneyin
Günlüklerde aşağıdakine benzer bir satır olup olmadığını kontrol edin:
Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: [] Selected: [helloworld] Eliminated: [helloworld2 doesn't match path: /hello]
debug
: En ayrıntılı günlük kaydı modu.info
- Varsayılan.warn
error
: En az ayrıntılı günlük kaydı modu.
Uzak hizmet günlüğü düzeylerini ayarlama
Komut satırı işareti kullanarak uzak hizmeti aşağıdaki hata ayıklama işlemlerinden birinde başlatabilirsiniz
debug
en ayrıntılı ve error
en az olmak üzere ayrıntıya göre sıralanmış modlar:
Örneğin, hizmeti debug
düzeyinde başlatmak için:
apigee-remote-service-envoy -l debug