Skaffold 与 Rancher Desktop
Skaffold 是一个命令行工具,用于 Kubernetes 原生应用程序的持续开发。Skaffold 处理构建、推送和部署应用程序的工作流,并提供用于创建 CI/CD 流水线的构建块。它能让你专注于在本地迭代你的应用程序,Skaffold 则能持续部署到你的本地或远程 Kubernetes 集群。要了解有关 Skaffold 的更多信息,请参阅 Skaffold 项目文档。
为了演示使用 Rancher Desktop 设置 Skaffold 的步骤,Rancher Desktop 文档在此处提供了一个 nodejs 应用程序示例。
重要提示:Skaffold 仅适用于
dockerd
(Moby)。因此,请确保在 Rancher Desktop UI 的 Kubernetes Settings 面板中选择了dockerd
作为运行时。
访问 https://skaffold.dev/docs/install/ 安装 Skaffold。
克隆 Rancher Desktop 文档仓库并在终端中导航到
express-sample
,如下所示:cd docs.rancherdesktop.io/assets/express-sample
运行
skaffold init
。根据 Skaffold 文档 的介绍,
skaffold init
会遍历你的项目目录并查找 build 配置文件(例如Dockerfile
、build.gradle /pom.xml
、package.json
、requirements.txt
或go.mod
)。在我们的示例中,我们将选择
Dockerfile
和package.json
。这将生成你可以修改的初始配置文件。出现提示时,选择yes
将你的配置写入skaffold.yaml
。在你的编辑器中,查看你的
app.js
和manifests.yaml
文件。请注意,在manifests.yaml
中,你将拥有一个 deployment 配置和一个 service 配置。在测试场景下,仅需要 1 个replica
即可。回到你的终端,你会注意到你有两个选项,分别是
skaffold run
(允许你构建和部署)和skaffold dev
(允许你进入开发模式自动重新部署)。在此示例中,我们将使用skaffold dev
。你需要具有向镜像仓库推送的权限。你可以使用 Docker 登录、设置本地镜像仓库或在本地构建仓库,而不需要推送到镜像仓库:
- Docker Hub
- 本地镜像仓库
- 本地构建
在运行
skaffold dev
之前,如果你有 Docker Hub 账号,请使用你的 docker 登录。然后,在文件skaffold.yaml
和manifests.yaml
中,将matamagu/express-sample
替换为YOUR_DOCKER_HUB_USERNAME/express-sample
,这是因为skaffold dev
会将构建的镜像推送到 DockerHub。你可以先运行以下命令来设置本地镜像仓库:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
然后:
skaffold dev --default-repo=localhost:5000
你可以通过在 manifests.yaml 文件中将工作负载 imagePullPolicy 设置为 IfNotPresent 在本地进行构建,而无需推送到镜像仓库。你还需要使用以下变量更新 skaffold.yaml 以实现此更改,如下所示:
示例 YAML
apiVersion: skaffold/v2beta29
kind: Config
metadata:
name: skaffold
build:
local:
push: false
useDockerCLI: true
在进行开发时,Skaffold 将检测所有更改,并会自动再次执行构建和部署的过程。你将能够看到集群中的任何更改。
在浏览器中访问
localhost:3000
,你将看到express-sample
界面。