使用kompose 快速转换dokcer-compose 文件为k8s deploy 文件
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 文件的更多相关文章
- hbuilder中的wap2app (将M站快速转换成App的开发框架)使用过程有关原生标题的关闭
首先,我最近在做有关将M站快速转换成App的项目,在网上看了很多,最终结合同学的推荐,我选择了hbuilder,有关于hbuilder的下载还有具体使用方法,官网都有详细的说明,我就不介绍了,我重点介 ...
- c#中文件与二进制流文件的转换
将文件转换成二进制方法: /// <summary> /// 将文件转换成二进制 /// </summary> /// <param name=&quo ...
- discuz X2.0教程]教你快速了解Discuz!程序文件功能,修改文件从此不用再求人
x3.x数据字典 http://faq.comsenz.com/library/database/x3/x3_index.htm 先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这 ...
- 慧自文档:代替 Everything 来快速查找文件的,实现文件显示在文件夹的层次结构中
1. 搜索功能和Everything一样快和强大 具有 Everything 搜索快.搜索功能强等优点, 解决了不能方便选择搜索哪个文件夹, 解决了不能同一个画面进行预览等问题 2.文件直接显示到文件 ...
- 快速找到跟踪其他session产生的trc文件
掌握该技术最根本的是需要搞清楚session跟踪文件存放的路径和生成跟踪文件的命名规则,不然,在已经存在成全上万trc文件的生产环境中,要想快速正确的找到跟踪其他SESSION产生的trc文件就如大海 ...
- C#利用 string.Join 泛型集合快速转换拼接字符串
C#利用 string.Join 泛型集合快速转换拼接字符串 List<int> superior_list = new List<int>(); superior_list. ...
- 【转载】C#代码开发过程中如何快速比较两个文件夹中的文件的异同
在日常的使用电脑的过程中,有时候我们需要比较两个文件夹,查找出两个文件夹中不同的文件以及文件中不同的内容信息,进行内容的校对以及合并等操作.其实使用Beyond Compare软件即可轻松比较,Bey ...
- Android网络图片转换成bitmap保存到本地指定文件夹
下列代码,请求网络图片转换为bitmap,然后保存到指定文件夹,微信,QQ分享,要求缩略图不大于32kb 压缩图片代码,使用了Glide来进行图片压缩处理 Glide.get(ShopDetailsA ...
- dvi文件和将dvi文件转换成pdf格式
dvi文件和将dvi文件转换成pdf格式 Latex只能把tex文件编译成dvi文件, 在cmd 中: 使用xdvi查看dvi格式的文件 若用texstudio编辑tex文件,则可直接将已编译成功的. ...
随机推荐
- css文件 如何使背景图片大小适应div的大小
对背景图片设置属性:background-size:cover;可以实现背景图片适应div的大小. background-size有3个属性: auto:当使用该属性的时候,背景图片将保持100% 的 ...
- netcore 2.0 部署 到iis
.net Core2.0应用程序发布window服务器报错容易错过的配置. 1.应用程序发布. 2.IIS上新建网站. 3.应用程序池选择无托管代码. 4.服务器上安装DotNetCore.1.0.2 ...
- HashMap和Hashtable有什么区别?
HashMap和Hashtable都是实现Map接口的,但是: 1.HashMap允许键和值都是null的,而Hashtable不允许键和值为null 2.Hashtable是同步的,而HashMap ...
- form 表单模板
<div class="modal-dialog modal-lg"> //大布局modal-lg <div class="modal-content& ...
- 对弈的Python学习笔记
#主要序列类型 str list tuple #列表 list ls=[1,2,3,4]#末尾追加ls.append(5) #添加多个,扩展ls.extend([5,6,7]) #在某个位置插入一个值 ...
- L264 how cats are psychopaths
When Becky Evans started studying cat-human relationships, she kept hearing, over and over again, ab ...
- day 32 子进程的开启 及其用法
开启两种子进程的两种方式# # # 1 传统方式# from multiprocessing import Process# import time# def task(name):# print ( ...
- Java Sublime 环境配置
1.编辑JavaC.sublime-build文件 用winrar 打开 Sublime的安装目录下的Packages文件夹下的Java.sublime-package文件, 双击JavaC.subl ...
- 解决IDEA16闪退的问题
问题描述:在编辑等使用过程中,IDEA有时会突然闪退,一脸懵逼...... 原因: 1.内存分配不够 修改home/bin/目录下面的配置文件: idea.exe.vmoptions idea64.e ...
- python的time模块
#encoding=utf-8 import time # 返回时间戳 print time.time() # 延迟运行单位为s,如下为延迟3s time.sleep(3) # 转换时间戳为时间元组( ...