研发测试云需求:大数据部署选择应用构建产生的jar包,部署执行时把jar包上传到用户申请的指定IP的服务器上去,这个上传的过程之前是需要用户手动上传jar包并挂载数据卷;

思路:因为构建的jar包是存储在minio 可利用 mc cp命令将minio的jar包拷贝至服务器指定位置。这些操作要在k8s初始化镜像initContainer去执行,所以现在要制作这种镜像

1.在本地服务器拷贝mc执行文件

  1. [root@node-seanwang-pro-cb0c3f home]# whereis mc
  2. 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制作镜像命令

  1. #不要落下最后的 .
  2. docker build -f dockfile -t centos-mc:v1 .

4.先进入到容器里面

  1. docker run -id --name=mymc centos-mc:v1
  2. docker exec -it mymc /bin/bash

5.查看mc 并配置公司的minio服务器

  1. [root@node-seanwang-pro-cb0c3f home]# mc config host ls
  2. gcs
  3. URL : https://storage.googleapis.com
  4. AccessKey : YOUR-ACCESS-KEY-HERE
  5. SecretKey : YOUR-SECRET-KEY-HERE
  6. API : S3v2
  7. Lookup : dns
  8. local
  9. URL : http://localhost:9000
  10. AccessKey :
  11. SecretKey :
  12. API :
  13. Lookup : auto
  14. play
  15. URL : https://play.min.io
  16. AccessKey : Q3AM3UQ867SPQQA43P2F
  17. SecretKey : zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG
  18. API : S3v4
  19. Lookup : auto
  20. s3
  21. URL : https://s3.amazonaws.com
  22. AccessKey : YOUR-ACCESS-KEY-HERE
  23. SecretKey : YOUR-SECRET-KEY-HERE
  24. API : S3v4
  25. Lookup : dns
  26. #配置公司的minio服务器地址
  27. [root@node-seanwang-pro-cb0c3f home]# mc config host add myminio http://172.19.xx.xx:9000 root HaiYi666
  28. #再次执行mc config host ls可查看刚刚配置的myminio服务地址
  29. #执行命令查看myminio内容 有结果就成功了
  30. [root@node-seanwang-pro-cb0c3f home]# mc ls myminio
  31. [2022-03-24 02:59:53 UTC] 0B 1--shelf/
  32. [2021-12-30 09:41:19 UTC] 0B 1-alltest1218/
  33. [2021-03-02 02:47:32 UTC] 0B 1-ceshi-1221/
  34. [2021-12-28 06:11:32 UTC] 0B 1-ceshixiangmu/
  35. [2021-12-28 02:55:49 UTC] 0B 1-dev-use-dev/
  36. [2022-03-14 06:28:21 UTC] 0B 1-devzone-0926/
  37. [2021-07-16 00:38:45 UTC] 0B 1-electricity-project/
  38. [2021-12-28 02:53:54 UTC] 0B 1-hjyfbcs/
  39. [2020-11-17 03:12:52 UTC] 0B 1-jrwtest/
  40. [2022-04-08 02:28:02 UTC] 0B 1-kf10-ddf/
  41. [2022-01-17 05:35:38 UTC] 0B 1-kf10-ddt1/
  42. [2021-12-28 06:00:46 UTC] 0B 1-kf10-feature/
  43. [2022-02-18 07:06:25 UTC] 0B 1-kf10-release/
  44. [2022-03-03 02:59:00 UTC] 0B 1-kf10-test1228/
  45. [2022-02-17 08:23:57 UTC] 0B 1-kf10-testzt2/
  46. [2020-08-27 09:21:22 UTC] 0B 1-mytestbucket/
  47. [2022-01-26 00:41:54 UTC] 0B 1-port-change/
  48. [2022-04-08 07:21:24 UTC] 0B 1-seanwang-pro/
  49. [2022-03-07 07:32:19 UTC] 0B 1-seanwang-project01/
  50. [2021-03-08 01:53:38 UTC] 0B 1-seanwang2-1221/
  51. [2021-01-13 01:34:56 UTC] 0B 1-server-apply-test/

6.把能够使用mc命令访问公司minio的容器打成镜像

  1. docker commit 9d1bb925c70b harbor.hy.cn/library/centos-mc:v1

7.登录公司harbor 并推送镜像

  1. docker login harbor.hy.cn
  2. #输入用户名密码
  3. docker push harbor.hy.cn/library/centos-mc:v1

在harbor上就能看到了哦

image.png

8.然后在部署构建yaml时 添加一个mc的initContainer

  1. #command的内容需要用户选择构建的那个jar包
  2. #大概结果是这个样子,kubectl apply部署镜像时会先创建initContainers里的镜像(其中的command也会执行),这个时候mc cp 1-seanwang-pro/artifacts/app_build/sean-big2-build/2/ /root/bigdata拉取jar包到用户服务器的/root/bigdata下,这样就不用手动上传jar包了。
  3. initContainers:
  4. - name: image-mc
  5. image: harbor.hy.cn/library/centos-mc:v1
  6. imagePullPolicy: Always
  7. command:
  8. - mc
  9. - cp
  10. - 1-seanwang-pro/artifacts/app_build/sean-big2-build/2/
  11. - /root/bigdata
  12. securityContext:
  13. privileged: true
  14. volumeMounts:
  15. - name: docker-socket
  16. mountPath: /var/run/docker.sock