如何在Kubernetes中的Pod到服务呼叫中轻松启用SSL

时间:2019-07-29 13:20:27

标签: ssl kubernetes coredns

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

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

1 个答案:

答案 0 :(得分:1)

根据评论,我的建议是使用initContainer在包含服务的容器上生成新的自签名证书,将您的服务配置为使用此新证书,并确保客户端应用程序不验证证书的授权。

这是一个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在其中生成密钥和证书文件文件夹,并且对容器中的所有容器都可用。