当我试图在GKE中创建kong入口控制器时,它实际上创建了面向公共的第4层tcp负载均衡器,我们是否可以阻止外部IP并使用私有IP?
发布于 2021-02-28 10:41:31
回答问题:
如何创建仅通过私有/内部IP与
Ingress集群一起使用的Kong Ingress Controller使用的GKE资源?
您可以通过以下步骤来做到这一点:
Kong Ingress控制器清单。Ingress使用的Kong资源。一个副词!
Ingress控制器(如nginx-ingress、kong等)正在使用Loadbalancer类型的Service(第4层)作为传入通信量。
修改和应用Kong Ingress控制器清单
Kong github页面:
如前所述,您将需要下载、修改和应用Kong Ingress控制器清单。默认情况下,您的控制器将暴露于外部源,但您可以通过指定以下注释(在您下载的清单的LoadBalancer类型的Service中)来更改此行为:
networking.gke.io/load-balancer-type: "Internal"您需要编辑Service,如下所示:
apiVersion: v1
kind: Service
metadata:
annotations:
networking.gke.io/load-balancer-type: "Internal" # <-- IMPORTANT, ADD THIS
name: kong-proxy
namespace: kong
spec:
ports:
- name: proxy
port: 80
protocol: TCP
targetPort: 8000
- name: proxy-ssl
port: 443
protocol: TCP
targetPort: 8443
selector:
app: ingress-kong
type: LoadBalancer生成修改后的YAML清单后,负责传入流量的Service应该如下所示:
$ kubectl get service -n kongNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kong-proxy LoadBalancer 10.8.5.66 10.156.0.92 80:32764/TCP,443:32002/TCP 14m
kong-validation-webhook ClusterIP 10.8.6.32 <none> 443/TCP 14m如您所见,External IP的kong-proxy位于GKE节点的CIDR中。您需要将请求发送到子网中的特定地址。
创建和应用将由Ingress使用的Kong资源
要检查新创建的Ingress控制器是否运行正常,可以使用以下示例进行检查:
$ kubectl create deployment nginx --image=nginx$ kubectl expose deployment nginx --port=80 --type=ClusterIP此示例将遵循Ingress资源YAML清单:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kong-ingress
annotations:
kubernetes.io/ingress.class: "kong" # <-- IMPORTANT, ADD THIS
spec:
rules:
- host:
http:
paths:
- path: /
backend:
serviceName: nginx
servicePort: 80ingress.class用于告诉Kubernetes集群哪个Ingress控制器应该处理这个资源。
在应用上述资源之后,您应该能够通过调用:
$ kubectl get ingress kong-ingressNAME CLASS HOSTS ADDRESS PORTS AGE
kong-ingress <none> * 10.156.0.92 80 16m如您所见,您的kong-ingress可在内部IP上使用,与类型为LoadBalancer的Service相同。
您可以使用子网中的其他VM,通过运行以下命令来检查它是否工作:
curl 10.156.0.92应该看到NGINX欢迎页面。
追加资源:
发布于 2021-02-26 14:26:33
如果我在这里正确地理解了这个问题,我认为您应该能够使用内部L7大会了。下面是一个配置示例:
https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balance-ingress
但请检查您是否满足要求:https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balance-ingress#requirements
https://stackoverflow.com/questions/66362728
复制相似问题