如何配置Kubernetes部署中挂载证书的Vite预览服务器以启用HTTPS
如何配置Kubernetes部署中挂载证书的Vite预览服务器以启用HTTPS
嘿,我来帮你搞定这个问题!你已经成功把证书通过Secret挂载到Pod里了,接下来只需要让Vite预览服务器认出并使用这些证书就行,分几步来操作:
第一步:确认证书在Pod里的具体路径
首先得明确证书文件在Pod里的位置——比如你在Deployment的volumeMounts里配置的挂载路径是/app/certs/,那可以用kubectl exec <你的Pod名> -- ls /app/certs/确认文件名和路径,这一步很关键,后面配置要用到准确的路径。
第二步:给Vite配置HTTPS证书
有两种方式可以让Vite启用HTTPS并加载你的证书,选哪种看你的偏好:
方式一:直接修改package.json的预览脚本
既然你现在的preview脚本是vite preview,我们可以直接在命令后面加HTTPS相关参数:
"scripts": { "preview": "vite preview --https --cert /app/certs/fullchain.pem --key /app/certs/privkey.pem --port 443" }
--https:告诉Vite启用HTTPS模式--cert:指定证书文件的绝对路径(替换成你实际的证书路径和文件名)--key:指定私钥文件的绝对路径(同样替换成你的实际路径)--port 443:可选,把预览端口改成HTTPS默认的443,这样外部访问不用加端口号;如果不改的话Vite默认用4173,记得后面配置Service时对应上就行。
方式二:修改vite.config.js(更持久的配置)
如果不想每次改脚本,推荐直接在Vite配置文件里定义预览服务器的HTTPS设置:
import { defineConfig } from 'vite'; export default defineConfig({ preview: { https: { cert: '/app/certs/fullchain.pem', // 替换成你的证书路径 key: '/app/certs/privkey.pem' // 替换成你的私钥路径 }, port: 443 // 可选,设置默认端口 } });
这样改完之后,原来的vite preview脚本不用动,Vite会自动读取这个配置启用HTTPS。
第三步:调整Kubernetes的端口配置
不管你用哪种方式,都要确保Deployment和Service的端口对应上:
- Deployment里的容器端口:在
containers字段里添加端口暴露:
containers: - name: 你的应用名 image: 你的镜像名 ports: - containerPort: 443 # 和你Vite设置的端口一致 protocol: TCP volumeMounts: - name: cert-secret mountPath: /app/certs/ readOnly: true
- Service的LoadBalancer端口映射:把Service的端口指向容器的443端口:
apiVersion: v1 kind: Service metadata: name: 你的服务名 spec: type: LoadBalancer ports: - port: 443 targetPort: 443 protocol: TCP name: https selector: app: 你的应用标签
第四步:测试验证
重新部署你的应用后,可以做这几步验证:
- 用
kubectl exec进入Pod,运行npm run preview,看有没有报错(比如找不到证书文件的话会明确提示,这时候检查路径是否正确) - 访问LoadBalancer的外部IP,应该能通过HTTPS正常打开你的站点了
备注:内容来源于stack exchange,提问作者elementmg




