Kubernetes 已成为容器编排的事实标准,改变了我们的开发流程。十年前,我们只需要将代码打包成 war/jar 包,然后启动应用即可。然而,现在面向 Kubernetes 的开发,交付的产物有可能是 Helm Chart、Workload Yaml、Dockerfile 或者容器镜像,最后由运维将这些交付物部署到 Kubernetes 集群中。
Kubernetes 的学习成本较高,它有一个陡峭的学习曲线。对于没有 Kubernetes 经验的开发者,如何将应用部署到 Kubernetes 集群上是一个大挑战。这时,一个能够将源代码自动部署到 Kubernetes 集群中的工具就变得至关重要。
一、什么是 Epinio
官网:https://epinio.io/
Epinio 是一个由 Kubernetes 驱动的应用开发引擎,由 SUSE 推出。只要将 Epinio 添加到你的集群中,就可以创建自己的平台即服务(PaaS)解决方案,可以在其中部署应用程序,而无需自己建立基础设施。
Epinio 抽象出 Kubernetes 的复杂性,因此你可以只关注编写代码本身。应用程序通过将其源代码直接推送到平台来启动,消除了复杂的 CD 管道和 Kubernetes YAML 文件。最后,你可以通过一个由 ingress controller 开放的 URL 来访问你的应用程序。
使用 Epinio 来运行你的应用程序,可以让你专注于业务功能逻辑,而非繁琐的配置容器和 Kubernetes 对象。Epinio 会自动识别你使用的编程语言,使用 Paketo Buildpack 构建一个合适的镜像,并在 Kubernetes 集群中启动容器。如果你已经有了一个可用的镜像,也可以选择使用自己的镜像。
开发人员体验 (DX) 是一个热门话题,好的工具可以减轻压力、提高生产力并鼓励工程师专注于自己的优势领域,而不会被低级组件分散注意力。更简单的应用程序部署体验可以让开发人员腾出时间来做更有价值的工作。
总之,Epinio 可以让开发人员轻松迭代在 Kubernetes 中运行的应用程序:
- 无需 Kubernetes 经验
- 没有陡峭的学习曲线
- 本地设置快速简单,零配置
- 无需构建复杂的 CD 管道或编写 YAML
- 关注应用程序逻辑,而不是容器或 Kubernetes 细节
二、如何安装 Epinio 并部署一个简单的应用程序
先决条件
你需要有一个 Kubernetes 集群才能使用 Epinio。你可以使用 K3s、minikube、Rancher Desktop 等工具或任何托管服务(例如 Azure Kubernetes Service 或 Google Kubernetes Engine)来启动 Local 集群。
除了 Local 集群,还需要在你的环境中安装 Kubectl 和 Helm,初始化 Epinio 时需要使用这些工具。
Epinio 如何运行?
Epinio 将多个 Kubernetes 组件包装在更高级别的抽象中,允许你将代码直接推送到平台。Epinio 会检查源代码,选择合适的 buildpack 并创建 Kubernetes 对象来部署你的应用程序。
部署过程是完全自动化的,全部由 Epinio 处理。你无需了解容器或 Kubernetes 即可启动你的应用程序。推送新代码会引发一系列操作,使你可以通过公共 URL 访问该项目。
Epinio 首先压缩你的源代码,并将存档上传到在你的集群中运行的 MinIO 对象存储服务器中。然后,它通过将其组件与 Paketo Buildpack 匹配来“stages”你的应用程序。这个过程会产生一个可用于 Kubernetes 的容器镜像。
在集群中安装 Epinio 后,你可以使用 CLI 与其交互。Epinio 还带有用于管理应用程序的 Web UI。
Epinio 详细推送流程,可参考:
三、Epinio 如何使用
Epinio 是专门为加强开发工作流程而设计的,为开发者处理部署。它设置迅速,使用简单,从开发者的笔记本电脑到生产云的所有环境皆可适用。可以通过运行单个命令来部署新应用程序,避免了从头开始构建容器镜像和部署管道的工作。
即使 Epinio 提供了如此多的支持,但它在应用程序的运行方式上仍然很灵活。与其他 PaaS 解决方案不同,你不会被锁定在某个平台中。因为 Epinio 在你自己的 Kubernetes 集群内运行,操作者可以直接与 Kubernetes 交互,以监控运行中的应用程序、优化集群性能并解决问题。Epinio 是一个面向开发者的层,为 Kubernetes 注入了更多的易用性。
Epinio 安装非常简单,使用简单的 Helm 命令即可完成安装,可以说是零配置的本地设置。而且也不需要了解 Kubernetes 的基础即可使用 Epinio cli 来部署应用程序。