首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >香港进入GKE并拥有私人知识产权

香港进入GKE并拥有私人知识产权
EN

Stack Overflow用户
提问于 2021-02-25 05:07:35
回答 2查看 874关注 0票数 0

当我试图在GKE中创建kong入口控制器时,它实际上创建了面向公共的第4层tcp负载均衡器,我们是否可以阻止外部IP并使用私有IP?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-28 10:41:31

回答问题:

如何创建仅通过私有/内部IP与Ingress集群一起使用的Kong Ingress Controller使用的GKE资源?

您可以通过以下步骤来做到这一点:

  • 修改并应用Kong Ingress控制器清单。
  • 创建和应用将由Ingress使用的Kong资源。

一个副词! Ingress控制器(如nginx-ingresskong等)正在使用Loadbalancer类型的Service (第4层)作为传入通信量。

修改和应用Kong Ingress控制器清单

Kong github页面:

如前所述,您将需要下载、修改和应用Kong Ingress控制器清单。默认情况下,您的控制器将暴露于外部源,但您可以通过指定以下注释(在您下载的清单的LoadBalancer类型的Service中)来更改此行为:

  • networking.gke.io/load-balancer-type: "Internal"

您需要编辑Service,如下所示:

代码语言:javascript
复制
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 kong
代码语言:javascript
复制
NAME                      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 IPkong-proxy位于GKE节点的CIDR中。您需要将请求发送到子网中的特定地址。

创建和应用将由Ingress使用的Kong资源

要检查新创建的Ingress控制器是否运行正常,可以使用以下示例进行检查:

  • $ kubectl create deployment nginx --image=nginx
  • $ kubectl expose deployment nginx --port=80 --type=ClusterIP

此示例将遵循Ingress资源YAML清单:

代码语言:javascript
复制
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: 80

ingress.class用于告诉Kubernetes集群哪个Ingress控制器应该处理这个资源。

在应用上述资源之后,您应该能够通过调用:

  • $ kubectl get ingress kong-ingress
代码语言:javascript
复制
NAME           CLASS    HOSTS   ADDRESS       PORTS   AGE
kong-ingress   <none>   *       10.156.0.92   80      16m

如您所见,您的kong-ingress可在内部IP上使用,与类型为LoadBalancerService相同。

您可以使用子网中的其他VM,通过运行以下命令来检查它是否工作:

  • curl 10.156.0.92

应该看到NGINX欢迎页面。

追加资源:

票数 3
EN

Stack Overflow用户

发布于 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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66362728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档