Helm部署微服务
环境:harbor------》192.168.211.150
Helm ------》192.168.211.131
mysql ------》192.168.211.132
注意:容器可以出公网,不需要把数据库部署在K8S内部
# 一份比较简单的helm模板在百度网盘中,有需要自提取,后续一些新的功能会增加到网盘中。
百度网盘链接:https://pan.baidu.com/s/1eyr6M0X29QGl0fMkioUjxg?pwd=dAAf
提取码:dAAf
1、使用maven构建镜像
注意:这一步我省略了,因为开发在打包jar包时已经帮我完成构建了,如果不懂用maven打包建议百度。
2、创建镜像,上传镜像
[root@k8s-master1 xxl]# vim Dockerfile
# 这是项目作者写的Docker,拿过来用就可以了
FROM openjdk:8-jre-slim
MAINTAINER xuxueli
ENV PARAMS=""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ADD ./xxl-job-admin-2.4.0-SNAPSHOT.jar ./
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /xxl-job-admin-2.4.0-SNAPSHOT.jar $PARAMS"]
# 查找到修改的文件,建议先拷贝一份jar包到其他目录
[root@k8s-master1 test]# jar -tvf xxl-job-admin-2.4.0-SNAPSHOT.jar | grep application.properties
# 将目录解压到当前
[root@k8s-master1 test]# jar -xvf xxl-job-admin-2.4.0-SNAPSHOT.jar BOOT-INF/classes/application.properties
# 修改jar中数据库地址,更改下面三个地方 (application.properties是连接数据库的配置)
[root@k8s-master1 test]# vim BOOT-INF/classes/application.properties
spring.datasource.url=jdbc:mysql://192.168.211.132:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
spring.datasource.username=("数据库用户名")
spring.datasource.password=("数据库密码")
# 将修改的新文件替换到jar中
[root@k8s-master1 test]# jar -uvf xxl-job-admin-2.4.0-SNAPSHOT.jar BOOT-INF/classes/application.properties
adding: BOOT-INF/classes/application.properties(in = 2276) (out= 887)(deflated 61%)
# 进入数据库创建xxl_job数据库
create database xxl_job;
use xxl_job;
source /("存放sql文件的目录")/tables_xxl_job.sql;
# 能看到如下的表说明sql文件导入成功
mysql> show tables;
+--------------------+
| Tables_in_xxl_job |
+--------------------+
| xxl_job_group |
| xxl_job_info |
| xxl_job_lock |
| xxl_job_log |
| xxl_job_log_report |
| xxl_job_logglue |
| xxl_job_registry |
| xxl_job_user |
+--------------------+
8 rows in set (0.00 sec)
# 创建镜像
[root@k8s-master1 xxl]# docker build -t java-xxl:v1 .
[root@k8s-master1 xxl]# docker tag java-xxl:v1 仓库地址/项目/java-xxl:v1
[root@k8s-master1 xxl]# docker push 仓库地址/项目/java-xxl:v1
3、创建helm模板
注意:helm模板在上方的百度网盘链接中
[root@k8s-master1 ~]# tree chart_Microservices
chart_Microservices
├── Chart.yaml
├── templates
│ ├── _helpers.tpl
│ ├── NOTES.txt
│ └── template.yaml
└── values.yaml
1 directory, 5 files
注意:如果在添加Harbor作为chart仓库时一直报错x509的错误,需要加上ca-file证书文件。如果还是不行就用openssl重新生成证书!!!!!
# 将helm模板打包
[root@k8s-master1 ~]# helm package chart_Microservices/
# 要在harbor上启用Helm Charts功能,启动后在项目中就可以看到带有Helm Charts功能
[root@localhost harbor]# ./install.sh --with-chartmuseum
# 安装push插件
[root@k8s-master1 ~]# yum install git -y
[root@k8s-master1 ~]# helm repo add --username admin --password Harbor12345 myrepo https://192.168.211.150/chartrepo/library/ --ca-file /etc/docker/certs.d/192.168.211.150/ca.crt
[root@k8s-master1 ~]# helm cm-push chart_Microservices-0.1.0.tgz https://192.168.211.150/chartrepo/library/ --username admin --password Harbor12345 --ca-file /etc/docker/certs.d/192.168.211.150/ca.crt
[root@k8s-master1 ~]# helm repo update #上传完需要更新仓库,否则安装会报错
[root@k8s-master1 ~]# helm repo list #查看仓库
[root@k8s-master1 ~]# helm repo remove myrepo #删除仓库
# 修改helm模板并安装(加上--dry-run为测试,实施部署)
[root@k8s-master1 ~]# helm install xxl-job myrepo/chart_Microservices --version 0.1.0 --set image.repository=192.168.211.150/xxl/xxl-job --set image.tag=v2 --set ingress.enabled=true --set service.enabled=true --set service.port=8080 --set namespace=mc --set replicaCount=1 --set readinessProbe.tcpSocket.port=8080 --set livenessProbe.tcpSocket.port=8080 --set ingress.number=8080 --set ingress.host=www.dada.com
[root@k8s-master1 ~]# kubectl get pod,ingress,svc -n mc
NAME READY STATUS RESTARTS AGE
pod/xxl-job-ffd6f5875-zkbcr 1/1 Running 0 26m
NAME CLASS HOSTS ADDRESS PORTS AGE
ingress.networking.k8s.io/xxl-job nginx www.dada.com 192.168.211.131,192.168.211.132 80 26m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/xxl-job ClusterIP 10.0.0.163 <none> 8080/TCP 26m
访问xxl-job页面