Khắc phục sự cố

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

Lỗi Istio 404 (Không tìm thấy)

Gỡ lỗi 404 (Không tìm thấy) trên Istio có thể gây phiền toái. Hy vọng rằng thông tin này sẽ giúp bạn bắt đầu theo dõi xem mọi vấn đề có thể xảy ra không.

Xung đột cổng vào ký tự đại diện

Chỉ có thể có một định nghĩa Cổng vào sử dụng giá trị máy chủ lưu trữ "*" có ký tự đại diện. Nếu bạn đã triển khai bất kỳ tính năng nào khác bao gồm Cổng ký tự đại diện, thì các lệnh gọi máy khách sẽ không thực hiện được với trạng thái 404.

Ví dụ:

$ istioctl get gateways
GATEWAY NAME         HOSTS     NAMESPACE   AGE
bookinfo-gateway     *         default     20s
httpbin-gateway      *         default     3s

Nếu có, bạn cần xoá hoặc thay đổi một trong những cổng vào xung đột.

Theo dấu vị trí bị lỗi tuyến đường

Istio giống như một củ hành (hoặc có lẽ là một yêu tinh), nó có nhiều lớp. Một cách có hệ thống để gỡ lỗi lỗi 404 là hoạt động bên ngoài mục tiêu.

Khối lượng công việc phụ trợ

Xác minh rằng bạn có thể truy cập vào khối lượng công việc từ tệp trợ giúp:

kubectl exec $WORKLOAD_POD -c istio-proxy -- curl localhost:80/headers

Tệp trợ giúp trong phần phụ trợ

Đặt địa chỉ dịch vụ của bạn và lấy địa chỉ IP của nhóm tải công việc.

SERVICE=httpbin.default.svc.cluster.local:80
  POD_IP=$(kubectl get pod $WORKLOAD_POD -o jsonpath='{.status.podIP}')

Truy cập vào khối lượng công việc thông qua tệp trợ giúp:

kubectl exec $WORKLOAD_POD -c istio-proxy -- curl -v http://$SERVICE/headers --resolve "$SERVICE:$POD_IP"

Hoặc nếu Istio mTLS được bật:

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

Cổng (hoặc một trợ giúp giao diện người dùng)

Truy cập vào dịch vụ từ cổng:

kubectl -n istio-system exec $GATEWAY_POD -- curl -v http://$SERVICE/header

Hoặc nếu Istio mTLS được bật:

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

Thiếu số liệu phân tích

Nếu bạn không thấy số liệu phân tích trong giao diện người dùng Analytics, hãy xem xét các nguyên nhân có thể xảy ra sau:

  • Việc tiếp nhận Apigee có thể bị trì hoãn vài phút
  • Nhật ký truy cập gRPC của Envoy được định cấu hình không chính xác
  • Đối tác không thể liên hệ với Dịch vụ từ xa
  • Không tải lên được Dịch vụ từ xa

Khoá API bị thiếu hoặc không hợp lệ không bị từ chối

Nếu tính năng xác thực khoá API không hoạt động đúng cách, hãy xem xét các nguyên nhân có thể xảy ra sau đây:

Proxy trực tiếp

Kiểm tra cấu hình ext-authz.

Tệp trợ giúp
  • Hãy đảm bảo trình nghe đã được định cấu hình để chặn.
  • Kiểm tra cấu hình ext-authz.

Chúng tôi đang kiểm tra và cho phép các yêu cầu không hợp lệ

  • Dịch vụ từ xa được định cấu hình do không mở được
  • Không định cấu hình cho môi trường gửi dữ liệu để kiểm tra RBAC

Để biết thông tin về cách giải quyết những vấn đề này, hãy tham khảo chủ đề tài liệu sau đây của Envoy: Uỷ quyền bên ngoài và tham khảo thông tin về thuộc tính failure_mode_allow. Thuộc tính này cho phép bạn thay đổi hành vi của bộ lọc đối với lỗi.

JWT bị thiếu hoặc không hợp lệ không bị từ chối

Nguyên nhân có thể xảy ra là do bộ lọc Envoy JWT chưa được định cấu hình.

Không thể cung cấp khoá API hợp lệ

Nguyên nhân có thể xảy ra

  • Đối tác không thể liên hệ với dịch vụ từ xa
  • Thông tin đăng nhập của bạn không hợp lệ
  • Sản phẩm API Apigee chưa được định cấu hình cho mục tiêu và môi trường

Các bước khắc phục vấn đề

Kiểm tra sản phẩm API của bạn trên Apigee

  • Tính năng này có được bật trong môi trường của bạn (thử nghiệm so với sản phẩm) không?

    Sản phẩm này phải được liên kết với cùng môi trường như Dịch vụ từ xa của bạn.

  • Tệp này có liên kết với mục tiêu mà bạn đang truy cập không?

    Kiểm tra mục Apigee từ xa mục tiêu dịch vụ. Hãy nhớ rằng tên dịch vụ phải là tên máy chủ đủ điều kiện. Nếu đó là dịch vụ Istio, tên sẽ có dạng helloworld.default.svc.cluster.localcode> – đại diện cho dịch vụ helloworld trong không gian tên default.

  • Đường dẫn tài nguyên có khớp với yêu cầu của bạn không?

    Hãy nhớ rằng một đường dẫn như / hoặc /** sẽ khớp với mọi đường dẫn. Bạn cũng có thể dùng ký tự đại diện "*" hoặc "**" để so khớp.

  • Bạn có ứng dụng của nhà phát triển không?

    Sản phẩm API phải được liên kết với một ứng dụng của nhà phát triển để kiểm tra các khoá của ứng dụng đó.

Kiểm tra yêu cầu của bạn

  • Bạn có đang truyền Khoá người dùng vào x-api-key header không

    Ví dụ:

    curl http://localhost/hello -H "x-api-key: wwTcvmHvQ7Dui2qwj43GlKJAOwmo"
  • Bạn có đang sử dụng Khoá người tiêu dùng hợp lệ không?

    Đảm bảo Thông tin xác thực trong ứng dụng bạn đang sử dụng đã được phê duyệt cho sản phẩm API của bạn.

Kiểm tra nhật ký Dịch vụ từ xa

  • Khởi động Dịch vụ từ xa bằng cách ghi nhật ký tại debug level

    Sử dụng tuỳ chọn -l debug trên dòng lệnh.

  • Cố gắng truy cập mục tiêu của bạn và kiểm tra nhật ký

    Kiểm tra nhật ký để tìm dòng có dạng như sau:

    Resolve api: helloworld.default.svc.cluster.local, path: /hello, scopes: []
    Selected: [helloworld]
    Eliminated: [helloworld2 doesn't match path: /hello]