yog*_*gen 9 kubernetes-helm amazon-eks nginx-ingress
在我的 AWS EKS 中,我使用以下命令安装了 nginx-ingress:
helm upgrade --install -f controller.yaml \
--namespace nginx-ingress \
--create-namespace \
--version 3.26.0 \
nginx-ingress ingress-nginx/ingress-nginx
Run Code Online (Sandbox Code Playgroud)
文件controller.yaml看起来像这样:
controller:
ingressClass: nginx-internal
service:
internal:
enabled: true
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)
我有几个应用程序,每个应用程序都有不同的虚拟主机的单独入口,我希望所有入口对象都指向内部负载均衡器,即使我设置了ingressClass应用程序的入口,它们似乎也指向公共负载均衡器:
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx-internal
Run Code Online (Sandbox Code Playgroud)
那么,有没有办法只创建单个内部负载均衡器,其入口指向该负载均衡器?
谢谢
我设法通过使用以下内容来使其工作controller.yaml
controller:
ingressClassByName: true
ingressClassResource:
name: nginx-internal
enabled: true
default: false
controllerValue: "k8s.io/ingress-nginx-internal"
service:
# Disable the external LB
external:
enabled: false
# Enable the internal LB. The annotations are important here, without
# these you will get a "classic" loadbalancer
internal:
enabled: true
annotations:
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
service.beta.kubernetes.io/aws-load-balancer-type: nlb
Run Code Online (Sandbox Code Playgroud)
然后你可以使用ingressClassName如下
kind: Ingress
spec:
ingressClassName: nginx-internal
Run Code Online (Sandbox Code Playgroud)
这不是必需的,但我将其部署到反映内部唯一入口的命名空间
helm upgrade --install \
--create-namespace ingress-nginx-internal ingress-nginx/ingress-nginx \
--namespace ingress-nginx-internal \
-f controller.yaml
Run Code Online (Sandbox Code Playgroud)
小智 3
注意到controller.yaml您启用了internal设置。根据文档,此设置创建两个负载均衡器,一个外部负载均衡器和一个内部负载均衡器,以防您希望将某些应用程序公开到互联网,而其他应用程序仅在同一 k8s 集群中的 vpc 内部公开。
controller.yaml如果您只需要一个内部负载均衡器,请尝试按如下方式进行设置:
controller:
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: 'true'
service.beta.kubernetes.io/aws-load-balancer-type: nlb
service.beta.kubernetes.io/aws-load-balancer-internal: "true"
service.beta.kubernetes.io/aws-load-balancer-subnets: "subnet-xxxxx,subnet-yyyyy,subnet-zzzzz"
Run Code Online (Sandbox Code Playgroud)
它将只提供一个 NBL 在内部路由流量。
使用service.beta.kubernetes.io/aws-load-balancer-subnets注释,您可以选择负载均衡器将流量路由到的可用区/子网。
如果删除service.beta.kubernetes.io/aws-load-balancer-type注释,将配置 Classic Load Balancer 而不是网络。
| 归档时间: |
|
| 查看次数: |
15340 次 |
| 最近记录: |