はじめに
Kubernetesのyamlファイルの中にある「template」の文言、初学者の方には何を指しているのか分かりづらいと思います。それこそ私も以下のようにコメントアウトされるべき情報と思っていました。
# template size = S or M or L size = M
今回はKubernetesのDeploymentにおけるtemplateについて解説します。
Podの型を指す
結論から言いますがtemplateとは「DeploymentのYAMLファイルにて指定するPodのTemplate」を指しており、具体的にはReplicaSetとして記載された数のPodを生成するために用いる情報です。
以下のサンプルファイルを見れば分かりますがりspec.replicasと同階層の項目にspec.templateがあります。
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
そしてspec.templateの下の階層にて具体的なイメージ名やポート情報を管理していきます。
Deploymentのspec.template
上記視点を持てば、他のDeploymentのYAMLも同様の構図であることが分かります。
以下の記事のyamlファイルも
やはりspec.templateという構造にてレプリカセットで作成するPodの情報を記述しています。
よってスペースを取り以下の設定値が羅列されていることが掴めれば
apiVersion
kind
metadata.name
metadata.labels
spec.replicas
spec.selector.matchLabels.app
spec.template.metadata.labels
spec.template.metadata.spec.containers.name
spec.template.metadata.spec.containers.image
spec.template.metadata.spec.containers.ports.containerPort
template欄が無ければPodの具体的な情報がどこにもないことが分かります。
終わりに
KubernetesのSampleで提示されるDeploymentのyamlファイルで「template」と見た際に「これはレプリカセットで数を指定されているPodの具体的な中身である」とイメージできるようになれば理解が進むと思います。
以上、ご参考になれば幸いです。