Kubernetes服务-使用HTTPS的负载均衡器

时间:2018-06-20 14:26:56

标签: kubernetes

我正在使用带有服务的kubernetes作为ClusterIP,并将入口置于服务的前面,以将其暴露给Kubernetes集群之外。

使用https运行入口并将其设为https,我创建了秘密并在入口中使用了该秘密。

  

kubectl创建秘密tls测试秘密--key密钥--cert证书

在我们的kubernetes集群中使用netscalar,因此,我能够将X-Forward-For,会话亲和力,负载均衡算法与入口一起使用。

现在,尝试将服务类型设为LoadBalancer,这样我就不必进入了。我知道,服务类型的loadbalancer提供了L4-loadbalancer,因此在load balancer中不会有会话亲和功能。既然,对一些服务来说还可以,我正在尝试使用它。

尝试使服务HTTPS出现,

  

https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#securing-the-service

在这里,我们创建tls secret并在部署部分而不是服务部分中使用引用。不知道它是如何工作的。另外,当我在浏览器中使用https://servicename.namespace.svc.XXXXX.com时遇到证书错误。

我的应用程序以https身份运行,并且需要属性文件(例如,

)中的密钥库和信任库

ssl.trustore = PATH_TO_THE_FILE ssl.keystore = PATH_TO_THE_FILE

我很困惑,如何使服务类型为loadbalancer https?

2 个答案:

答案 0 :(得分:2)

您回答了自己,但您没有意识到。

正如您所说的,LoadBalancer类型服务创建一个L4负载平衡器。 L4负载平衡器了解源IP:端口目标IP:端口,但他们不了解应用程序层上的任何内容。

HTTP / HTTPS负载平衡器位于L7上,因此它们可以识别应用程序。

因此,基本上您无法从Loadbalancer类型的服务中获得HTTPS负载均衡器。您希望它是一个入口。

答案 1 :(得分:0)

如果您使用的是云提供商(例如AWS),则可以在LoadBalancer服务中启用TLS终止,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: api
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:...
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  type: LoadBalancer
  selector:
    app: myApp
  ports:
    -  protocol: TCP
       port: 443
       targetPort: 8080