【问题标题】:How do I get a single Ingress to be handled by just one of two HAProxy Ingress Controllers on AKS?如何让 AKS 上的两个 HAProxy 入口控制器之一处理单个入口?
【发布时间】:2021-10-05 08:47:58
【问题描述】:

我有两个独立的 IngressController,一个是内部的,一个是外部的。我想为每个 Ingress 定义使用哪个控制器。

我为外部控制器定义了--ingress.class=hapxroxy-ext arg,为内部控制器定义了--empty-ingress-class

入口服务

apiVersion: v1
kind: Service
metadata:
  annotations:
  labels:
    run: ext-haproxy-ingress
  name: ext-haproxy-ingress
  namespace: ext-haproxy-controller
spec:
  selector:
    run: ext-haproxy-ingress
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    "service.beta.kubernetes.io/azure-load-balancer-internal": "true"
  labels:
    run: haproxy-ingress
  name: haproxy-ingress
  namespace: haproxy-controller
spec:
  selector:
    run: haproxy-ingress
  type: LoadBalancer

我有 IngressClasses。

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: external-lb
spec:
  controller: haproxy.org/ingress-controller/hapxroxy-ext
---
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: internal-lb
  annotations:
    "ingressclass.kubernetes.io/is-default-class": "true"
spec:
  controller: haproxy.org/ingress-controller

我有一个入口

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    "kubernetes.io/ingress.class": internal-lb
spec:
  ingressClassName: internal-lb
...

尽管将 Ingress 映射到 internal-lbinternal-lbexternal-lb 都处理请求。

docs 看起来很简单,但我遗漏了一些东西。

【问题讨论】:

标签: kubernetes azure-aks haproxy-ingress


【解决方案1】:

这个问题是由于在 ingress.yaml 中使用 IngressClassName 时 https://github.com/haproxytech/kubernetes-ingress 中的一个错误造成的。如果您从 ingress.yaml 中删除 IngressClassName 并仅使用“kubernetes.io/ingress.class”:注释问题就会消失,这更像是一种解决方法而不是修复。

此问题已提出并仍然存在,请参阅下面的链接以获取更新。

https://github.com/haproxytech/kubernetes-ingress/issues/354#issuecomment-904551220

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-29
    • 2020-05-14
    • 2020-08-21
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2018-08-10
    • 2018-01-04
    相关资源
    最近更新 更多