我需要能够从pod发出请求以使用SSL服务。最简单的方法是什么?
在我的设置中,我已配置CoreDNS以将来自domain.com的每个请求的目的地重写为service.namespace.svc.cluster.local。这样做是由于我在Kubernetes中运行的调用者软件的局限性,我希望在Kubernetes中路由这些请求。
答案 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
在其中生成密钥和证书文件文件夹,并且对容器中的所有容器都可用。