[关闭]
@levinzhang 2019-11-30T06:42:12.000000Z 字数 1453 阅读 390

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

by

摘要:

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


谷歌发布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、Helmkustomize协作。

在开发模式下,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, TiltForgeGarden

查看英文原文:Google Announces General Availability of Skaffold for Easing Kubernetes Development

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注