🤖
Cloud Code + Skaffold:ローカルで爆速開発ループを回してみた
はじめに
GKE や Cloud Run 上にアプリを素早くデプロイ&検証したい。
Cloud Native な開発に興味あるけど、環境構築が面倒など課題になるケースもあります。
そんな方にオススメなのが「Cloud Code + Skaffold」です!
本記事では、ローカルでの開発コード変更を即反映できる開発ループを、
Cloud Code(VS Code 拡張)と Skaffold を組み合わせて実現する方法を紹介します。
Skaffoldとは
Skaffold は Google が開発している OSS で、Kubernetes 向けの開発サイクルを効率化します。
主な機能は以下の通り:
- ソースコードの変更を検知
- 自動でビルド、Dockerイメージ作成、デプロイ
- ローカル/リモートどちらでもOK
Cloud Codeとは
Cloud Code は VS Code や IntelliJ 用の Google 提供の拡張機能です。
以下のことが簡単にできます:
- GKE クラスタや Cloud Run へのデプロイ
- Skaffold 設定の GUI 補助
- Kubernetes リソースの管理やログ確認
開発環境の準備
必要なツール
- Docker
- kubectl
- Skaffold
- VS Code
- Cloud Code 拡張機能
プロジェクト作成とSkaffold導入
app/
├── main.go
├── Dockerfile
├── k8s/
│ └── deployment.yaml
├── skaffold.yaml
main.go
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello from Cloud Code + Skaffold!")
}
func main() {
http.HandleFunc("/", handler)
fmt.Println("Server listening on port 8080")
http.ListenAndServe(":8080", nil)
}
dockerfile
FROM golang:1.20-alpine
WORKDIR /app
COPY . .
RUN go build -o app .
CMD ["./app"]
k8s/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
spec:
replicas: 1
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: my-app
ports:
- containerPort: 8080
skaffold.yaml
apiVersion: skaffold/v4beta6
kind: Config
metadata:
name: my-app
build:
artifacts:
- image: my-app
context: .
docker:
dockerfile: Dockerfile
deploy:
kubectl:
manifests:
- k8s/deployment.yaml
portForward:
- resourceType: deployment
resourceName: my-app
port: 8080
localPort: 8080
Skaffoldで開発ループを回してみる
bash
skaffold dev
これで:
- ソースコードを変更
- 自動でビルド
- Kubernetes に再デプロイ
- ポートフォワーディングで localhost:8080 にアクセス可能
確認
bash
curl http://localhost:8080
#=> Hello from Cloud Code + Skaffold!
おわりに
Cloud Code + Skaffold を使えば、コード変更 → 自動デプロイ → 確認の流れが圧倒的に速くなります。
特に、Kubernetes 初学者でも GUI 操作 + Skaffold による自動化で、
クラウドネイティブ開発の世界にスムーズに入れるのが魅力です。
ぜひ使ってみてください
Discussion