AWS ElasticIP 到 nginx 入口控制器 EKS?

问题描述 投票:0回答:2

我有一个简单的任务,但研究了几十篇文章也没有解决。

有一个简单的 AWS EKS 集群,是使用 eksctl、ElasticIP 从演示模板创建的,并且无需任何更改即可安装 https://bitnami.com/stack/nginx-ingress-controller/helm

我想在 AWS EKS nginx 入口控制器 1234567890.eu-central-1.elb.amazonaws.com 上使用 DNS A 记录将一个域 https://stage.mydomain.com 转发到 ElasticIP,所以我的集群的所有服务都可以在这个 ElasticIP 地址上使用。

我尝试通过负载均衡器和网络均衡器,但不起作用。

是否有经过验证的文章或行动序列可以通过这套服务解决此问题?

kubernetes amazon-ec2 amazon-eks nginx-ingress elastic-ip
2个回答
1
投票

是的,这在 AWS 文章中很常见,NLD 价值也仅以这种方式出现

https://aws.amazon.com/blogs/opensource/network-load-balancer-nginx-ingress-controller-eks/

在上面的文章中,使用NLB作为后端安装NGINX控制器,以相同的方式提供IP。

在这种情况下,您可以将

DNS
A
CNAME

添加

一旦您的入口控制器设置完成,您将获得

LB
端点,您必须将其添加到
DNS
作为
A
记录或
CNAME

这会将请求转发到集群。

现在在集群内部,您必须使用 YAML 创建入口

https://kubernetes.io/docs/concepts/services-networking/ingress/

ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

对于

NLB
中您可以将注释添加到服务中

**service.beta.kubernetes.io/aws-load-balancer-type: nlb**


apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '60'
    service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
  labels:
    helm.sh/chart: ingress-nginx-2.0.3
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/version: 0.32.0
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/component: controller
  name: ingress-nginx-controller
  namespace: ingress-nginx
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
    - name: http
      port: 80
      protocol: TCP
      targetPort: http
    - name: https
      port: 443
      protocol: TCP
      targetPort: https
  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/component: controller

0
投票

使用 helm 部署 nginx-ingress 时可以使用以下注解:

service.beta.kubernetes.io/aws-load-balancer-eip-allocations: "eipalloc-xxxxxxxxxx, eipalloc-yyyyyyyyyy"
service.beta.kubernetes.io/aws-load-balancer-subnets: "subnet-name-1, subnet-name-2"

来源: https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/service/annotations/#eip-allocations

© www.soinside.com 2019 - 2024. All rights reserved.