问题 在GCE / GKE上启用HTTPS


我在Google Cloud上运行Kubernetes的网站。目前,一切运作良好 - 通过http。但我需要https。我有几个服务,其中一个是暴露给外面的世界,我们称之为网络。据我所知,这是唯一需要修改的服务。我尝试在GCP的网络部分创建静态IP和TCP / SSL负载均衡器ssl-LB,并在我创建的web.yaml中使用该LB.创建服务时遇到困难:

Error creating load balancer (will retry): Failed to create load 
balancer for service default/web: requested ip <IP> is 
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>

根据GCP,我的IP是静态的。哈希LB在任何地方都找不到,无论如何都应该分配给ssl-LB.如何正确分配?

更多细节:

以下是web.yaml的内容

apiVersion: v1
kind: Service
metadata:
name: web
labels:
  ...
spec:
  type: LoadBalancer
  loadBalancerIP: <RESERVED STATIC IP> 
ports:
- port: 443
  targetPort: 7770
selector:
  ...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 1
  template:
    metadata:
      labels:
        ...
  spec:
    containers:
    - name: web
      image: gcr.io/<PROJECT>/<IMAGE NAME>
      ports:
      - containerPort: 7770

11855
2018-06-05 09:36


起源

我推荐使用 Ingress。它提供了附加静态IP的官方方式,并在配置时在Google Cloud Load Balancer上提供TLS终止。 cloud.google.com/container-engine/docs/tutorials/http-balancer - Ahmet Alp Balkan - Google
我以前看过那个教程。这是否意味着,我需要额外的nginx服务器?也就是说,以与此处类似的方式: blog.kubernetes.io/2015/07/... 。如果可能的话,我宁愿不这样做。 - Jaakko Vainio
不,你链接的文章在这一点上很老了。该 Ingress 资源不会在GKE上运行单独的nginx服务器。它直接使用TLS证书配置Google Cloud Load Balancer。 - Ahmet Alp Balkan - Google
现在我明白为什么他们说运行一个kube集群需要100万美元的工程时间! - the0ther


答案:


由于您尚未提及此问题,我只是假设您正在使用Google容器引擎(GKE)进行Kubernetes设置。

在服务资源清单中,如果设置了 Type 至 LoadBalancer,Kubernetes on GKE使用GCE自动设置网络负载平衡(L4负载均衡器)。您必须使用自己的自定义服务器或类似服务终止您的pod中的连接 nginx/apache

如果你的目标是设置一个(HTTP / HTTPS)L7负载均衡器(看起来就是这种情况),它将更简单,更容易使用 Ingress Kubernetes的资源 (从...开始 v1.1)。 GKE使用此设置自动设置GCE HTTP / HTTPS L7负载平衡。

您将能够添加您的TLS证书,这些证书将由GKE自动在GCE负载均衡器上进行配置。

此设置具有以下优点:

  1. 为每个URL路径和端口指定服务(它使用 URL Maps 从GCE配置这个)。
  2. 在GCE负载均衡器上设置和终止SSL / TLS(它使用 Target proxies 从GCE配置这个)。
  3. GKE还会自动配置GCE health checks 为您的服务。

您的职责是处理后端服务逻辑以处理您的pod中的请求。

有关更多信息 关于设置HTTP负载平衡的GKE页面

请记住,在使用GKE时,它会自动使用可用的GCE负载平衡器支持上述两种用例,您无需手动设置 GCE负载均衡


15
2018-06-09 16:22