求助:Kong Ingress Controller 3.0.x多实例部署方案及替代方法
部署多实例Kong Ingress Controller 3.0.x的实现方案
一、直接部署多KIC 3.0.x实例
核心是用独立IngressClass和命名空间隔离实现两个带独立外部IP的LoadBalancer实例,步骤如下:
部署第一个KIC实例:
- 用Helm安装时指定专属IngressClass和命名空间,同时设置Service为LoadBalancer:
helm install kong kong/ingress-controller \ --namespace kong-1 \ --create-namespace \ --set ingressController.ingressClass.name=kong-1 \ --set service.type=LoadBalancer - 等待Service分配外部IP,记下来后续绑定Ingress用。
- 用Helm安装时指定专属IngressClass和命名空间,同时设置Service为LoadBalancer:
部署第二个KIC实例:
- 创建新命名空间,安装时指定不同的IngressClass,避免资源名冲突:
helm install kong-2 kong/ingress-controller \ --namespace kong-2 \ --create-namespace \ --set ingressController.ingressClass.name=kong-2 \ --set service.type=LoadBalancer \ --set fullnameOverride=kong-2 - 同样等待这个Service拿到独立的外部IP。
- 创建新命名空间,安装时指定不同的IngressClass,避免资源名冲突:
绑定Ingress到对应实例:
定义Ingress资源时,通过spec.ingressClassName指定对应KIC的类,比如:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app1-ingress spec: ingressClassName: kong-1 rules: - host: app1.yourdomain.com http: paths: - path: / pathType: Prefix backend: service: name: app1-service port: number: 80另一个Ingress设置
ingressClassName: kong-2,流量就会走对应的KIC实例和外部IP。
二、替代方案:单KIC实例+多LoadBalancer Service
如果不想部署多个KIC,也可以通过给单个KIC绑定多个LoadBalancer Service实现独立IP:
先部署一个标准的KIC实例,然后创建两个独立的LoadBalancer Service,都指向KIC的代理组件:
第一个Service(对应IP1):apiVersion: v1 kind: Service metadata: name: kong-proxy-1 namespace: kong spec: type: LoadBalancer ports: - name: proxy port: 80 targetPort: 8000 - name: proxy-ssl port: 443 targetPort: 8443 selector: app.kubernetes.io/name: ingress-controller app.kubernetes.io/component: proxy第二个Service(对应IP2):
apiVersion: v1 kind: Service metadata: name: kong-proxy-2 namespace: kong spec: type: LoadBalancer ports: - name: proxy port: 80 targetPort: 8000 - name: proxy-ssl port: 443 targetPort: 8443 selector: app.kubernetes.io/name: ingress-controller app.kubernetes.io/component: proxy给Ingress加注解指定对应Service:
要让Ingress走第一个IP,就在注解里指定Service:apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app1-ingress annotations: konghq.com/proxy-service: kong/kong-proxy-1 spec: ingressClassName: kong rules: - host: app1.yourdomain.com http: paths: - path: / pathType: Prefix backend: service: name: app1-service port: number: 80另一个Ingress注解用
konghq.com/proxy-service: kong/kong-proxy-2,就能实现不同流量用不同的外部IP。
内容的提问来源于stack exchange,提问作者Richardo Wijaya
相关产品推荐
相关产品推荐

