Kubernetesではyaml管理が大変
Kubernetesでマイクロサービスを構築しているとたくさんのyamlファイルが生成されるので管理が大変になってきます。
環境別に同じようなyamlファイルを生成して修正したら全環境のyamlファイルをいじるということがよくあります。
この管理の大変さを軽減してくるのがKustomizeです。読み方はカスタマイズと読んでいます。
Kustomizeを簡単に説明すると、ベースのyamlファイルを作成し、環境別に設定のことなる箇所だけを別ファイルに書き出すことでyamlファイルの再利用と共有化ができます。
最終的に、Kustomizeを使って複数のファイルを1つのファイルとして吐き出します。
Kustomizeの使い方
インストール
macの場合、brewで簡単にインストールできます。
$ brew install kustomize
base作成
まずはbaseディレクトリを作成します。名前は何でもいいんですが慣例にならってbaseとします。
$ mkdir -p samle_kustomize/base
baseディレクトリにkustomization.yamlを作成し、中身を下記のようにします。
resources: - deployment.yaml - service.yaml
同じディレクトリにdeployment.yamlを作成します。
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: deployment-sample spec: replicas: 1 spec: containers: - name: nginx image: nginx:stable ports: - containerPort: 8080
環境別ファイルの作成
環境別のファイルは慣例にならってoverlays/developディレクトリに作成します。
$ mkdir -p samle_kustomize/overlays
overlaysディレクトリにbaseディレクトリと同様にkustomization.yamlを作成します。
bases: - ../../base paches: - deployment.yaml - service.yaml
basesはこの環境でのbaseを指定することができます。今回は最初に作ったbaseを指定します。
重要な点として、Kustomizeのpachesでbaseを上書きする時はapiVersion、kind、metadata.nameを合わせないといけません。
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: deployment-sample spec: replicas: 1 spec: containers: - name: nginx ports: - containerPort: 80 readinessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 180 timeoutSeconds: 5
developのimage項目はbaseと同じなので削除して、containerPortを80に変更、develop環境でreadinessProbeの項目を増やしています。
このようにKustomizeを使うとbaseの設定を使いつつ柔軟に変更することができます。
おすすめ書籍
Dockerの使い方から説明されているので初心者の方も安心して学べる書籍です。
Kubernetesに関してはPod, Service, Deploymentなどを順を追って説明し、実際に動かすところまでを解説しているので非常に実践的な内容となっています。
これからKuebernetesを使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す