适用于LoadBalancer类型的服务的Kuberntes SSL

时间:2018-08-24 02:09:33

标签: node.js ssl socket.io kubernetes kubernetes-ingress

我正在Kubernetes上部署基于Socket.IO和NodeJs的应用程序。我发现通过以下服务配置,我可以非常轻松地保持客户端粘性,

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      name: my-service
      labels:
        app: my-service
    spec:
      replicas: 3
      template:
        metadata:
          labels:
            app: my-service
        spec:
          containers:
            - image: gcr.io/app_name/my-service:latest
              imagePullPolicy: Always
              name: my-service
              ports:
                - containerPort: 8080
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: my-service
      annotations:
        traefik.backend.loadbalancer.stickiness: "true"
      labels:
        app: my-service
    spec:
      type: LoadBalancer
      sessionAffinity: "ClientIP"
      ports:
        - name: my-service
          port: 80
          protocol: TCP
          targetPort: 4000
      selector:
        app: my-service

现在,我坚持添加 SSL证书。我无法获得文档或资源来为类型 LoadBalancer 服务添加 SSL证书。可能吗?如果是的话,我该怎么点呢?

如果根本不可能,还有其他方法吗?我在GCP上使用GKE。 谁能帮我这个?谢谢。

1 个答案:

答案 0 :(得分:1)

当您在注解中提及traefik时,看起来有点怪异。尽管如此,在这种情况下仍然几乎不可能管理证书≥必须在云提供商级别基于注释来支持,因为没有明确的方法将tls证书与特定服务/端口绑定,更不用说像cert-manager这样的自动证书了/ ingress。

要实现这一点,您应该使用某种API网关/入口控制器,该API网关/入口控制器可以为您处理该问题,而不是直接公开您的服务,或者在您的应用程序中实现TLS支持。