Kubernetes の作業を自動化してくれるサービス Skaffold の yaml 設定ファイルの書き方
Jan 18, 2021
Kubernetes で Cluster 内の Pod を更新するとき以下の工程がある。
- Docker image 作成
- Docker image を Docker Hub に Push
kubectl rollout restart deployment <depl yaml ファイル名>
を実行して更新
開発時にファイルを更新するたびに上記手順を行っていると、とても手間。
上記作業を簡略化してくれるサービスとして Skaffold がある。
開発環境でのみ使えるサービス。
skaffold.yaml の記述例
参考ページ:skaffold.yaml
apiVersion: skaffold/v2alpha3
kind: Config
deploy:
kubectl:
manifests:
- ./infra/k8s/*
build:
local:
push: false
artifacts:
- image: mitomex/client
context: client
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.js'
dest: .
- image: mitomex/comments
context: comments
docker:
dockerfile: Dockerfile
sync:
manual:
- src: '*.js'
dest: .
- image: mitomex/event-bus
context: event-bus
docker:
dockerfile: Dockerfile
sync:
manual:
- src: '*.js'
dest: .
- image: mitomex/posts
context: posts
docker:
dockerfile: Dockerfile
sync:
manual:
- src: '*.js'
dest: .
- image: mitomex/query
context: query
docker:
dockerfile: Dockerfile
sync:
manual:
- src: '*.js'
dest: .
apiVersion
apiVersion は表示させたい Kubernetes Object のセットを指定する。
kind
kind は apiVersion で指定した Kubernetes Object セットの中から使いたいタイプを指定する。
deploy
deploy に Kubernetes Cluster に適用したい yaml が保存されている場所を指定する。
deploy は「展開する、配置する」という意味がある。
build
build に Pod に適用したい Docker Image を指定する。
local
local: push
は作成した Docker Image を Docker Hub に Push するかどうか。
手動で更新するときは Docker Hub に Push する必要があったが、 Skaffold を使うときは Docker Hub に Push する必要がないので false にする。
build:
local:
push: false
参考ページ:SKAFFOLD Build
artifacts
artifacts
に どの Docker Image を作成し、どのファイルの更新を監視するか指定する。
- image: mitomex/client
context: client
docker:
dockerfile: Dockerfile
sync:
manual:
- src: 'src/**/*.js'
dest: .
image
に Docker Image の名前を指定する。
context
に Docker Image を作成するためのファイル群がどのディレクトリにあるか指定する。
docker
に Dockerfile を指定する。(何に基づいて作成するかを指定するところ)
sync
に更新を監視するファイルを指定。
参考ページ;SKAFFOLD File Sync
Skaffold を実行する
skaffold.yaml が保存してあるディレクトリに移動。
通常はプロジェクトのルートディレクトリ。
以下のコマンドを実行する。
skaffold dev