kompose 是一个不错的快速转换docker-compose 文件为k8s 部署yaml文件的工具,使用次工具我们
可以将简单的docker-compose文件,转换为复杂的yaml文件,对于使用者来说可以减少yaml的错误,
同时可以实现docker-compose 向k8s 的快速迁移

简单docker-compose 文件

  1. version: '3'
  2. services:
  3. gogs-service:
  4. image: gogs/gogs
  5. restart: always
  6. ports:
  7. - "10022:22"
  8. - "10080:3000"
  9. volumes:
  10. - ./data/gogs:/data
  11. depends_on:
  12. - mysql-gogs
  13. mysql-gogs:
  14. image: mysql:5.7.16
  15. restart: 'always'
  16. volumes:
  17. - ./gogs/mysql:/var/lib/mysql
  18. ports:
  19. - 3308:3306
  20. command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
  21. environment:
  22. MYSQL_ROOT_PASSWORD: dalongrong
  23. MYSQL_DATABASE: gogs
  24. MYSQL_USER: gogs
  25. MYSQL_PASSWORD: dalongrong
  26. TZ: Asia/Shanghai

说明,这是一个gogs git 工具的安装,docker-compose 文件不是很复杂

安装kompose

  1. brew install kompose

生成k8s yaml 部署文件

  1. kompose convert

效果如下,文件很简单,包含了deploy 以及pvc 的定义,ingress 是我自己添加的

生成的deploy(gogs)

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. annotations:
  5. kompose.cmd: kompose convert
  6. kompose.version: 1.17.0 ()
  7. creationTimestamp: null
  8. labels:
  9. io.kompose.service: gogs-service
  10. name: gogs-service
  11. spec:
  12. replicas: 1
  13. strategy:
  14. type: Recreate
  15. template:
  16. metadata:
  17. creationTimestamp: null
  18. labels:
  19. io.kompose.service: gogs-service
  20. spec:
  21. containers:
  22. - image: gogs/gogs
  23. name: gogs-service
  24. ports:
  25. - containerPort: 22
  26. - containerPort: 3000
  27. resources: {}
  28. volumeMounts:
  29. - mountPath: /data
  30. name: gogs-service-claim0
  31. restartPolicy: Always
  32. volumes:
  33. - name: gogs-service-claim0
  34. persistentVolumeClaim:
  35. claimName: gogs-service-claim0
  36. status: {}

service

  1. apiVersion: v1
  2. kind: Service
  3. metadata:
  4. annotations:
  5. kompose.cmd: kompose convert
  6. kompose.version: 1.17.0 ()
  7. creationTimestamp: null
  8. labels:
  9. io.kompose.service: gogs-service
  10. name: gogs-service
  11. spec:
  12. ports:
  13. - name: "10022"
  14. port: 10022
  15. targetPort: 22
  16. - name: "10080"
  17. port: 10080
  18. targetPort: 3000
  19. selector:
  20. io.kompose.service: gogs-service
  21. status:
  22. loadBalancer: {}

说明,mysql 运行需要修改下,使用init container 删除文件夹

  1. apiVersion: extensions/v1beta1
  2. kind: Deployment
  3. metadata:
  4. annotations:
  5. kompose.cmd: kompose convert
  6. kompose.version: 1.17.0 ()
  7. creationTimestamp: null
  8. labels:
  9. io.kompose.service: mysql-gogs
  10. name: mysql-gogs
  11. spec:
  12. replicas: 1
  13. strategy:
  14. type: Recreate
  15. template:
  16. metadata:
  17. creationTimestamp: null
  18. labels:
  19. io.kompose.service: mysql-gogs
  20. spec:
  21. initContainers:
  22. - name: "remove-lost-found"
  23. image: "busybox:1.25.0"
  24. command: ["rm", "-fr", "/var/lib/mysql/lost+found"]
  25. volumeMounts:
  26. - name: mysql-gogs-claim0
  27. mountPath: /var/lib/mysql
  28. containers:
  29. - args:
  30. - --character-set-server=utf8mb4
  31. - --collation-server=utf8mb4_unicode_ci
  32. env:
  33. - name: MYSQL_DATABASE
  34. value: gogs
  35. - name: MYSQL_PASSWORD
  36. value: dalongrong
  37. - name: MYSQL_ROOT_PASSWORD
  38. value: dalongrong
  39. - name: MYSQL_USER
  40. value: gogs
  41. - name: TZ
  42. value: Asia/Shanghai
  43. image: mysql:5.7.16
  44. name: mysql-gogs
  45. ports:
  46. - containerPort: 3306
  47. resources: {}
  48. volumeMounts:
  49. - mountPath: /var/lib/mysql
  50. name: mysql-gogs-claim0
  51. restartPolicy: Always
  52. volumes:
  53. - name: mysql-gogs-claim0
  54. persistentVolumeClaim:
  55. claimName: mysql-gogs-claim0
  56. status: {}

说明

使用起来还是比较方便的,可以减少好多代码,目前来说,k8s api 的支持感觉不是很好,而且还有一些bug,但是不影响
使用,结合这个工具,我们可以快速的向k8s应用迁移

参考架构图

参考资料

https://github.com/kubernetes/kompose/

 
 
 
 

使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件的更多相关文章

  1. hbuilder中的wap2app (将M站快速转换成App的开发框架)使用过程有关原生标题的关闭

    首先,我最近在做有关将M站快速转换成App的项目,在网上看了很多,最终结合同学的推荐,我选择了hbuilder,有关于hbuilder的下载还有具体使用方法,官网都有详细的说明,我就不介绍了,我重点介 ...

  2. c#中文件与二进制流文件的转换

    将文件转换成二进制方法: /// <summary>    /// 将文件转换成二进制    /// </summary>    /// <param name=&quo ...

  3. discuz X2.0教程]教你快速了解Discuz!程序文件功能,修改文件从此不用再求人

    x3.x数据字典 http://faq.comsenz.com/library/database/x3/x3_index.htm 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这 ...

  4. 慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中

    1. 搜索功能和Everything一样快和强大 具有 Everything 搜索快.搜索功能强等优点, 解决了不能方便选择搜索哪个文件夹, 解决了不能同一个画面进行预览等问题 2.文件直接显示到文件 ...

  5. 快速找到跟踪其他session产生的trc文件

    掌握该技术最根本的是需要搞清楚session跟踪文件存放的路径和生成跟踪文件的命名规则,不然,在已经存在成全上万trc文件的生产环境中,要想快速正确的找到跟踪其他SESSION产生的trc文件就如大海 ...

  6. C#利用 string.Join 泛型集合快速转换拼接字符串

    C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...

  7. 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同

    在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...

  8. Android网络图片转换成bitmap保存到本地指定文件夹

    下列代码,请求网络图片转换为bitmap,然后保存到指定文件夹,微信,QQ分享,要求缩略图不大于32kb 压缩图片代码,使用了Glide来进行图片压缩处理 Glide.get(ShopDetailsA ...

  9. dvi文件和将dvi文件转换成pdf格式

    dvi文件和将dvi文件转换成pdf格式 Latex只能把tex文件编译成dvi文件, 在cmd 中: 使用xdvi查看dvi格式的文件 若用texstudio编辑tex文件,则可直接将已编译成功的. ...

随机推荐

  1. 2.10 C++利用构造函数限制对象的创建

    参考: http://www.weixueyuan.net/view/6342.html 总结: 限制对象的创建.限制创建对象时能够按照我们需要的那样创建,而不能随意的创建对象. 类中显示地声明了任意 ...

  2. bootstrap动态生成层级ul-li 新闻预览 常用方法

    <div class="row" id="add-withinfosortId-row" style="display: none"& ...

  3. windows剪贴板

    0x01  Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制.Windows系统支持剪贴板IP ...

  4. Centos7部署open-falcon 0.2

    参考: https://www.cnblogs.com/straycats/p/7199209.html http://book.open-falcon.org/zh_0_2/quick_instal ...

  5. capjoint中的tel3核心代码teleseis3.f90

    为了加入更多层的模型 将 teleseis3.f90 /home/capjoint-master/src/tel3/teleseis3.90的地层模型读取部分改为: program test PARA ...

  6. ASCII码,utf-8

    ASCII:0-127表示英文,128-255每个国家编码不一样,汉字要使用两个字节,为了和0-127区别,首位都要是1,uriEncode就是把字符转换成ASCII码. utf-8,一个字节的,和a ...

  7. springMVC学习五(转发和乱码)

    摘录http://www.cnblogs.com/xdp-gacl/p/3798347.html http://www.cnblogs.com/xdp-gacl/p/3798347.html 四个很重 ...

  8. webview定位 & native和webview切换

    前言:现在的app大都是混合式的native+webview,对于native可以直接用uiautomator定位然后操作元素,但是web就定位不到了 一.先看看使用native定位的 二.定位web ...

  9. float浮动,定位

    1 浮动定位    1.普通流定位        普通流,由称为文档流        块级元素:从上到下一个一个的排列        行内元素:一行内从左到右的排列    2.浮动定位         ...

  10. C#类中字段封装为属性

    本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...