本文發表於一年多前。舊文章可能包含過時內容。請檢查頁面中的資訊自發布以來是否已變得不正確。
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 專案