使用k8s部署项目的流程
容器交付流程

k8s部署项目的流程:

案例:交付一个java应用程序
项目地址:https://github.com/lizhenliang/tomcat-java-demo.git
1. 制作镜像
1.1 编写dockerfile
使用dockerfile的多阶段构建
1.2 构建镜像到本地
测试镜像:
1.3 创建harbor项目



1.4 登录harbor
注意,如果使用HTTP访问harbor,需要将harbor加入到docker的http仓库白名单中
1.5 推送镜像到harbor
在habor界面可以看到镜像推送的命令

image-20220206162035724 给镜像打tag,并推送到harbor
查看harbor项目

image-20220206162249579
1.6 配置harbor凭据到k8s Secret中
将harbor的登录凭据保存到k8s Secret中,以供k8s服务拉取镜像使用:
可以通过如下方式在拉取镜像时使用:
使用kubectl get secrets可以查看Secret是否被正常创建:
2. 使用控制器部署镜像
2.1 部署项目依赖的Mysql数据库
注意,不建议在k8s中部署数据库:
Mysql 属于重量级应用(负载高、吃资源、部署复杂)
Mysql部署难度大,主要针对集群方式,每个集群的角色不同,需要使用StatefulSet
Mysql是比较稳定的服务,极少会更新,享受不到k8s的特性
对服务性能会有一定的衰减,但是Mysql对性能要求很高
可以在k8s中部署单节点,可以享受k8s的快速部署
创建如下mysql deployment资源清单文件 mysql.yml(mysql5.7版本,不支持arm64):
执行部署并查看部署结果:
测试mysql是否正常连接(使用mysql-client镜像):
2.2 导入项目sql文件
准备sql文件:https://github.com/lizhenliang/tomcat-java-demo/blob/master/db/tables_ly_tomcat.sql
将该sql文件下载并拷贝到mysql-client中:
在mysql-client中使用mysql命令导入到数据库中:
2.3 创建ConfigMap保存项目配置文件
创建一个ConfigMap,它拥有一个 application.yml键,用于对应spring-boot项目的根配置,其内容拷贝自 https://github.com/lizhenliang/tomcat-java-demo/blob/master/src/main/resources/application.yml :
2.4 创建deployment
一般必须配置的几个属性:
环境变量
资源配额 (重要)
健康检查
卷挂载点
3. 对外暴露应用
3.1 配置Service
3.2 配置Ingress
3.3 增加公网负载均衡

最后更新于
这有帮助吗?