web-dev-qa-db-fra.com

PLAGE EKS avec un seul alb, plusieurs espaces de noms et DNS externes

J'essaie de configurer un seul albar à travers plusieurs espaces de noms dans AWS EKS, chaque espace de noms a sa propre ressource d'entrée.

J'essaie de configurer le contrôleur d'entrée aws-loadbalancer-controller sur un k8s v1.20.

Le problème que je suis confronté est que chaque fois que j'essaie de déployer un nouveau service, il est toujours en train de faire une nouvelle machine de livraison classique en plus de l'alb partagé spécifié dans la configuration Ingress.

https://kubernettes-sigs.github.io/aws-load -lancher-controller/v2.2/

archi

# service-realm1-dev.yaml:
apiVersion: v1
kind: Service
metadata:
  name: sentinel
  annotations:
    external-dns.alpha.kubernetes.io/hostname: realm1.dev.sentinel.mysite.io
  namespace: realm1-dev
  labels:
    run: sentinel
spec:
  ports:
    - port: 5001
      name: ps1
      protocol: TCP
  selector:
    app: sentinel
  type: LoadBalancer
# ingress realm1-app
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/group.name: sentinel-ingress
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-port: traffic-port
    alb.ingress.kubernetes.io/healthcheck-interval-seconds: "15"
    alb.ingress.kubernetes.io/healthcheck-timeout-seconds: "5"
    alb.ingress.kubernetes.io/success-codes: 200-300
    alb.ingress.kubernetes.io/healthy-threshold-count: "2"
    alb.ingress.kubernetes.io/unhealthy-threshold-count: "2"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80}]'
  name: sentinel-ingress-controller
  namespace: realm1-dev
spec:
  rules:
    - Host: realm1.dev.sentinel.mysite.io
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              servicePort: use-annotation
              serviceName: sentinel

De plus, j'utilise des DNS externes pour créer un réecodset de route53, puis j'utilise le même DNS configuré pour les demandes d'itinéraire du service EKS spécifique, y a-t-il un problème avec cette approche?

3
Ben Rhouma Zied

Malheureusement, l'outil utilisé pour votre usecase est faux. AWS Load Balancer Controller créera un nouvel équilibreur de charge pour chaque ressource d'ingress et je pense, il constitue un équilibreur de charge réseau pour chaque ressource de service.

Pour votre cas d'utilisation, la meilleure option consiste à utiliser le contrôleur d'entrée NGinx. Vous pouvez déployer le contrôleur Nginx Ingresser dans n'importe quel espace de noms, puis créer des ressources d'entrée dans votre cluster et vous pouvez avoir un routage basé sur le cheminement/un nom d'hôte sur votre cluster.

Si vous auriez de nombreuses équipes/projets/applications et que vous souhaitez éviter un point d'échec unique dans lequel toutes vos applications dépendent de 1 ELB, vous pouvez déployer plus de 1 contrôleur d'entrée Nginx dans votre cluster K8S.

Il vous suffit de définir une variable de classe d'entrée dans votre déploiement de contrôleur d'entrée Nginx et d'ajouter cette annotation de classe d'entrée sur vos applications. De cette façon, les applications ayant une claque d'entrée: Nginxa Annotation seront regroupées avec le contrôleur d'entrée NGinx qui a Ingress-Class = Nginxa dans son déploiement.

0
YYashwanth