在GCE/GKE上启用HTTPS

Jaa*_*nio 16 ssl load-balancing google-cloud-platform kubernetes

我在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>
Run Code Online (Sandbox Code Playgroud)

根据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
Run Code Online (Sandbox Code Playgroud)

Tux*_*ude 23

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

在服务资源清单中,如果设置TypeLoadBalancer,则GKE上的Kubernetes会自动使用GCE设置网络负载平衡(L4负载平衡器).您必须使用自己的自定义服务器或类似nginx/ 来终止您的pod中的连接apache.

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

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

此设置具有以下优点:

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

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

有关设置HTTP负载平衡GKE页面上提供了更多信息.

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