使用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文件,则可直接将已编译成功的. ...
随机推荐
- 2.10 C++利用构造函数限制对象的创建
参考: http://www.weixueyuan.net/view/6342.html 总结: 限制对象的创建.限制创建对象时能够按照我们需要的那样创建,而不能随意的创建对象. 类中显示地声明了任意 ...
- bootstrap动态生成层级ul-li 新闻预览 常用方法
<div class="row" id="add-withinfosortId-row" style="display: none"& ...
- windows剪贴板
0x01 Windows剪贴板 Windows剪贴板是一种比较简单同时也是开销比较小的IPC(InterProcess Communication,进程间通讯)机制.Windows系统支持剪贴板IP ...
- Centos7部署open-falcon 0.2
参考: https://www.cnblogs.com/straycats/p/7199209.html http://book.open-falcon.org/zh_0_2/quick_instal ...
- capjoint中的tel3核心代码teleseis3.f90
为了加入更多层的模型 将 teleseis3.f90 /home/capjoint-master/src/tel3/teleseis3.90的地层模型读取部分改为: program test PARA ...
- ASCII码,utf-8
ASCII:0-127表示英文,128-255每个国家编码不一样,汉字要使用两个字节,为了和0-127区别,首位都要是1,uriEncode就是把字符转换成ASCII码. utf-8,一个字节的,和a ...
- springMVC学习五(转发和乱码)
摘录http://www.cnblogs.com/xdp-gacl/p/3798347.html http://www.cnblogs.com/xdp-gacl/p/3798347.html 四个很重 ...
- webview定位 & native和webview切换
前言:现在的app大都是混合式的native+webview,对于native可以直接用uiautomator定位然后操作元素,但是web就定位不到了 一.先看看使用native定位的 二.定位web ...
- float浮动,定位
1 浮动定位 1.普通流定位 普通流,由称为文档流 块级元素:从上到下一个一个的排列 行内元素:一行内从左到右的排列 2.浮动定位 ...
- C#类中字段封装为属性
本文描述内容转载 https://zhidao.baidu.com/question/1174413218458798139.html 感谢 冥冥有你PD 的解答!!! 问题思索1 类成员包括变量和方 ...