本文发表于一年多前。旧文章可能包含过时内容。请检查页面中的信息自发布以来是否已变得不正确。
Kompose 帮助开发人员将 Docker Compose 文件迁移到 Kubernetes
我很高兴地宣布,Kompose,一个帮助开发者将 Docker Compose 应用迁移到 Kubernetes 的转换工具,已经从 Kubernetes 孵化器毕业,正式成为项目的一部分。
自 2016 年 6 月 27 日首次提交以来,Kompose 已经发布了 13 个版本,完成了 851 次提交,自项目启动以来,贡献者人数达到了 21 人。我们的工作始于 Skippbox(现已并入 Bitnami),并在 Google 和 Red Hat 的贡献下不断发展壮大。
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 推送和构建支持:当您在 `docker-compose.yaml` 文件中提供“build”键时,Kompose 将自动构建镜像并将其推送到相应的 Docker 仓库供 Kubernetes 使用。
- 新键:随着版本 3 的支持,现在支持 pid 和 deploy 等新键。有关 Kompose 支持的完整详细信息,请参阅我们的转换文档。
- 错误修复:在每个版本中,我们都会修复转换时与边缘情况相关的任何错误。此版本修复了在目标名称中带有“./”的卷转换相关问题。
未来展望
随着我们继续开发,我们将努力将所有未来和当前的 Docker Compose 版本中的 Docker Compose 键尽可能地转换为其 Kubernetes 等效项。所有未来的版本都将向后兼容。
在 Stack Overflow 上提问(或回答问题)
加入 K8sPort 上的倡导者社区门户
在 Twitter @Kubernetesio 上关注我们,获取最新更新
在 Slack 上与社区联系
在 GitHub 上参与 Kubernetes 项目