Categories
程式開發

谷歌發布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、Helmkustomize協作。

在開發模式下,Skaffold會管道化運行中容器的日誌輸出並管理已部署應用到本地機器的端口轉發。當文件發生變化的時候,它能夠直接將文件同步到運行中的容器中,並且能夠在鏡像重新構建的時候,將Kubernetes manifests更新為新的鏡像標籤。 Skaffold的工作流是由一個“管道(pipeline)”組成的,管道包含多個階段(stage)。如果階段與當前上下文無關的話,它們可以跳過,比如如果部署目標是本地Minikube的話,將不會推送製件(artifact)到遠程倉庫。

谷歌發布Skaffold的正式版本,用來簡化Kubernetes的開發 1

圖片來源: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