我已经按照文档的AKS内部nginx入口,而仍然有一个公共的在同一时间。https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx#additional-internal-load-balancer
https://github.com/kubernetes/ingress-nginx/blob/e8e793bb6270448960d53d9c3fbaa927ce8fbe4c/charts/ingress-nginx/values.yaml#L472
controller:
service:
loadBalancerIP: x.x.x.x
internal:
enabled: true
loadBalancerIP: y.y.y.y
annotations:
service.beta.kubernetes.io/azure-load-balancer-internal: "true"
请注意,我的使用情形多种多样:
1.有些服务需要既可以从公共lb ip访问,也可以从私有lb ip访问
1.其他服务需要仅由1个IP访问,并选择是其中的哪一个。
根据ingress-nginx
存储库中的文档,这应该是可能的,而不需要多个入口控制器或对象
按照这些文档,我能够在同一个入口控制器(IC)
下的同一个名称空间中创建一个入口控制器和一个内部控制器
但我的问题是,我不知道如何在实际的入口对象中引用负载平衡器。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: some-service
namespace: shared
labels:
app.kubernetes.io/component: udp
app.kubernetes.io/instance: some-service
app.kubernetes.io/name: some-service
annotations:
cert-manager.io/cluster-issuer: letsencrypt-dev
clusterIssuerEnv: dev
kubernetes.io/ingress.class: nginx
meta.helm.sh/release-name: some-service
meta.helm.sh/release-namespace: shared
kubernetes.io/tls-acme: "true"
spec:
tls:
- hosts:
- some-service.my-domain.com
secretName: wildcard.x.my-domain-tls-some-service
rules:
- host: some-service.my-domain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: some-service
port:
number: 12201
kubernetes.io/ingress.class: nginx
注解引用了入口类,但它只获得了公共负载平衡器IP。如何引用私有负载平衡器IP,以及如何做到这一点才能同时获得这两个IP?
1条答案
按热度按时间w8biq8rn1#
我认为有两个选择:
1.对于您当前的设置,创建一个新的ingress-class,例如nginx-internal,并将其指向您的第二个IC安装。缺点是,您需要为新ingressClass的每个应用程序bcs定义两个入口清单。
1.更好的选择IMO:使用一个入口控制器(IC)安装,为IC创建两个指向IC安装的服务(默认一个使用外部IP,新一个作为默认一个的副本,但使用内部IP)。现在,在需要的地方将some-service.my-domain.com解析为内部IP(DNS配置)。
顺便说一句:入口类注解不应该再使用了,现在有一个自己的字段。