本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
Kompose 協助開發人員將 Docker Compose 檔案移至 Kubernetes
我很高興宣布 Kompose,這是一個轉換工具,供開發人員將 Docker Compose 應用程式轉換到 Kubernetes,已從 Kubernetes Incubator 畢業,成為專案的正式一部分。
自 2016 年 6 月 27 日的首次提交以來,Kompose 已完成 13 個版本,超過 851 次提交,自專案成立以來已獲得 21 位貢獻者。我們的工作始於 Skippbox(現為 Bitnami 的一部分),並透過 Google 和 Red Hat 的貢獻而成長。
Kubernetes Incubator 讓貢獻者能夠跨公司彼此認識,並在 Kubernetes 貢獻者和維護者的指導下有效地協作。我們的孵化促成了 Kubernetes 生態系統的新實用工具的開發和發布。
我們從最初的 Docker Compose 檔案建立了一個可靠、可擴展的 Kubernetes 環境。我們努力將盡可能多的鍵轉換為其 Kubernetes 等效項。執行單一命令即可讓您在 Kubernetes 上啟動並執行:kompose up。
如果沒有社群的回饋和貢獻,我們不可能做到!
如果您還沒有試用過 GitHub 上的 Kompose,請查看一下!
Kubernetes 留言簿
Kubernetes 的首選範例是著名的 guestbook,我們將其用作轉換的基礎。
以下是來自官方 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
…
例如,讓我們將我們的 guestbook 範例轉換為 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 將自動建置映像並將其推送至 Kubernetes 使用的 Docker 儲存庫。 - 新鍵:隨著版本 3 支援的增加,現在支援諸如 pid 和 deploy 之類的新鍵。有關 Kompose 支援的完整詳細資訊,請參閱我們的 轉換文件。
- 錯誤修正:在每個版本中,我們都會修正在轉換時與邊緣案例相關的任何錯誤。此版本修正了與轉換目標名稱中包含 './' 的磁碟區相關的問題。
接下來是什麼?
隨著我們繼續開發,我們將努力為所有未來和目前的 Docker Compose 版本轉換盡可能多的 Docker Compose 鍵,並將每個鍵轉換為其 Kubernetes 等效項。所有未來版本都將向後相容。
在Stack Overflow 上發布問題 (或回答問題)
在K8sPort 上加入倡導者社群入口網站
在 Twitter 上追蹤我們 @Kubernetesio 以獲取最新更新
在 Slack 上與社群聯繫
在 GitHub 上參與 Kubernetes 專案