TL;DR
- GKE-autopilot でskaffold を使う
- skaffold のホットリロードを試す
概要
GKE-autopilot で開発環境としてskaffold を使い、開発効率化をする
versions
- macOS
- 11.5.2
- GKE-autopilot
- v1.20.8-gke
- skaffold
- v1.30.0
skaffold を実行する
CLI のインストール
$ brew install skaffold
GCP Artifact の認証情報を取得
GCP Artifact を使用したいため認証情報を予め取得する
$ gcloud auth configure-docker \ asia-northeast1-docker.pkg.dev
Docker の準備
nginx を立てて単純なhtml のホットリロードを試すための Dockerfile
を作成
FROM nginx:1.21.1-alpine COPY ./html /usr/share/nginx/html
./html/index.html
の作成
<h1>Hello World</h1>
マニフェストの作成
k8s-pod.yaml
の作成。前項で作成したDockerfile を動かすだけのマニフェスト
apiVersion: v1 kind: Pod metadata: name: getting-started spec: containers: - name: getting-started image: <GCP ARTIFACT URI> ports: - containerPort: 80
skaffold.yaml
の作成。 sync:
の項目で同期したいディレクトリを指定する。
apiVersion: skaffold/v2beta21 kind: Config build: artifacts: - image: <GCP ARTIFACT URI> sync: manual: - src: 'html*' dest: '/usr/share/nginx/html' deploy: kubectl: manifests: - k8s-*
GKE-autopilot へデプロイ
コマンド一発でビルド・push・デプロイを行ってくれる
$ skaffold dev Listing files to watch... :
nginx をポートフォワードでローカルへ持ってくる
$ kubectl port-forward pod/getting-started 8888:80 Forwarding from 127.0.0.1:8888 -> 80 Forwarding from [::1]:8888 -> 80 Handling connection for 8888
curl で疎通確認
$ curl localhost:8888 <h1>Hello World</h1>
ホットリロードを試す
./html/index.html
を適当に更新
<h1>Hello World !!!!!!!</h1>
するとskaffold が検知してくれビルドが走り、反映してくれる。
$ curl localhost:8888 <h1>Hello World !!!!!!!</h1>
片付け
$ kubectl delete ns skaffold
まとめ
すんなり動き感動。
一人でGKE を利用するならTelepresence よりskaffold が良さそう。
また、GCP のOSS ということでCloud Build をサポートしてくれていたり、欲しいオプションはだいたいそろっていたり(ホットリロードをはじめタグ付けみたいな。)、kustomize を扱えたりで積極的に使っていきたいなという気持ち。