LoginSignup
6

More than 3 years have passed since last update.

posted at

updated at

Skaffoldのprofile機能を使って環境ごとに動作を変える

Skaffoldのprofile機能を使えば、profileごとに設定を上書くことができます。
たとえば、開発環境とプロダクション環境へのデプロイの仕方を変えることができます。

実際の例を見てみましょう。
例えば以下のようなskaffold.yamlがあったとします。

skaffold.yaml
apiVersion: skaffold/v1
kind: Config
build:
  artifacts:
  - image: sample-image
deploy:
  kustomize:
    path: kubernetes/overlays/dev

kustomizeのpathとしてdevを指定していますが、これをproductionを指定したい場合、profile機能を使うとスマートにできます。

skaffold.yaml
apiVersion: skaffold/v1
kind: Config
build:
  artifacts:
  - image: sample-image

profiles:
- name: dev
  deploy:
    kustomize:
      path: kubernetes/overlays/dev
- name: production
  deploy:
    kustomize:
      path: kubernetes/overlays/production

このように書くと、dev環境へデプロイしたい場合は、

$ skaffold run -p dev

prod環境へデプロイしたい場合は、

$ skaffold run -p production

というように設定を切り替えることができます。
profile機能が行っているのは設定の上書きなので上記のdeploy以外にもbuild内容も変更が可能です。
profile機能のexamplesをみるとよく分かるかと思います。

またActivationというprofileの自動切り替え機能もあります。
Activationを使うと
kubecontextや環境変数、skaffoldコマンド(dev/run/build/deploy)によって、profileを自動で切り替えてくれます。

build:
  artifacts:
  - image: sample-image

profiles:
- name: local
  activation:
    - kubeContext: minikube
      command: dev
  deploy:
    kustomize:
      path: kubernetes/overlays/local
- name: dev
  activation:
    - env: ENV=dev
  deploy:
    kustomize:
      path: kubernetes/overlays/dev
- name: production
  activation:
    - env: ENV=production
  deploy:
    kustomize:
      path: kubernetes/overlays/production

例えば上記の場合、

  • kubeContextがminikubeで、skaffold devコマンドを実行した場合、local profileが使用される
  • ENV=devという環境変数があれば、dev profileが使用される
  • ENV=productionという環境変数があれば、production profileが使用される

といった具合です。
うまく使えば-pオプションにいちいち指定しなくてよくなるので大変便利ですね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
6