省下大把時間!Tiltfile 編寫簡易教程

許恆修 | Heng-Shiou Sheu
6 min readJul 5, 2024

想要提升開發效率?本篇文章為您詳細介紹如何快速上手 Tiltfile 編寫,從基本結構到實際操作一步步帶您進入 Tilt 世界。無論是新手還是資深開發者,都能從中獲得實用的技巧和知識,讓 Kubernetes 部署變得輕鬆簡單。立即閱讀,告別繁瑣的開發流程!

前言

相信我,我一開始也是在茫然的文件堆當中找尋答案,但現在你看到這段文字,代表你省下大把加班時間了。先曉得 Tilt 就是解決我們本機端開發並且打包映像檔最後部署到雲端 k8s 環境的過程,光是這樣想一輪都很費工,更別提實際動手解決。讓我們往下一步步完成。

文章結構

  1. 什麼是 tilt?
  2. Tilt 環境設置
  3. Tiltfile 基本結構
  4. 結語

1. 什麼是 Tilt?

Tilt 是一個強大的工具,旨在簡化本地開發和 Kubernetes 部署流程。作為開發者,理解如何編寫和使用 Tiltfile 可以大大提升您的工作效率,讓開發和部署更加順暢。以下是一份簡單的入門指南,帶您一步步了解 Tiltfile 的寫法。

2. Tilt 環境設置

在開始之前,確保您已經安裝並配置好 Tilt。如果您還沒有完成這一步,請參考 [Tilt 官方文檔](https://docs.tilt.dev/tutorial/1-prerequisites) 進行安裝和配置。

3. Tiltfile 基本結構

Tiltfile 是使用 Starlark(一種類似 Python 的語言)編寫的腳本文件,用於定義 Tilt 的行為。以下是 Tiltfile 的基本結構:

3.1. 設定 Tilt 版本

首先,確保您的 Tilt 版本符合最低要求,以便使用最新的功能和修復:

version_settings(constraint='>=0.22.2')

3.2. 構建 Docker 映像

接下來,我們使用 docker_build 函數來定義如何構建 Docker 映像。這裡我們指定了 Dockerfile 的位置和構建上下文,並設置了 live_update 以實時同步文件變更:

#構建 Docker 映像
docker_build(
'your-docker-image-name',
context='.',
dockerfile='path/to/your/Dockerfile',
only=['./src/', './requirements.txt'],
live_update=[
sync('./src/', '/app/src/'),
run(
'pip install -r /app/requirements.txt',
trigger=['./requirements.txt']
)
]
)
  • 'your-docker-image-name' 是您要生成的映像名稱。
  • context='.' 是 Docker 構建上下文。
  • dockerfile='path/to/your/Dockerfile' 是 Dockerfile 的路徑。
  • onlylive_update 用於加速開發流程,確保代碼變更能即時生效。

3.3 載入 Kubernetes 配置

使用 k8s_yaml 函數來載入您的 Kubernetes YAML 配置文件,這樣 Tilt 可以管理這些資源:

#載入 Kubernetes 配置
k8s_yaml(['path/to/your/k8s_deployment.yaml', 'path/to/your/k8s_service.yaml'])

3.4. 自定義 Kubernetes 資源

最後,使用 k8s_resource 函數來自定義 Kubernetes 資源,包括端口轉發、標籤和資源對象:

# 自定義 Kubernetes 資源
k8s_resource(
'your-resource-name',
port_forwards=['8000:80'],
labels=['your-label'],
)

在這裡:

  • 'your-resource-name' 是資源名稱。
  • port_forwards=['8000:80'] 將本地端口 8000 轉發到容器端口 80
  • labels=['your-label'] 給資源添加標籤。

3.5 結合成範例 Tiltfile

以下是完整的範例 Tiltfile,展示了如何綜合使用上述函數於真實情境中:

# 設定 Tilt 版本
version_settings(constraint='>=0.22.2')

# 構建 Docker 映像
docker_build(
'xiuxiumycena/whisper-model:v0.0.1',
context='.',
dockerfile='Dockerfile.cpu',
only=[
'./Dockerfile.cpu',
'./main.py',
'./requirements.txt'
],
live_update=[
sync('./main.py', '/app/main.py'),
run(
'pip install -r /app/requirements.txt',
trigger=['./requirements.txt']
)
],
docker_build_args={
'PLATFORM': 'linux/amd64'
},
push=True
)

# 載入 Kubernetes 配置
k8s_yaml('deploy_whisper_deployment_and_service.yaml')

# 自定義 Kubernetes 資源
k8s_resource(
'whisper-custom-model',
port_forwards=['5734:8080'],
labels=['asr_server']
)

結語

Tilt 是一個強大且靈活的工具,能夠大大提升本地開發和部署到 Kubernetes 的效率。通過上述步驟,您應該能夠快速上手並開始使用 Tilt 來簡化您的開發工作流。如果您有任何疑問,請參考 Tilt 官方文檔 或聯繫我獲取幫助。

--

--

許恆修 | Heng-Shiou Sheu
許恆修 | Heng-Shiou Sheu

Written by 許恆修 | Heng-Shiou Sheu

AI研究員 @喬泰科技,軟體工程師@微光國際,業界講師 @FCU 創能學院,Co-Founder @圖靈文本。專注將科技應用於改善生活中,持續性分享軟體架構設計、前沿人工智慧研究、公司治理等觀念。整合科技、人文思維於一體。聯絡 📪 hengshiousheu@gmail.com

No responses yet