คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
ข้อผิดพลาด Istio 404 (Not Found)
การแก้ไขข้อบกพร่อง 404 (ไม่พบ) ใน Istio อาจเป็นเรื่องน่าหงุดหงิด เราหวังว่าวิธีนี้จะช่วยให้คุณเริ่มติดตามสิ่งที่ผิดปกติได้
เกตเวย์ไวลด์การ์ดขัดแย้งกัน
มีคําจํากัดความของเกตเวย์ที่ใช้ค่าโฮสต์ไวลด์การ์ด "*" ได้เพียง 1 รายการเท่านั้น หากคุณติดตั้งใช้งานอย่างอื่นที่มีเกตเวย์ไวลด์การ์ดแล้ว การเรียกไคลเอ็นต์จะล้มเหลวโดยมีสถานะ 404
ตัวอย่าง
$ istioctl get gateways GATEWAY NAME HOSTS NAMESPACE AGE bookinfo-gateway * default 20s httpbin-gateway * default 3s
หากเป็นเช่นนั้น คุณจะต้องลบหรือเปลี่ยนแปลงเกตเวย์ใดเกตเวย์หนึ่งที่ขัดแย้งกัน
ติดตามจุดที่เส้นทางใช้งานไม่ได้
Istio มีลักษณะคล้ายหอมหัวใหญ่ (หรืออาจจะเป็นยักษา) โดยมีชั้นต่างๆ วิธีแก้ไขข้อบกพร่อง 404 อย่างเป็นระบบคือการทำงานออกจากเป้าหมาย
ภาระงานแบ็กเอนด์
ยืนยันว่าคุณเข้าถึงภาระงานจากไฟล์ช่วยเหลือได้ โดยทำดังนี้
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers
ไฟล์ช่วยเหลือแบ็กเอนด์
ตั้งค่าที่อยู่สำหรับรับบริการและรับที่อยู่ IP ของพ็อดภาระงาน
SERVICE=httpbin.default.svc.cluster.local:80 POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')
เข้าถึงภาระงานผ่านไฟล์ช่วยเหลือได้ดังนี้
kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"
หรือหากเปิดใช้ Istio mTLS ไว้ ให้ทำดังนี้
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
เกตเวย์ (หรือไฟล์ช่วยเหลือของฟรอนท์เอนด์)
เข้าถึงบริการจากเกตเวย์ได้ดังนี้
kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header
หรือหากเปิดใช้ Istio mTLS ไว้ ให้ทำดังนี้
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
ไม่มีข้อมูลวิเคราะห์
หากคุณไม่เห็นข้อมูลวิเคราะห์ใน UI ของ Analytics ให้ลองพิจารณาสาเหตุที่เป็นไปได้ต่อไปนี้
- การใช้งาน Apigee อาจล่าช้า 2-3 นาที
- กำหนดค่าบันทึกการเข้าถึง gRPC ของ Envoy ไม่ถูกต้อง
- Envoy ไม่สามารถเข้าถึงบริการระยะไกล
- บริการระยะไกลอัปโหลดไม่สำเร็จ
ไม่มีคีย์ API ไม่ถูกต้องหรือคีย์ API ไม่ถูกปฏิเสธ
หากการตรวจสอบคีย์ API ทำงานไม่ถูกต้อง ให้พิจารณาสาเหตุที่เป็นไปได้ต่อไปนี้
พร็อกซีโดยตรง
ตรวจสอบการกำหนดค่าของ ext-authz
- ตรวจสอบว่าได้กำหนดค่า Listener สำหรับการสกัดกั้นแล้ว
- ตรวจสอบการกำหนดค่าของ
ext-authz
ระบบกำลังตรวจสอบและอนุญาตคำขอที่ไม่ถูกต้อง
- กำหนดค่าบริการระยะไกลสำหรับการเปิดไม่สำเร็จ
- ไม่ได้กำหนดค่า Envoy สำหรับการตรวจสอบ RBAC
โปรดดูข้อมูลเกี่ยวกับวิธีแก้ไขปัญหาเหล่านี้ในหัวข้อเอกสารประกอบจาก Envoy ต่อไปนี้ การให้สิทธิ์ภายนอก และดูข้อมูลเกี่ยวกับพร็อพเพอร์ตี้ failure_mode_allow
พร็อพเพอร์ตี้นี้ช่วยให้คุณเปลี่ยนลักษณะการทำงานของตัวกรองเมื่อพบข้อผิดพลาดได้
JWT ที่สูญหายหรือไม่ถูกต้องซึ่งไม่ถูกปฏิเสธ
สาเหตุที่เป็นไปได้คือไม่มีการกำหนดค่าตัวกรอง Envoy JWT
คีย์ API ที่ถูกต้องล้มเหลว
สาเหตุที่น่าจะเป็น
- Envoy เข้าถึงบริการระยะไกลไม่ได้
- ข้อมูลเข้าสู่ระบบของคุณไม่ถูกต้อง
- ไม่ได้กำหนดค่าผลิตภัณฑ์ Apigee API สำหรับเป้าหมายและสภาพแวดล้อม
ขั้นตอนการแก้ปัญหา
ตรวจสอบผลิตภัณฑ์ API ของคุณใน Apigee
- มีการเปิดใช้สำหรับสภาพแวดล้อมของคุณไหม (ทดสอบเทียบกับเวอร์ชันที่ใช้งานจริง)
ผลิตภัณฑ์ต้องเชื่อมโยงกับสภาพแวดล้อมเดียวกันกับบริการระยะไกลของคุณ
- การกำหนดเป้าหมายเชื่อมโยงกับเป้าหมายที่คุณกำลังเข้าถึงหรือไม่
ตรวจสอบส่วนเป้าหมายบริการระยะไกลของ Apigee โปรดทราบว่าชื่อบริการต้องเป็นชื่อโฮสต์แบบเต็ม หากเป็นบริการ Istio ชื่อจะเป็น
helloworld.default.svc.cluster.local
code> ซึ่งแสดงบริการhelloworld
ในเนมสเปซdefault
- เส้นทางทรัพยากรตรงกับคำขอของคุณไหม
โปรดทราบว่าเส้นทางอย่างเช่น
/
หรือ/**
จะตรงกับเส้นทางใดก็ได้ คุณยังใช้ไวลด์การ์ด "*" หรือ "**" สำหรับการจับคู่ได้ด้วย - คุณมีแอปนักพัฒนาซอฟต์แวร์ไหม
ผลิตภัณฑ์ API ต้องเชื่อมโยงกับแอปนักพัฒนาซอฟต์แวร์เพื่อตรวจสอบคีย์
ตรวจสอบคำขอของคุณ
- คุณส่งคีย์ผู้บริโภคใน
x-api-key header
หรือไม่ตัวอย่าง
curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
- คุณใช้คีย์ผู้บริโภคที่ดีหรือไม่
ตรวจสอบว่าข้อมูลเข้าสู่ระบบจากแอปที่คุณใช้อยู่ได้รับอนุมัติสำหรับผลิตภัณฑ์ API ของคุณ
ตรวจสอบบันทึกบริการระยะไกล
- เริ่มต้นบริการระยะไกลด้วยการบันทึกที่
debug level
โปรดดูหัวข้อการตั้งค่าระดับบันทึกบริการระยะไกลใช้ตัวเลือก
-l debug
ในบรรทัดคำสั่ง เช่นapigee-remote-service-envoy -l debug
- พยายามเข้าถึงเป้าหมายและตรวจสอบบันทึก
ตรวจสอบบันทึกเพื่อหาบรรทัดที่มีลักษณะดังนี้
Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: [] Selected: [helloworld] Eliminated: [helloworld2 doesn't match path: /hello]
debug
- โหมดการบันทึกที่มีความละเอียดมากที่สุดinfo
- ค่าเริ่มต้นwarn
error
- โหมดการบันทึกแบบละเอียดน้อยที่สุด
การตั้งค่าระดับบันทึกบริการระยะไกล
เมื่อใช้แฟล็กบรรทัดคำสั่ง คุณสามารถเริ่มบริการระยะไกลในโหมดแก้ไขข้อบกพร่องอย่างใดอย่างหนึ่งต่อไปนี้ โดยเรียงลำดับตามการพูดรายละเอียด โดยที่ debug
มีรายละเอียดมากที่สุดและ error
น้อยที่สุด
เช่น หากต้องการเริ่มบริการที่ระดับ debug
ให้ทำดังนี้
apigee-remote-service-envoy -l debug