本文发表时间已超过一年。较旧的文章可能包含过时的内容。请检查页面中的信息自发布以来是否已不正确。
Kompose 帮助开发人员将 Docker Compose 文件移动到 Kubernetes
我很高兴地宣布Kompose,一个用于开发人员将Docker Compose应用程序迁移到Kubernetes的转换工具,已经从Kubernetes孵化器毕业,成为该项目的正式一部分。
自从2016年6月27日我们的第一次提交以来,Kompose已经完成了13次发布,超过851次提交,自项目开始以来获得了21位贡献者。我们的工作始于Skippbox(现在是Bitnami的一部分),并通过谷歌和红帽的贡献不断发展。
Kubernetes孵化器允许来自不同公司的贡献者相互了解,并在Kubernetes贡献者和维护者的指导下进行有效协作。我们的孵化导致了Kubernetes生态系统的一个新的和有用的工具的开发和发布。
我们从最初的Docker Compose文件创建了一个可靠、可扩展的Kubernetes环境。我们努力将尽可能多的键转换为它们的Kubernetes等效项。运行一个命令即可在Kubernetes上启动并运行:kompose up。
如果没有社区的反馈和贡献,我们不可能做到这一点!
如果您还没有尝试过GitHub上的Kompose,请查看一下!
Kubernetes留言簿
Kubernetes的常用示例是著名的留言簿,我们将其用作转换的基础。
这是来自官方kompose.io网站的示例,从一个简单的Docker Compose 文件开始)。
首先,我们将检索该文件
$ wget https://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 file "frontend-service.yaml" created
INFO Kubernetes file "redis-master-service.yaml" created
INFO Kubernetes file "redis-slave-service.yaml" created
INFO Kubernetes file "frontend-daemonset.yaml" created
INFO Kubernetes file "redis-master-daemonset.yaml" created
INFO Kubernetes file "redis-slave-daemonset.yaml" created
Kompose 1.0的主要功能
随着我们的毕业,Kompose 1.0.0的发布,以下是新内容
- Docker Compose 版本 3:Kompose 现在支持 Docker Compose 版本 3。诸如“deploy”之类的新键现在会转换为它们对应的 Kubernetes 等效项。
- Docker Push 和 Build 支持:当您在
docker-compose.yaml
文件中提供“build”键时,Kompose 将自动构建映像并将其推送到相应的 Docker 存储库,供 Kubernetes 使用。 - 新键:随着版本3的支持,支持pid和deploy等新键。有关Kompose支持的完整详细信息,请查看我们的转换文档。
- 错误修复:在每个版本中,我们都会修复与转换时出现的极端情况相关的任何错误。此版本修复了与在目标名称中使用“./”转换卷相关的问题。
未来的发展方向?
随着我们继续开发,我们将努力转换所有未来和当前的Docker Compose版本的所有尽可能多的Docker Compose键,并将每个键转换为其对应的Kubernetes等效项。所有未来的版本都将向后兼容。
在Stack Overflow上发布问题(或回答问题)
在K8sPort上加入倡导者社区门户
在Twitter上关注我们@Kubernetesio,获取最新更新
在Slack上与社区联系
在GitHub上参与Kubernetes项目