こんにちはtsunodaです。
もう11月、、小さい頃は年末ってワクワクしましたよね!小さい頃は!
GKEを触ってて思ったのが、
みんなyamlファイルどこにどう置いて管理してるの?
です。
terraformのディレクトリ管理どうしてる?的な。
Dockerfile、cloudbuild.yaml、ingressやpvcなどのyamlファイルの管理について。
GKEでnginxを立ち上げた時を例に、その時私はこうしました、をさらっと紹介しようと思います。基礎です。
置いてみる
まずはDockerfile、GKE用のディレクトリを掘っておもむろにスッと置きます。
gke_nginx
├── Dockerfile
そして今回cloudbuildも使ったので、cloudbuild.yamlもDockerfileと同じ階層に置きます。
gke_nginx
├── Dockerfile
├── cloudbuild.yaml
アクセス先のindex.htmlも同じ階層に置けばイジりやすいよねってことでindex.htmlも同じ階層に。
gke_nginx
├── Dockerfile
├── cloudbuild.yaml
├── index.html
残りの作りたいyamlは以下です。
・configmap.yaml
・deployment.yaml
・ingress.yaml
・pvc.yaml
・service.yaml
この辺は manifest ってことで階層を分けて管理がしたいので、1個ディレクトリを掘りました。
最終的にこんな感じになりました。
gke_nginx
├── Dockerfile
├── cloudbuild.yaml
├── index.html
└── manifests
├── configmap.yaml
├── deployment.yaml
├── ingress.yaml
├── pvc.yaml
└── service.yaml
いかがでしょうか、nginxであればこんな感じで十分かなと思います。
yamlファイル同士の紐付け系
どのファイルにどれ紐付けるっけ?
今回のnginxを例に基礎的なyamlファイルの関連付けについて簡単にまとめ。
○configmap.yaml
ここにnginxのconfを記載、このconfigmapに名前も付ける。
○pvc.yaml
マウントするディスクの名前付ける、サイズなども書く。
○service.yaml
serviceのタイプを決めて、serviceの名前もつける。
selectorでpodも選択しておく。
○ingress.yaml
ingressに名前つける。backendにservice.yamlで作ったserviceの名前指定する。
○deployment.yaml
deployの名前つける。selectorでpod選択する。
configmap.yamlに書いたnginxのconfをコンテナにマウントするべくマウントするpathも含めて記載する。
pvc.yamlで書いたdiskをマウントするべくマウントするpathも含めて記載する。
○cloudbuild.yaml
ここでmanifests/配下のファイルを指定してgke-deployを実行する。
おまけ
実際にサービス運用として環境も分けてわちゃわちゃ作っていくときは、
cloudbuild用ディレクトリ、nginxのDockerfileとconf用ディレクトリ、manifests用ディレクトリといった具合に分けて、
base,overlaysを用いてkustomizeでデプロイなんかも。
gke_sample
├── cloudbuild
│ ├── cloudbuild_dev.yaml
│ ├── cloudbuild_prd.yaml
│ └── cloudbuild_stg.yaml
├── kustomize
│ ├── base
│ │ ├── deployment.yaml
│ │ ├── kustomization.yaml
│ │ └── etc...
│ └── overlays
│ ├── dev
│ │ ├── deployment.yaml
│ │ ├── kustomization.yaml
│ │ └── etc...
│ ├── prd
│ │ ├── deployment.yaml
│ │ ├── kustomization.yaml
│ │ └── etc...
│ └── stg
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── etc...
├── kustomize_dev.sh
├── kustomize_prd.sh
├── kustomize_stg.sh
├── manifests
│ ├── dev
│ │ ├── configmap_dev.yaml
│ │ ├── deployment_dev.yaml
│ │ ├── namespace_dev.yaml
│ │ └── etc...
│ ├── prd
│ │ ├── configmap_prd.yaml
│ │ ├── deployment_prd.yaml
│ │ └── etc...
│ └── stg
│ ├── configmap_stg.yaml
│ ├── deployment_stg.yaml
│ └── etc...
└── nginx
├── Dockerfile
└── nginx.conf