我希望在 kubernetes 集群中运行的应用程序使用在我的 deploy.yaml 文件中定义的卷中挂载的证书。
我没有使用 ingress,而是将我的服务设置为 LoadBalancer。我找不到如何让此服务处理 tls 终止。所以我选择了另一条路线,我必须在 pod 中安装和使用证书。
我在应用程序的部署.yaml 文件中挂载了一个包含证书信息的密钥。pod 已启动并运行,并已成功找到此密钥。唯一的问题是 Web 服务器未配置为使用证书,因此我的站点不可用。如何设置 Web 服务器以使用证书?可以在 docker 文件中的命令中设置吗?
Web 服务器正在运行:npm run preview
检查 package.json 文件,这是:“preview”:“vite preview”
我可以配置 vite 以使用存储在 kubernetes 容器中的证书吗?是否可以在我的 dockerfile 中设置它?
已安装证书的部署部分
volumeMounts:
- name: cert-volume
mountPath: "/etc/ssl/certs"
readOnly: true
volumes:
- name: cert-volume
secret:
secretName: my-secret
我在网上查了一下,确实没有找到太多方法可以让我的 npm web 服务器使用此证书进行 TLS 终止。我怀疑我可以在 package.json 或直接在 dockerfile 中添加一些内容来指向我的 kubernetes 容器中的这个目录。
有没有人有类似的设置或经验?
对于 ViteJS,您需要按照https://vitejs.dev/config/server-options.html#server-https
server.https
中所述配置选项至少,您需要将密钥和证书传递给该选项,如https://nodejs.org/api/https.html#httpscreateserveroptions-requestlistener中所示。
例子:
由于您使用 Vite 作为 Web 服务器,因此您需要对 vite 进行一些特定配置。并且可以通过修改 vite.config.js 将 Vite 的服务器配置为使用 TLS/SSL,但是您需要指定证书的路径。请参阅此官方文档以配置 Vite,包括服务器选项。
由于 Web 服务器正在运行:npm run preview,最简单的方法是使用vite-plugin-mkcert包。下面是此命令,
完成后你的 vite.config.js 将如下所示,
此后,它会在您的系统和多个已安装的浏览器上安装本地证书。
您也可以使用以下命令启动您的 Vite 服务器:
$ npm run dev -- --host
这会将 --host 标志传递给 vite 命令行。您将看到如下输出: