研发测试云需求:大数据部署选择应用构建产生的jar包,部署执行时把jar包上传到用户申请的指定IP的服务器上去,这个上传的过程之前是需要用户手动上传jar包并挂载数据卷;
思路:因为构建的jar包是存储在minio 可利用
mc cp
命令将minio的jar包拷贝至服务器指定位置。这些操作要在k8s初始化镜像initContainer去执行,所以现在要制作这种镜像
1.在本地服务器拷贝mc执行文件
[root@node-seanwang-pro-cb0c3f home]# whereis mc
mc: /usr/bin/mc
2.新建dockfile文件,并填写内容
FROM harbor.hy.cn/library/centos:v1 ADD mc /usr/bin/ RUN chmod +x /usr/bin/mc
3.把dockfile和mc文件放在同一目录下之后 执行docker制作镜像命令
#不要落下最后的 .
docker build -f dockfile -t centos-mc:v1 .
4.先进入到容器里面
docker run -id --name=mymc centos-mc:v1
docker exec -it mymc /bin/bash
5.查看mc 并配置公司的minio服务器
[root@node-seanwang-pro-cb0c3f home]# mc config host ls
gcs
URL : https://storage.googleapis.com
AccessKey : YOUR-ACCESS-KEY-HERE
SecretKey : YOUR-SECRET-KEY-HERE
API : S3v2
Lookup : dns
local
URL : http://localhost:9000
AccessKey :
SecretKey :
API :
Lookup : auto
play
URL : https://play.min.io
AccessKey : Q3AM3UQ867SPQQA43P2F
SecretKey : zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
API : S3v4
Lookup : auto
s3
URL : https://s3.amazonaws.com
AccessKey : YOUR-ACCESS-KEY-HERE
SecretKey : YOUR-SECRET-KEY-HERE
API : S3v4
Lookup : dns
#配置公司的minio服务器地址
[root@node-seanwang-pro-cb0c3f home]# mc config host add myminio http://172.19.xx.xx:9000 root HaiYi666
#再次执行mc config host ls可查看刚刚配置的myminio服务地址
#执行命令查看myminio内容 有结果就成功了
[root@node-seanwang-pro-cb0c3f home]# mc ls myminio
[2022-03-24 02:59:53 UTC] 0B 1--shelf/
[2021-12-30 09:41:19 UTC] 0B 1-alltest1218/
[2021-03-02 02:47:32 UTC] 0B 1-ceshi-1221/
[2021-12-28 06:11:32 UTC] 0B 1-ceshixiangmu/
[2021-12-28 02:55:49 UTC] 0B 1-dev-use-dev/
[2022-03-14 06:28:21 UTC] 0B 1-devzone-0926/
[2021-07-16 00:38:45 UTC] 0B 1-electricity-project/
[2021-12-28 02:53:54 UTC] 0B 1-hjyfbcs/
[2020-11-17 03:12:52 UTC] 0B 1-jrwtest/
[2022-04-08 02:28:02 UTC] 0B 1-kf10-ddf/
[2022-01-17 05:35:38 UTC] 0B 1-kf10-ddt1/
[2021-12-28 06:00:46 UTC] 0B 1-kf10-feature/
[2022-02-18 07:06:25 UTC] 0B 1-kf10-release/
[2022-03-03 02:59:00 UTC] 0B 1-kf10-test1228/
[2022-02-17 08:23:57 UTC] 0B 1-kf10-testzt2/
[2020-08-27 09:21:22 UTC] 0B 1-mytestbucket/
[2022-01-26 00:41:54 UTC] 0B 1-port-change/
[2022-04-08 07:21:24 UTC] 0B 1-seanwang-pro/
[2022-03-07 07:32:19 UTC] 0B 1-seanwang-project01/
[2021-03-08 01:53:38 UTC] 0B 1-seanwang2-1221/
[2021-01-13 01:34:56 UTC] 0B 1-server-apply-test/
6.把能够使用mc命令访问公司minio的容器打成镜像
docker commit 9d1bb925c70b harbor.hy.cn/library/centos-mc:v1
7.登录公司harbor 并推送镜像
docker login harbor.hy.cn
#输入用户名密码
docker push harbor.hy.cn/library/centos-mc:v1
8.然后在部署构建yaml时 添加一个mc的initContainer
#command的内容需要用户选择构建的那个jar包
#大概结果是这个样子,kubectl apply部署镜像时会先创建initContainers里的镜像(其中的command也会执行),这个时候mc cp 1-seanwang-pro/artifacts/app_build/sean-big2-build/2/ /root/bigdata拉取jar包到用户服务器的/root/bigdata下,这样就不用手动上传jar包了。
initContainers:
- name: image-mc
image: harbor.hy.cn/library/centos-mc:v1
imagePullPolicy: Always
command:
- mc
- cp
- 1-seanwang-pro/artifacts/app_build/sean-big2-build/2/
- /root/bigdata
securityContext:
privileged: true
volumeMounts:
- name: docker-socket
mountPath: /var/run/docker.sock