Puncte:2

Implementarea unui controler AWS Load Balancer pentru serviciul API EKS Fargate

drapel ar

Context

Încerc să implementez un serviciu API containerizat într-un cluster EKS Fargate și să-l fac să deservească cererile de la adrese de internet externe ca o experiență POC/de învățare supra-proiectată. Întâmpin probleme când vine vorba de a înțelege cum să direcționez traficul de rețea către serviciul Fargate. Îndrumarea mea principală pentru proiect sunt aceste două tutoriale:

Dar lipsa mea de experiență se arată atunci când vine vorba de a decide dacă ar trebui să încerc să configurez un API Gateway, un Application Load Balancer, un ALB Ingress Controller sau să folosesc AWS Load Balancer Controller, cele mai ulterioare încercări ale mele actuale au fost cu cel din urmă. Majoritatea infrastructurii și componentelor EKS/Fargate funcționează folosind fișierele Terraform și „.yaml” pentru a le folosi cu kubectl.

Înființat

Am următoarele implementări cu o singură configurație Terraform care se implementează cu succes:

  • Un VPC cu subrețele private și publice și atât gateway-uri nat, cât și vpn activate
  • Un cluster EKS cu coredns, kube-proxy, vpc-cni și un singur profil fargate care selectează spațiul de nume al aplicației mele și alocă noduri subrețelelor private ale VPC-ului.

Am următoarele configurații „.yaml” care sunt consecvente între diferitele încercări de metodă:

  • namespace.yaml (fel: spațiu de nume)
  • deployment.yaml (fel: Desfăşurare)
  • deploy_secret.yaml (fel: Secret)
  • service.yaml (fel: Serviciu, spec:tip: NodePort)

Sunt bucuros să postez detaliile oricăruia dintre aceste fișiere, dar această postare este deja foarte lungă.

Problema

Voi intra în detalii pentru a încerca să funcționeze controlerul AWS Load Balancer, deoarece acesta a fost cel folosit în tutorialul EKS Workshop, dar vă rog să-mi spuneți dacă cu siguranță ar trebui să folosesc una dintre celelalte metode. De asemenea, ar trebui să prefațez că problemele apar atât cu propria mea aplicație, cât și cu aplicația eșantion, cu nimic schimbat.

După ce îmi implementez infrastructura cu Terraform și cu succes configurați și instalați controlerul AWS LB Îmi creez implementarea și serviciul cu kubectl. Problema începe când încerc să creez obiectul Ingress (?), configurația furnizată arată astfel:

---
apiVersion: networking.k8s.io/v1beta1
fel: Intrare
metadate:
  spatiu de nume: spatiul-meu
  nume: ingress-myapp
  adnotari:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
specificație:
  reguli:
    - http:
        trasee:
          - cale: /*
            backend:
              serviceName: service-myapp
              servicePort: 80

Aceasta returnează o eroare care spune eroare: eroare la validarea „ingress.yaml”:, am omis detalii deoarece acest lucru este rezolvat în această întrebare conducând la aceasta cerere de tragere. Am reconfigurat fișierul pentru a urma definiția de configurare modificată, care acum arată astfel:

apiVersion: networking.k8s.io/v1
fel: Intrare
metadate:
  nume: ingress-myapp
  namespace: my-namesace
  adnotari:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/scheme: internet-facing
specificație:
  defaultBackend:
    serviciu:
      nume: service-myapp
      port:
        număr: 80
  reguli:
    - http:
        trasee:
          - cale: /*
            backend:
              serviciu:
                nume: service-myapp
                port:
                  număr: 80
            pathType: ImplementationSpecific

Aceasta are ca rezultat eroarea:

Eroare de la server (InternalError): eroare la crearea „ingress.yaml”: a apărut o eroare internă: nu a reușit apelarea webhook „vingress.elbv2.k8s.aws”: postați „https://aws-load-balancer-webhook-service.kube -system.svc:443/validate-networking-v1-ingress?timeout=10s": termenul limită a contextului a fost depășit

am urmat împreună cu acest post descriind o problemă similară, așa că m-am asigurat că toate referințele mele la LBC foloseau 2.4.0, dar nu au afectat problema. M-am uitat și în aceste două fire (Problemă GitHub și Firul Reddit) dar mă chinui să înțeleg care a fost soluția în aceste cazuri.

Ceea ce deduc este că o parte a procesului nu poate ajunge la o adresă externă atunci când validează noul obiect/configurație de intrare, dar nu sunt sigur ce componentă încearcă să facă acea solicitare și dacă este o permisiune sau o problemă de rețea care împiedică aceasta. Orice îndrumare sau sfaturi sunt apreciate!

Puncte:0
drapel za

Trebuie să creați un grup de securitate AWS pentru porturile 443 și porturile podului cu care vorbește. (443 -> xx?)

Apoi adăugați această regulă la nodurile din clusterul dvs. Solicitarea dvs. expiră deoarece AWS a eliminat toate permisiunile din clusterele EKS de pe noduri.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.