skaffoldを使う時のgit repository管理戦略
現在マイクロサービスで新規サービスの開発をしているのだが、ローカルでの開発時にskaffoldを使おうとしてる
リポジトリ管理をモノリポジトリかマルチリポジトリにするかで迷ったが、一旦マルチリポジトリでいってみようと思ってる
マルチリポジトリに期待してるのは
といったところ
具体的にはgitで各サービスごとのリポジトリとは別で、skaffoldのymlファイルを管理するリポジトリを作成して
submodules機能を使ってskaffoldリポジトリのサブモジュールとして子リポジトリを登録していくといい感じになった(最初submodules機能の存在を知らなくて、それぞれ子リポジトリをcloneしてた...)
skaffold-repository |-- service1-repository(submodule) |-- service2-repository(submodule) `-- skaffold.yml
skaffoldは開発ツール(という認識)なので専用のリポジトリを作ることに違和感はそんなにないかと思ってるけどどうなんだろ
開発するアプリケーションごとにもう一個間にディレクトリ切ってもいいと思う
〇〇アプリケーションに必要なサービスはservice1とservice2
△△アプリケーションに必要なサービスはservice2とservice3
といった感じなら
skaffold-repository |- 〇〇 |- service1-repository(submodule) |- service2-repository(submodule) `-- skaffold.yml |- △△ |- service2-repository(submodule) |- service3-repository(submodule) `-- skaffold.yml
ちなみにgitで管理しているリポジトリがネストした場合、親ディレクトリと子ディレクトリでそれぞれgitの管理が別になるみたいで、わざわざgitignoreとかで子ディレクトリを親のgit管理はいかから除外するといったことをする必要はなかった
自分のskaffold.ymlの中身はこんな感じになった
apiVersion: skaffold/v1beta7 kind: Config build: artifacts: - image: demo/sample-graphql01 context: ./sample-graphql jibGradle: {} - image: demo/sample-grpc01 context: ./sample-system jibGradle: project: sample-grpc deploy: kubectl: manifests: - sample-graphql/k8s/*.yml - sample-system/k8s/*.yml
sample-graphqlはシンプルなgraphqlのアプリのみがあるrepository
sample-systemはもともとモノリシックな開発をしていたため、マルチプロジェクトなリポジトリとなっている
sample-systemのなかのsample-grpcプロジェクトとsample-graphqlプロジェクトを `skaffold dev` で立ち上げて
ローカルでガリガリ開発を進めていく感じ
それにしてもskaffold...いい...