mcpField
T
tilt

tilt

github.com/hyperb1iss云与 DevOps3639 次安装1 天前更新
代码仓库

关于 tilt

Tilt 技能指导如何通过命令行操作运行中的 Tilt 实例,管理本地 Kubernetes 开发循环,包括构建、部署、日志和资源排查。适用于在开发或 CI 中使用 Tilt 的工程师;内容还涵盖配置策略与常见故障。

主要功能

  1. 01启动、停止并配置 Tilt 环境
  2. 02查看日志和资源状态
  3. 03诊断文件监视与构建问题
  4. 04选择镜像构建和实时更新策略
  5. 05配置 Kubernetes 与本地资源

适用场景

  1. 01启动本地 Kubernetes 开发环境
  2. 02查看特定资源的构建或运行日志
  3. 03排查资源未就绪或文件监视异常
  4. 04在 CI 中运行批处理验证

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hyperb1iss/hyperskills --skill tilt

安装后在 Claude Code 中输入/tilt确认已加载。

附带文件references/api-reference.mdreferences/patterns.md

详细介绍

Tilt:Kubernetes 开发工具包

Tilt 可自动化本地 Kubernetes 开发循环:监视文件、构建镜像并部署到集群。配置存储在 Tiltfile(Starlark,一种 Python 方言)中。一个 资源 将镜像构建和 k8s 部署(或本地命令)打包成一个便于管理的单元。

CLI 操作

Agent 用于与运行中的 Tilt 实例交互的命令。

生命周期
任务命令
启动开发环境tilt up [-- <Tiltfile args>]
启动并在终端中持续输出日志tilt up --stream
仅启动指定资源tilt up frontend backend
在 CI/批处理模式下运行(成功或失败时退出)tilt ci --timeout 30m
停止并删除已部署的资源tilt down
更改运行时 Tiltfile 参数tilt args -- --flag value
更改运行时参数(全部清除)tilt args --clear

在 tilt up 中按下 Ctrl+C 时:K8s 和 Docker Compose 资源会继续运行。本地 serve_cmd 进程会停止。使用 tilt down 进行清理。

查看日志
任务命令
持续输出所有日志tilt logs -f
持续输出单个资源的日志tilt logs -f <resource>
仅显示错误tilt logs --level error
仅显示构建日志tilt logs --source build
仅显示运行时日志tilt logs --source runtime
显示最近 5 分钟的日志tilt logs --since 5m
显示最后 100 行tilt logs --tail 100
JSON 输出(用于解析)tilt logs --json
资源管理
任务命令
列出所有资源tilt get uiresources
以 JSON 格式显示资源状态tilt get uiresources -o json
详细描述资源tilt describe uiresource <name>
强制重新构建资源tilt trigger <resource>
启用已禁用的资源tilt enable <resource>
禁用资源tilt disable <resource>
等待资源就绪tilt wait --for=condition=Ready uiresource/<name>
检查与调试
任务命令
诊断(版本、集群)tilt doctor
检查文件监视项tilt get filewatches
描述指定的文件监视项tilt describe filewatch <name>
导出完整的引擎状态(JSON)tilt dump engine
导出完整的 UI 状态tilt dump webview
按 Tilt 的方式测试 Docker 构建tilt docker -- build <args>
列出 API 资源类型tilt api-resources

Tilt API 服务默认运行在 localhost:10350。所有 tilt get/describe/trigger 命令都会与其通信。

构建策略选择器

情况函数关键细节
标准 Dockerfiledocker_build(ref, context)监视上下文目录,自动注入到 k8s 中
自定义工具链(Bazel、ko、Buildpacks)custom_build(ref, cmd, deps)必须使用 $EXPECTED_REF 环境变量进行标记
非 Docker 构建器(Buildah、kaniko)custom_build(..., skips_local_docker=True)构建器独立处理推送
Docker Compose 服务docker_compose(configPaths)管理 Compose 生命周期
Helm chartk8s_yaml(helm('./chart'))在本地渲染,部署到集群
Kustomize 覆盖配置k8s_yaml(kustomize('./overlay'))在本地渲染,部署到集群

实时更新决策树

实时更新通过就地同步容器文件取代完整的镜像重建,耗时从几分钟缩短到几秒钟。

步骤用途顺序
fall_back_on(files)这些文件发生更改时强制完整重建必须放在最前面
sync(local, remote)将已更改的文件复制到运行中的容器放在 fall_back_on 之后
run(cmd, trigger=files)在容器中执行命令(例如,安装依赖)放在 sync 之后
restart_container()重启容器进程必须放在最后
docker_build('myapp', '.', live_update=[
    fall_back_on(['requirements.txt']),
    sync('./src', '/app/src'),
    run('pip install -r requirements.txt', trigger=['requirements.txt']),
])

实时更新失效时: 更改 docker_build 上下文之外的文件会触发完整重建。更改任何 sync() 路径之外的文件也会触发完整重建。首次执行 tilt up 始终会进行完整构建;实时更新需要容器正在运行。

资源配置

# Kubernetes resource with port forwarding and dependencies
k8s_resource('frontend',
    port_forwards=['3000:3000'],
    resource_deps=['api', 'database'],
    labels=['web'],
    trigger_mode=TRIGGER_MODE_MANUAL,
)

# Local resource (build tool, test runner, code generator)
local_resource('codegen',
    cmd='make generate',
    deps=['./proto'],
    labels=['tools'],
)

# Local server (runs continuously)
local_resource('storybook',
    serve_cmd='npm run storybook',
    deps=['./src/components'],
    allow_parallel=True,
    readiness_probe=probe(http_get=http_get_action(port=6006)),
)

并行度: 默认情况下,本地资源按顺序运行。对于相互独立的资源,可设置 allow_parallel=True。镜像构建默认最多并发 3 个,可通过 update_settings(max_parallel_updates=N) 调整。

依赖项: resource_deps 只会在首次就绪时进行检查;依赖项一旦就绪一次,其依赖资源在本次会话中就会永久解锁。

调试流程

Service crashing?     → tilt logs -f <resource> --source runtime
Build failing?        → tilt logs -f <resource> --source build
                        tilt docker -- build <args>  (reproduces Tilt's exact build)
Wrong files rebuild?  → tilt get filewatches
                        tilt describe filewatch <name>
                        Check .tiltignore, watch_settings(ignore=), ignore= param
Force a rebuild?      → tilt trigger <resource>
Resource stuck?       → tilt describe uiresource <name>
                        Check resource_deps chain
                        For CRDs: pod_readiness='ignore'
General diagnostics?  → tilt doctor
Full state dump?      → tilt dump engine | jq .

Top 10 个常见问题

常见问题解决方法
local() 调用不会跟踪文件依赖项用 read_file() 包装,或添加 watch_file()
实时更新路径位于 docker_build 上下文之外确保同步的本地路径位于上下文目录内
本地资源会相互阻塞为彼此独立的资源设置 allow_parallel=True
resource_deps 更新时不会重新检查门控它只检查首次就绪状态,不检查当前版本
Starlark 不支持 while/try-except/class/递归使用 for 循环,用 fail() 处理错误,用字典管理状态
.tiltignore 不影响 Docker 构建上下文使用 .dockerignore 同时将文件排除在重建触发条件和上下文之外
自定义 custom_build 中未使用 $EXPECTED_REF构建脚本必须使用此环境变量为镜像添加标签
run() 的触发文件未包含在 sync() 步骤中触发路径也必须由某个 sync 步骤覆盖
首次运行 tilt up 总是执行完整构建只有容器正在运行后,实时更新才能生效
CRD Pod 卡在 pending 状态为 CRD 资源设置 pod_readiness='ignore'

更多资源

参考文件

如需了解详细的 API 签名和高级模式,请参阅:

  • references/api-reference.md:完整的 Tiltfile API 目录,按类别组织,包含 Starlark 语言说明和忽略机制对比
  • references/patterns.md:多服务架构、环境配置、CI 集成、性能优化、以编程方式与 Tilt 交互、扩展生态系统

反模式

反模式解决方法
未经同意启动或停止 Tilt变更长期运行的开发环境前先征求同意
将 tilt up 当作构建命令使用 tilt ci 进行批量验证
实时更新没有回退机制将构建/依赖文件放入 fall_back_on
只通过 Kubernetes YAML 进行调试检查 uiresources、文件监视和日志
使用 local() 执行受监视的 shell 操作使用带有显式 deps 的 local_resource

此技能不是什么

  • 不是 Kubernetes 入门指南。
  • 不代表可以运行、重启或拆除开发环境。
  • 不能替代对 tilt doctor 和资源日志的查阅。

评论

支持 Markdown