Kompose帮助开发人员将Docker Compose文件移动到Kubernetes

编者注:今天的帖子是Red Hat的软件工程师Charlie Drage提供的有关Kubernetes项目Kompose的更新。

我很高兴地宣布 Kompose,这是一种用于开发人员将Docker Compose应用程序过渡到Kubernetes的转换工具,已经从 Kubernetes孵化器 成为该项目的正式组成部分。

自2016年6月27日我们的首次提交以来,Kompose已从851个提交中获得了13个发布,自项目启动以来已经吸引了21个贡献者。我们的工作始于Skippbox(现已成为 比那米),并通过Google和Red Hat的贡献而增长。

Kubernetes孵化器使贡献者可以在公司之间相互了解,并在Kubernetes贡献者和维护者的指导下进行有效的协作。我们的孵化导致开发和发布了针对Kubernetes生态系统的新的有用工具。

我们已经从最初的Docker Compose文件创建了一个可靠的,可扩展的Kubernetes环境。我们努力将尽可能多的密钥转换为其等效的Kubernetes。运行单个命令可以使您启动并在Kubernetes上运行:kompose。

没有社区的反馈和贡献,我们不可能做到!

如果您还没有尝试过 Kompose在GitHub上 看看这个!

Kubernetes留言簿

Kubernetes的首选示例是著名的 留言簿,我们以此为基础进行转换。

这是官方的例子 kompose.io 网站,从简单的Docker Compose开始 文件)。

首先,我们将检索文件:

$ wget //raw.githubusercontent.com/kubernetes/kompose/master/examples/docker-compose.yaml

您可以通过首先部署到Docker Compose进行测试:

$ docker-compose up -d

Creating network "examples\_default" with the default driver

Creating examples\_redis-slave\_1

Creating examples\_frontend\_1

Creating examples\_redis-master\_1

当您准备部署到Kubernetes时:

$ kompose up


We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application.


If you need different kind of resources, use the kompose convert and kubectl create -f commands instead.


INFO Successfully created Service: redis          

INFO Successfully created Service: web            

INFO Successfully created Deployment: redis       

INFO Successfully created Deployment: web         


Your application has been deployed to Kubernetes. You can run kubectl get deployment,svc,pods,pvc for details

查看 其他例子 Kompose可以做什么。

转换为备用Kubernetes控制器

Kompose还可以使用标志转换为特定的Kubernetes控制器:

$ kompose convert --help  

Usage:

  kompose convert [file] [flags]


Kubernetes Flags:

      --daemon-set               Generate a Kubernetes daemonset object

  -d, --deployment               Generate a Kubernetes deployment object

  -c, --chart                    Create a Helm chart for converted objects

      --replication-controller   Generate a Kubernetes replication controller object

…

例如,让我们转换 留言簿 DaemonSet的示例:

$ kompose convert --daemon-set

INFO Kubernetes 文件 "frontend-service.yaml" created

INFO Kubernetes 文件 "redis-master-service.yaml" created

INFO Kubernetes 文件 "redis-slave-service.yaml" created

INFO Kubernetes 文件 "frontend-daemonset.yaml" created

INFO Kubernetes 文件 "redis-master-daemonset.yaml" created

INFO Kubernetes 文件 "redis-slave-daemonset.yaml" created

Kompose 1.0的主要功能

随着我们的毕业,Kompose 1.0.0的发布将带来以下新变化:

  • Docker Compose版本3:Kompose现在支持Docker Compose版本3。诸如“ deploy”之类的新密钥现在转换为它们的Kubernetes等效项。
  • Docker Push and Build Support: When you supply a ‘build’ key within your docker-compose.yaml 文件, Kompose will automatically build and push the image to the respective Docker repository for Kubernetes to consume.
  • 新密钥:除了对版本3的支持之外,还支持pid和deploy等新密钥。有关Kompose支持的全部详细信息,请查看我们的 转换文件.
  • 错误修复:在每个版本中,我们修复了转换时与边缘情况相关的所有错误。此版本修复了与转换目标名称中带有“ ./”的卷有关的问题。

怎么了?

随着我们继续开发,我们将努力为所有将来的和当前的Docker Compose版本转换尽可能多的Docker Compose密钥,并将每个密钥转换成与其Kubernetes等效的密钥。将来的所有发行版都将向后兼容。

-Red Hat软件工程师Charlie Drage