前提

你已经有了一个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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐