k8s发布vue、springboot项目
前提你已经有了一个k8s集群,如果没有,可以参考CentOS7搭建k8s集群预期效果前端、后端和数据库分别通过三个Service表示,相互之间通过Service的CLUSTER-NAME:port来相互访问,而不是通过CLUSTER-IP:port来相互访问,因为每次重新部署Service,CLUSTER-IP都会变。思路前端:nginx + vue创建镜像后端:Java + springboot
·
前提
你已经有了一个k8s集群,如果没有,可以参考CentOS7搭建k8s集群
预期效果
前端、后端和数据库分别通过三个Service表示,相互之间通过Service的CLUSTER-NAME:port来相互访问,而不是通过CLUSTER-IP:port来相互访问,因为每次重新部署Service,CLUSTER-IP都会变。
思路
前端:nginx + vue创建镜像
后端:Java + springboot项目创建镜像
数据库:MySQL镜像
难点:前端怎么访问后端?后端怎么访问数据库?
nginx肯定要用到代理,可以在upstream标签中的server设置后端Service的CLUSTER-NAME:port。后端访问数据库,把数据库的URL的host改成CLUSTER-NAME.CLUSTER-NAMESPACE就可以了。
这里,ws-backendsvc是后端服务,ws-fontendsvc是前端服务。在nginx中这样配置
upstream backend {
server ws-backendsvc:9090;#后端服务名称 + Service中的port(不是nodePort,targetPort之类的的)
}
server {
listen 80;
server_name localhost;
location /api/ {
rewrite /api/(.*) /$1 break;
proxy_pass http://backend;#不能在这直接写http://ws-backendsvc:9090,会报错
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
访问数据库的时候类似,把数据库当作一个Service,有他的ServiceName和ServicePort
更多推荐
已为社区贡献6条内容
所有评论(0)