Sorun giderme

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.

Sidecar
  • İş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.localcode> - Bu, helloworld hizmetini temsil eder default 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

  1. 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
  2. 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]
    
  3. 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:

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

    Örneğin, hizmeti debug düzeyinde başlatmak için:

    apigee-remote-service-envoy -l debug