You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何配置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的端口对应上:

  1. Deployment里的容器端口:在containers字段里添加端口暴露:
containers:
  - name: 你的应用名
    image: 你的镜像名
    ports:
      - containerPort: 443 # 和你Vite设置的端口一致
        protocol: TCP
    volumeMounts:
      - name: cert-secret
        mountPath: /app/certs/
        readOnly: true
  1. Service的LoadBalancer端口映射:把Service的端口指向容器的443端口:
apiVersion: v1
kind: Service
metadata:
  name: 你的服务名
spec:
  type: LoadBalancer
  ports:
    - port: 443
      targetPort: 443
      protocol: TCP
      name: https
  selector:
    app: 你的应用标签

第四步:测试验证

重新部署你的应用后,可以做这几步验证:

  1. kubectl exec进入Pod,运行npm run preview,看有没有报错(比如找不到证书文件的话会明确提示,这时候检查路径是否正确)
  2. 访问LoadBalancer的外部IP,应该能通过HTTPS正常打开你的站点了

备注:内容来源于stack exchange,提问作者elementmg

火山引擎 最新活动