node.js - 用于负载均衡器类型服务的 Kubernetes SSL

标签 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。 谁能帮我这个?谢谢。

最佳答案

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

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

关于node.js - 用于负载均衡器类型服务的 Kubernetes SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51996550/

相关文章:

sql-server - 找不到数据源名称并且没有指定nodejs的默认驱动程序

node.js - 如何修复 Electron 中的 IPC 错误 "Error invoking remote method, an object could not be cloned"?

ruby - 在 Chef 运行错误期间使用 AWS SDK 但在 Chef 工作之外运行它

ssl - 在 Jetty 中使用 Lets-Encrypt SSL 证书

javascript - socket.io 无法在服务器上工作并出现 404 错误

security - socket.io 是否只向订阅者广播?

node.js - Nodejs 接收错误 "options.hostname"属性必须是字符串、未定义或 null 类型之一。在 validateHost 接收到类型对象

node.js - 命令 npm start "Missing script:start"错误后

SSL session 票证与 session ID

javascript - 如何处理这种典型的 WebSocket 使用情况?