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

简单docker-compose 文件

version: '3'
services:
gogs-service:
image: gogs/gogs
restart: always
ports:
- "10022:22"
- "10080:3000"
volumes:
- ./data/gogs:/data
depends_on:
- mysql-gogs
mysql-gogs:
image: mysql:5.7.16
restart: 'always'
volumes:
- ./gogs/mysql:/var/lib/mysql
ports:
- 3308:3306
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: dalongrong
MYSQL_DATABASE: gogs
MYSQL_USER: gogs
MYSQL_PASSWORD: dalongrong
TZ: Asia/Shanghai

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

安装kompose

brew install kompose

生成k8s yaml 部署文件

kompose convert

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

生成的deploy(gogs)

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.17.0 ()
creationTimestamp: null
labels:
io.kompose.service: gogs-service
name: gogs-service
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: gogs-service
spec:
containers:
- image: gogs/gogs
name: gogs-service
ports:
- containerPort: 22
- containerPort: 3000
resources: {}
volumeMounts:
- mountPath: /data
name: gogs-service-claim0
restartPolicy: Always
volumes:
- name: gogs-service-claim0
persistentVolumeClaim:
claimName: gogs-service-claim0
status: {}

service

apiVersion: v1
kind: Service
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.17.0 ()
creationTimestamp: null
labels:
io.kompose.service: gogs-service
name: gogs-service
spec:
ports:
- name: "10022"
port: 10022
targetPort: 22
- name: "10080"
port: 10080
targetPort: 3000
selector:
io.kompose.service: gogs-service
status:
loadBalancer: {}

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

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
annotations:
kompose.cmd: kompose convert
kompose.version: 1.17.0 ()
creationTimestamp: null
labels:
io.kompose.service: mysql-gogs
name: mysql-gogs
spec:
replicas: 1
strategy:
type: Recreate
template:
metadata:
creationTimestamp: null
labels:
io.kompose.service: mysql-gogs
spec:
initContainers:
- name: "remove-lost-found"
image: "busybox:1.25.0"
command: ["rm", "-fr", "/var/lib/mysql/lost+found"]
volumeMounts:
- name: mysql-gogs-claim0
mountPath: /var/lib/mysql
containers:
- args:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
env:
- name: MYSQL_DATABASE
value: gogs
- name: MYSQL_PASSWORD
value: dalongrong
- name: MYSQL_ROOT_PASSWORD
value: dalongrong
- name: MYSQL_USER
value: gogs
- name: TZ
value: Asia/Shanghai
image: mysql:5.7.16
name: mysql-gogs
ports:
- containerPort: 3306
resources: {}
volumeMounts:
- mountPath: /var/lib/mysql
name: mysql-gogs-claim0
restartPolicy: Always
volumes:
- name: mysql-gogs-claim0
persistentVolumeClaim:
claimName: mysql-gogs-claim0
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. 《Python》网络编程之客户端/服务端框架、套接字(socket)初使用

    一.软件开发的机构 我们了解的涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:QQ.微信.网盘等这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问 ...

  2. 总结小bug

    1.下拉刷新问题 //不要用scroll-view 他会阻止刷新 //改用view <template name="movieGridTemplate"> <!- ...

  3. 深入理解java虚拟机---对象的访问定位(十)

    引用其他人的文章: https://www.cnblogs.com/YYfish/p/6722258.html 那是怎么访问对象呢? java 程序是通过栈上的reference数据来操作堆上的具体对 ...

  4. Java与C++简单对比

    Java语言让编程者无法找到指针来直接访问内存,并且增添了自动的内存管理功能,从而有效的组织了C/C++语言中指针操作失误,如滥用指针所造成的系统崩溃,Java的指针在虚拟机内部使用,这保证了Java ...

  5. powerdesigner导出sql时报错 Generation aborted due to errors detected during the verification of the model.

    powerdesigner导出sql时报错 Generation aborted due to errors detected during the verification of the model ...

  6. C#正则表达式类Match和Group类的理解

    正则表达式可以看做一种有特定功能的小型编程语言,在一段文本中定位子字符串.利用正则表达式可以快速地分析大量的文本以找到特定的字符模式:提取.编辑.替换或删除文本子字符串:或将提取的字符串添加到集合.正 ...

  7. Python 默认值字典

    from collections import defaultdict # 默认值字典 dd = defaultdict(lambda: "胡辣汤") # callable 可调用 ...

  8. Python 实例方法

    class Computer: # 实例方法 def play(self): print("电脑可以扫雷") # 在定义实例方法的时候. 必须给出一个参数 self # 形参的第一 ...

  9. 1--Jmeter4.0连接Oracle数据库

    一.Jmeter要连接oracle数据库,就必须复制JDBC驱动jar包文件ojdbc5.jar或者ojdbc6.jar到Jmeter的lib目录下 路径:oracle安装目录\jdbc\lib 二. ...

  10. java多线程和Calendar(日历)常用API

    一.进程与线程 进程是一个可执行的程序一次运行的过程 线程是程序中的一个执行流 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个主线程 二.Calendar import java.u ...