【问题标题】:How to enable easily SSL in pod-to-service calls in Kubernetes如何在 Kubernetes 的 pod-to-service 调用中轻松启用 SSL
【发布时间】:2019-07-29 13:20:27
【问题描述】:

我需要能够使用 SSL 从 pod 向服务发出请求。最简单的方法是什么?

在我的设置中,我已将 CoreDNS 配置为将每个请求的目标从 domain.com 重写为 service.namespace.svc.cluster.local。这样做是因为我在 Kubernetes 中运行的调用者软件的限制,我希望这些请求在 Kubernetes 中路由。

【问题讨论】:

  • SSL 连接与 DNS 无关,您需要将您的服务映射为使用已具有 SSL 的端口,并且您的软件能够将连接配置为 SSL。你能分享一些你是如何连接的细节吗?你能分享你的yaml吗?
  • 是的,你说得对,它与 DNS 无关。我只是想分享一下请求是如何在 Kubernetes 中路由的,如果这有什么不同的话。我只想能够从应用程序实例 A 向实例 B 发出请求,它们都在同一个集群中运行。这些电话就像https://example.com。我认为我需要使用自签名证书来执行此操作,但不知道这是否是最简单的方法:Managing TLS in a cluster

标签: ssl kubernetes coredns


【解决方案1】:

根据 cmets,我的建议是使用 initContainer 在包含该服务的 pod 上生成一个新的自签名证书,将您的服务配置为使用这个新证书并确保客户端应用程序不会验证证书的权威性。

这是一个可以添加到服务中的 yaml 示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: alpine
  name: alpine
spec:
  replicas: 1
  selector:
    matchLabels:
      app: alpine
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: alpine
    spec:
      initContainers:
      - name: ssl-init
        image: wolmi/tools:v1.0.0
        command: ["sh", "-c", "openssl req -nodes -x509 -newkey rsa:4096 -keyout /tmp/ssl/key.pem -out /tmp/ssl/cert.pem -days 365 -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com""]
        volumeMounts:
        - name: ssl-folder
          mountPath: /tmp/ssl
      containers:
      - image: alpine
        name: alpine
        resources: {}
        volumeMounts:
        - name: ssl-folder
          mountPath: /tmp/ssl
      volumes:
      - name: ssl-folder
        emptyDir: {}     

Deployment 上,您使用emptyDir 参数创建一个卷以允许容器安装它并能够在其中写入,然后initContainer 在该文件夹中生成密钥和证书文件,并且可供所有人使用容器上的容器。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-12-01
  • 2013-02-09
  • 2019-11-24
  • 1970-01-01
  • 1970-01-01
  • 2013-01-08
  • 2011-10-30
  • 2021-11-20
相关资源
最近更新 更多