Score:0

AWS EKS Ingress Timeout บนเส้นทางที่ไม่ใช่รูท

ธง fr

เราได้กำหนดค่าทรัพยากร Ingress บนคลัสเตอร์ EKS ของเราด้วยการเขียนใหม่จาก /.* บนโหลดบาลานเซอร์ไปยังอัพสตรีม URI ที่ตรงกัน ถ้าเราไปเที่ยว staging.my-domain.com/เราเห็นการตอบรับการตรวจสุขภาพสำเร็จตามที่คาดไว้ อย่างไรก็ตาม URL อื่นๆ เช่น /api/ส่งผลให้เกิดการหมดเวลาจากโหลดบาลานเซอร์ ด้านล่างนี้คือการกำหนดค่า (SSL ถูกปิดใช้งานในขณะนี้ในขณะที่เราเข้าใจ) ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม!

# ตัวควบคุมข้อมูลขาเข้า: https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/deploy/installation/
# YAML: https://github.com/kubernetes-sigs/external-dns/blob/master/docs/tutorials/alb-ingress.md
รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  คำอธิบายประกอบ:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: เชื่อมต่ออินเทอร์เน็ต
    ภายนอก DNS.alpha.kubernetes.io/ชื่อโฮสต์: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: "เท็จ"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "เท็จ"
    nginx.ingress.kubernetes.io/rewrite-target: /
  ชื่อ: nlx-api
ข้อมูลจำเพาะ:
  กฎ:
  - โฮสต์: staging.my-domain.com
    http:
      เส้นทาง:
      - เส้นทาง: /
        pathType: คำนำหน้า
        แบ็กเอนด์:
          บริการ:
            ชื่อ: our-api
            ท่า:
              จำนวน: 80
---

api เวอร์ชัน: v1
ชนิด:บริการ
ข้อมูลเมตา:
  ชื่อ: our-api
ข้อมูลจำเพาะ:
  พอร์ต:
  - ชื่อ: http
    พอร์ต: 80
    พอร์ตเป้าหมาย: 8080
  ประเภท: LoadBalancer
  ตัวเลือก:
    แอพ: our-api
Score:0
ธง id

ดูเหมือนว่าของคุณ เขียนใหม่ เป้าหมายไม่ถูกต้อง ดูตัวอย่างทั่วไปนี้จาก เอกสาร:

รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  คำอธิบายประกอบ:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  ชื่อ: เขียนใหม่
  เนมสเปซ: ค่าเริ่มต้น
ข้อมูลจำเพาะ:
  กฎ:
  - โฮสต์: rewrite.bar.com
    http:
      เส้นทาง:
      - แบ็กเอนด์:
          ชื่อบริการ: http-svc
          พอร์ตบริการ: 80
        เส้นทาง: /something(/|$)(.*)

ในคำจำกัดความขาเข้านี้ อักขระใดๆ ที่จับโดย (.*) จะถูกกำหนดให้กับตัวยึด $2ซึ่งจะใช้เป็นพารามิเตอร์ใน เขียนใหม่เป้าหมาย คำอธิบายประกอบ ตัวอย่างเช่น คำจำกัดความขาเข้าด้านบนจะส่งผลให้มีการเขียนใหม่ดังต่อไปนี้:

  • rewrite.bar.com/something เขียนใหม่ถึง rewrite.bar.com/
  • rewrite.bar.com/something/ เขียนใหม่ถึง rewrite.bar.com/
  • rewrite.bar.com/something/new เขียนใหม่ถึง rewrite.bar.com/new

ในสถานการณ์ของคุณ หากคุณพยายามเข้าถึง staging.my-domain.com/คุณถูกเขียนซ้ำไปยังที่อยู่เดิม ทุกอย่างปกติดี. แต่คุณสามารถเขียนใหม่ได้เฉพาะที่อยู่นี้ คุณควรเปลี่ยนรายการของคุณดังนี้:

รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  คำอธิบายประกอบ:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: เชื่อมต่ออินเทอร์เน็ต
    ภายนอก DNS.alpha.kubernetes.io/ชื่อโฮสต์: staging.my-domain.com
    nginx.ingress.kubernetes.io/ssl-redirect: "เท็จ"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "เท็จ"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  ชื่อ: nlx-api
ข้อมูลจำเพาะ:
  กฎ:
  - โฮสต์: staging.my-domain.com
    http:
      เส้นทาง:
      - เส้นทาง: /(.*)
        pathType: คำนำหน้า
        แบ็กเอนด์:
          บริการ:
            ชื่อ: our-api
            ท่า:
              จำนวน: 80

ในสถานการณ์นี้ ตัวละครใดๆ ก็ตามที่ถูกจับโดย (.*) จะถูกกำหนดให้กับตัวยึด $1(นี่คือกลุ่มการดักจับกลุ่มแรก) ซึ่งจะใช้เป็นพารามิเตอร์ใน เขียนใหม่เป้าหมาย คำอธิบายประกอบ

DragonBobZ avatar
fr flag
อืม ฉันเคยใช้การกำหนดค่านี้เป็นส่วนหนึ่งของการแก้ปัญหามาก่อน และเพิ่งลองอีกครั้ง มันบอกว่า: `การสร้างโมเดลล้มเหลวเนื่องจากการเข้า: our-namespace/our-api: คำนำหน้าเส้นทางไม่ควรมีสัญลักษณ์แทน: /(.*)`
Mikołaj Głodziak avatar
id flag
ลองเพิ่มคำอธิบายประกอบ `nginx.ingress.kubernetes.io/use-regex: "true"` อ่านเพิ่มเติมได้[ที่นี่](https://kubernetes.github.io/ingress-nginx/user-guide/ingress-path-matching/#regular-expression-support) คุณยังสามารถดูรายละเอียดของ[ข้อบกพร่องนี้](https://github.com/kubernetes/kubernetes/issues/41881) ดูเหมือนว่าจะยังไม่ได้รับการแก้ไข

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา