谷歌发布 Skaffold 的正式版本,用来简化 Kubernetes 的开发

谷歌发布 Skaffold 的普遍可用版本(general availability,GA),Skaffold 是一个在开发和部署针对 Kubernetes 环境的应用时,简化一些通用任务的工具。在开发模式下,Skaffold 能够自动探测和部署变更,在部署模式下,能够自动构建、测试和部署变更。Skaffold 在其管道的各个阶段支持多个工具。

Skaffold 可以按照两个模式运行:开发和部署。开发模式可以通过“skaffold dev”启用,它会监视本地源码的变化,当探测到变化时,它会进行构建和部署。部署模式可以通过“skaffold run”启用,它会构建一次、部署并退出,这一点使其非常适合 CI/CD 管道。Skaffold 在其管道的各个阶段支持多个工具。在构建阶段中,它可以与 Dockerfiles、 Kaniko 、Google Cloud Build、Bazel、maven 和 gradle 协作。它支持通过 container-structure-test 校验构建而成的镜像。Container-structure-test 提供了一个 YAML 配置驱动的方式来运行各种测试。对于部署阶段,它可以与 kubectl、 Helm kustomize 协作。

在开发模式下,Skaffold 会管道化运行中容器的日志输出并管理已部署应用到本地机器的端口转发。当文件发生变化的时候,它能够直接将文件同步到运行中的容器中,并且能够在镜像重新构建的时候,将 Kubernetes manifests更新为新的镜像标签。Skaffold 的工作流是由一个“管道(pipeline)”组成的,管道包含多个阶段(stage)。如果阶段与当前上下文无关的话,它们可以跳过,比如如果部署目标是本地 Minikube 的话,将不会推送制件(artifact)到远程仓库。

图片来源: https://skaffold.dev/docs/design/

Skaffold 是在去年宣布alpha 版本的。GA 发布版本也添加了对Cloud Native Buildpacks 实验性支持,该功能会让开发人员构建容器镜像更容易,它会基于编程语言自动安装依赖并进行构建。

要在不同的上下文中使用不同的工具,Skaffold 支持“profiles”功能。特定 Skaffold profile 的构建、测试和部署工具可以覆盖上文所述的 skaffold.yml,该文件是位于应用根路径的基础配置文件。我们可以为不同的环境(dev、staging 和 prod)使用不同的 profiles,并相应地改变它们所使用的工具。

Skaffold 还暴露了API 以便于与工作流中的其他工具进行集成。例如,部署监控仪表盘可以监听来自Events API 的通知。该领域中的其他工具包括 Draft , Tilt Forge Garden

原文链接: