Kubernetesのyamlを管理するKustomizeの基本的な使い方について




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を使ってサービスを開発してみたい方にとって最初のよい手助けとなると思います。是非読んでみてください。

 

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です