一個由 Kubernetes 驅(qū)動的 PaaS 系統(tǒng) - Porter
Porter 是一個由 Kubernetes 驅(qū)動的 PaaS 系統(tǒng),可以在你自己的云供應(yīng)商中運(yùn)行。Porter 嘗試將 Heroku 的使用經(jīng)驗帶到你自己的 AWS/GCP 賬戶中,同時將你的基礎(chǔ)設(shè)施升級為 Kubernetes。
概述
像 Heroku 這樣的傳統(tǒng) PaaS 非常適合最大限度地減少不必要的 DevOps 工作,但隨著應(yīng)用程序的增長,它并不能提供足夠的靈活性。自定義網(wǎng)絡(luò)規(guī)則、資源限制和成本是開發(fā)人員將其應(yīng)用程序從 Heroku 遷出的常見原因。
Porter 為你自己的云提供商帶來了傳統(tǒng) PaaS 的簡單性,同時保留了 Kubernetes 的可配置性。Porter 建立在流行的 Kubernetes 包管理器 helm 之上,并與 kubectl 等標(biāo)準(zhǔn) Kubernetes 管理工具兼容,從一開始就為成熟的 DevOps 工作做好了準(zhǔn)備。只需要點擊幾下即可將應(yīng)用程序部署到你的云提供商中,Porter 將為你配置和管理底層基礎(chǔ)架構(gòu) - 只需指向你的存儲庫,Porter 將處理其余的工作,從構(gòu)建你的應(yīng)用程序到自動擴(kuò)展它。
在底層,Porter 運(yùn)行在 Kubernetes 之上。Porter 配置和管理每個云提供商的原生 Kubernetes 產(chǎn)品(AWS 上的 EKS、GCP 上的 GKE 和 Digital Ocean Kubernetes),同時抽象出所有的復(fù)雜性。
可能你會覺得 Porter 在 Kubernetes 之上運(yùn)行太過復(fù)雜,對于不了解 Kubernetes 的團(tuán)隊來說,Kubernetes 會有一定的門檻。除了一些基本概念之外,你不需要了解任何關(guān)于 Kubernetes 的知識即可使用 Porter。Kubernetes 恰好是提供 PaaS 體驗的最佳底層。事實上,大多數(shù) PaaS 實際上都是在 Kubernetes 之上運(yùn)行的,盡管這些細(xì)節(jié)對最終用戶來說是隱藏的。如果你的團(tuán)隊已經(jīng)熟悉 Kubernetes,Porter 可以成為簡化你現(xiàn)有操作的內(nèi)部部署平臺。
特性
- 可以在自己的云控制臺中一鍵開通 Kubernetes 集群:AWS、GCP、Digital Ocean。
- 簡單部署任何公共或私有的 Docker 鏡像。
- 為非容器化應(yīng)用使用 buildpacks 進(jìn)行 CI/CD。
- 類似于 Heroku 的操作界面,用于監(jiān)控應(yīng)用程序狀態(tài)、日志和歷史記錄。
- 應(yīng)用程序可以方便回滾到以前部署的版本。
- 零宕機(jī)部署和健康檢查。
- 監(jiān)控每次部署的 CPU、內(nèi)存和網(wǎng)絡(luò)使用情況。
- 一鍵式插件市場(例如 MongoDB、Redis、PostgreSQL)。
對于熟悉 Kubernetes 和 Helm 的用戶:
- 可以將現(xiàn)有 Kubernetes 集群直接連接到 Porter 使用。
- 通過界面可視化、部署和配置 Helm Charts。
- 深入了解版本,包括修訂歷史和組件圖。
- 回滾/更新現(xiàn)有版本,包括編輯原始 values.yaml 文件。
使用
最簡單的方式就是直接使用 Porter 提供的在線云服務(wù) https://dashboard.getporter.dev/,直接登錄注冊。然后創(chuàng)建一個項目并配置你的云服務(wù)商的相關(guān)憑證,Porter 會在你的云服務(wù)中自動配置 Kubernetes 集群。
如果你沒有云服務(wù)商也可以連接現(xiàn)有的 Kubernetes 集群,下載 Porter CLI 工具,然后將你現(xiàn)有 Kubernetes 集群的 kubeconfig 連接到 Porter 即可:
配置上 Kubernetes 集群后就可以選擇部署服務(wù),支持 Web 服務(wù)、Worker 與 Job 任務(wù):
比如選擇一個 Web 服務(wù),如果你連接了 GitHub,那么可以選擇部署一個倉庫,也可以直接指定一個 Docker 鏡像地址:
如果你使用的 Porter 的云服務(wù),部署完成后會為你的應(yīng)用自動添加一個二級域名,通過該地址即可訪問到部署的服務(wù):
如果你的集群中安裝了 Prometheus,還可以對應(yīng)用進(jìn)行監(jiān)控:
而且還可以配置自動擴(kuò)縮容:
如果你需要本地進(jìn)行開發(fā)測試,可以直接 Clone 倉庫代碼:
git clone https://github.com/porter-dev/porter
然后執(zhí)行 make start-dev 命令即可在本地啟動服務(wù),不過需要在 docker/.env文件中添加下如下兩個環(huán)境變量,否則本地啟動后無法正常使用:
WELCOME_FORM_WEBHOOK=https://www.qikqiak.com
DISABLE_ALLOWLIST=true
關(guān)于 Porter 的更多信息可以查看官方文檔 https://docs.porter.run 了解更多信息。
倉庫地址:https://github.com/porter-dev/porter。