翻訳

このドキュメントは The Kubectl Book の翻訳です。翻訳の GitHub リポジトリはこちら

TL;DR
  • kustomization.yaml の構成をベースとしたリソース構成の再利用
  • 複数の環境向けにベースをカスタマイズする
  • 複数のプロジェクトをまたいだベースの再利用

ベースとバリエーション

動機

ユーザーが一つのリソース構成を変形して複数の構成をデプロイしたり、同じリソース構成を再利用したりすることはよくあります。 kustomization.yaml によって作成されたリソース構成は、kustomization.yamlベースとし、複数のプロジェクトをまたいで再利用することができます。

例。

  • dev、test、staging、canary、production 環境にデプロイされるプロジェクトで、各環境で設定が異なる
  • 複数のクラスタにデプロイされるプロジェクトで、各クラスタでプロジェクトの設定やバージョンが異なる

Reference

ベース

ベースは kustomization.yaml の中で共有されるリソース構成のことで、別の kustomization.yaml が利用またカスタマイズします。

ベースの例。

  • Common Java Base
    • 複数のアプリで使用 (ゲストブック、カレンダー、認証など)
  • Common Guest Book App Base
    • 複数の環境で使用 (test、staging、production など)
  • Common Prod Guest Book App Base
    • 複数のクラスタで使用 (us-west、us-east、us-canary など)

ベースへの参照

プロジェクトにベースを追加するには、別の kustomization.yaml があるディレクトリのパス (kustomization.yaml への相対パス) を base に追加します。そうすると、ベースのプロジェクトから現プロジェクトにすべてのリソースが自動的に追加され、kustomize します。

ベースの取りうる値は以下です。

  • kustomization.yaml からの相対パス - たとえば ../base
  • URL - たとえば github.com/kubernetes-sigs/kustomize/examples/multibases?ref=v1.0.6

単一のベースが単一のアプリケーションに継承される

graph TD; B[B]-->A[A];

ベースを共有し、異なるアプリケーションに継承される

graph TD; B1[B1]-->A1[A1]; B2[B2]-->A1[A1]; B2[B2]-->A2[A2]; B3[B3]-->A2[A2];

例: kustomization.yaml をベースとして追加

入力: kustomization.yaml ファイル

# kustomization.yaml
bases:
- ../base

ベース: kustomization.yaml とリソース構成

# ../base/kustomization.yaml
configMapGenerator:
- name: my-java-server-env-vars
  literals:    
  - JAVA_HOME=/opt/java/jdk
  - JAVA_TOOL_OPTIONS=-agentlib:hprof
resources:
- deployment.yaml
# ../base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - mountPath: /etc/config
          name: config-volume
      volumes:
      - configMap:
          name: my-java-server-env-vars
        name: config-volume

適用: クラスタに適用されるリソース

# Unmodified Generated Base Resource
apiVersion: v1
kind: ConfigMap
metadata:
  name: my-java-server-env-vars-k44mhd6h5f
data:
  JAVA_HOME: /opt/java/jdk
  JAVA_TOOL_OPTIONS: -agentlib:hprof
---
# Unmodified  Config Resource
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        volumeMounts:
        - mountPath: /etc/config
          name: config-volume
      volumes:
      - configMap:
          name: my-java-server-env-vars-k44mhd6h5f
        name: config-volume

ベース内のベース

ベース自体にもバリエーションとそのベースを作れます。 詳細は Advanced Composition をご覧ください。

graph TD; B1[B1]-->B2[B2]; B2[B2]-->A[A];

results matching ""

    No results matching ""