Score:2

การปรับใช้ AWS Load Balancer Controller สำหรับบริการ EKS Fargate API

ธง ar

บริบท

ฉันกำลังพยายามปรับใช้บริการ API ที่มีคอนเทนเนอร์กับคลัสเตอร์ EKS Fargate และขอให้บริการดังกล่าวจากที่อยู่อินเทอร์เน็ตภายนอกเป็น POC/ประสบการณ์การเรียนรู้ที่ได้รับการออกแบบทางวิศวกรรม ฉันพบปัญหาในการทำความเข้าใจวิธีกำหนดเส้นทางการรับส่งข้อมูลเครือข่ายไปยังบริการ Fargate คำแนะนำหลักของฉันสำหรับโครงการคือบทช่วยสอนสองบทนี้:

แต่ความไร้ประสบการณ์ของฉันแสดงให้เห็นเมื่อต้องตัดสินใจว่าฉันควรลองตั้งค่าเกตเวย์ API, Application Load Balancer, ALB Ingress Controller หรือใช้ AWS Load Balancer Controller ความพยายามที่ไกลที่สุดในปัจจุบันของฉันอยู่ที่สิ่งหลัง ฉันมีโครงสร้างพื้นฐานและส่วนประกอบ EKS/Fargate ส่วนใหญ่ที่ทำงานโดยใช้ไฟล์ Terraform และ '.yaml' เพื่อใช้กับ kubectl

ติดตั้ง

ฉันมีการปรับใช้ต่อไปนี้ด้วยการกำหนดค่า Terraform เดียวที่ปรับใช้สำเร็จ:

  • VPC ที่มีซับเน็ตส่วนตัวและสาธารณะ และเปิดใช้งานทั้งเกตเวย์ nat และ vpn
  • คลัสเตอร์ EKS ที่มี coredns, kube-proxy, vpc-cni และโปรไฟล์ fargate เดียวที่เลือกเนมสเปซแอปพลิเคชันของฉันและจัดสรรโหนดให้กับซับเน็ตส่วนตัวของ VPC

ฉันมีการกำหนดค่า '.yaml' ต่อไปนี้ที่สอดคล้องกันระหว่างความพยายามในวิธีการต่างๆ:

  • เนมสเปซ.yaml (ชนิด: เนมสเปซ)
  • Deployment.yaml (ประเภท: การปรับใช้)
  • Deploy_secret.yaml (ประเภท: ความลับ)
  • service.yaml (ชนิด:บริการ, ข้อมูลจำเพาะ: ประเภท: NodePort)

ฉันยินดีที่จะโพสต์รายละเอียดของไฟล์เหล่านี้ แต่โพสต์นี้ยาวมากแล้ว

ปัญหา

ฉันจะลงรายละเอียดเกี่ยวกับการพยายามทำให้ AWS Load Balancer Controller ทำงาน เนื่องจากเป็นตัวควบคุมที่ใช้ในบทเรียนเวิร์กช็อป EKS แต่โปรดแจ้งให้เราทราบหากฉันควรใช้หนึ่งในวิธีอื่นอย่างแน่นอน ฉันควรเกริ่นด้วยว่าปัญหาเกิดขึ้นกับทั้งแอปพลิเคชันของฉันเองและแอปพลิเคชันตัวอย่างโดยไม่มีอะไรเปลี่ยนแปลง

หลังจากที่ฉันปรับใช้โครงสร้างพื้นฐานกับ Terraform และประสบความสำเร็จ ติดตั้งและติดตั้ง AWS LB Controller ฉันสร้างการปรับใช้และบริการด้วย kubectl ปัญหาเริ่มต้นเมื่อฉันพยายามสร้างวัตถุ Ingress (?) การกำหนดค่าที่ให้มามีลักษณะดังนี้:

---
apiVersion: networking.k8s.io/v1beta1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  เนมสเปซ: เนมสเปซของฉัน
  ชื่อ: ingress-myapp
  คำอธิบายประกอบ:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: เชื่อมต่ออินเทอร์เน็ต
    alb.ingress.kubernetes.io/target-type: ip
ข้อมูลจำเพาะ:
  กฎ:
    - http:
        เส้นทาง:
          - เส้นทาง: /*
            แบ็กเอนด์:
              ชื่อบริการ: service-myapp
              พอร์ตบริการ: 80

สิ่งนี้ส่งคืนข้อผิดพลาดว่า ข้อผิดพลาด: ข้อผิดพลาดในการตรวจสอบ "ingress.yaml":ฉันละเว้นรายละเอียดเพราะสิ่งนี้ได้รับการแก้ไขใน คำถามนี้ นำไปสู่สิ่งนี้ ดึงคำขอ. ฉันได้กำหนดค่าไฟล์ใหม่ตามข้อกำหนดการกำหนดค่าที่เปลี่ยนแปลง ซึ่งตอนนี้มีลักษณะดังนี้:

รุ่น api: networking.k8s.io/v1
ชนิด: ทางเข้า
ข้อมูลเมตา:
  ชื่อ: ingress-myapp
  เนมสเปซ: my-namesace
  คำอธิบายประกอบ:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/scheme: เชื่อมต่ออินเทอร์เน็ต
ข้อมูลจำเพาะ:
  แบ็กเอนด์เริ่มต้น:
    บริการ:
      ชื่อ: service-myapp
      ท่า:
        จำนวน: 80
  กฎ:
    - http:
        เส้นทาง:
          - เส้นทาง: /*
            แบ็กเอนด์:
              บริการ:
                ชื่อ: service-myapp
                ท่า:
                  จำนวน: 80
            ประเภทเส้นทาง: การนำไปใช้งานเฉพาะ

ส่งผลให้เกิดข้อผิดพลาด:

ข้อผิดพลาดจากเซิร์ฟเวอร์ (InternalError): เกิดข้อผิดพลาดขณะสร้าง "ingress.yaml": เกิดข้อผิดพลาดภายใน: ไม่สามารถเรียก webhook "vingress.elbv2.k8s.aws": โพสต์ "https://aws-load-balancer-webhook-service.kube -system.svc:443/validate-networking-v1-ingress?timeout=10s": เกินกำหนดเวลาบริบท

ผมก็ตามไปด้วย โพสต์นี้ อธิบายปัญหาที่คล้ายกัน ดังนั้นฉันจึงแน่ใจว่าการอ้างอิงถึง LBC ทั้งหมดของฉันใช้ 2.4.0 แต่ไม่ส่งผลกระทบต่อปัญหา ฉันยังดูทั้งสองหัวข้อนี้ (ปัญหา GitHub และ กระทู้เร้ดดิท) แต่ฉันไม่เข้าใจว่าวิธีแก้ปัญหาในกรณีเหล่านี้คืออะไร

สิ่งที่ฉันอนุมานคือบางส่วนของกระบวนการไม่สามารถเข้าถึงที่อยู่ภายนอกได้เมื่อตรวจสอบความถูกต้องของวัตถุ/การกำหนดค่าขาเข้าใหม่ แต่ฉันไม่แน่ใจว่าส่วนประกอบใดที่พยายามส่งคำขอนั้น และไม่ว่าจะเป็นการอนุญาตหรือปัญหาเครือข่ายที่ขัดขวาง มัน. คำแนะนำหรือคำแนะนำใด ๆ ที่ชื่นชม!

Score:0
ธง za

คุณต้องสร้างกลุ่มความปลอดภัย AWS สำหรับพอร์ต 443 และพอร์ตของพ็อดที่พูดด้วย (443 -> xx?)

จากนั้นเพิ่มกฎนี้ไปยังโหนดในคลัสเตอร์ของคุณ คำขอของคุณหมดเวลาเนื่องจาก AWS ลบสิทธิ์ทั้งหมดในคลัสเตอร์ EKS ข้ามโหนด

โพสต์คำตอบ

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