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/
# 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?
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.