本文已超過一年。較舊的文章可能包含過時的內容。請檢查頁面中的資訊自發布以來是否已變得不正確。

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 等效項。所有未來版本都將向後相容。