Kubernetesのyamlファイルに必須の項目について
Kubernetesの勉強をはじめると、設定が記載されたyamlファイルをよく見るようになります。
でもサンプルコードを見ると多くのフィールドがあり、何を見たらいいかわからなくなるという...。
ということで、まずは必須の4つのフィールドをまとめます。
- apiVersion
- kind
- metadata
- spec
サンプルコード
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.14.2
ports:
- containerPort: 80
apiVersion
リソースのオブジェクトを作成時に利用するKubernetesAPIのバージョン
サンプルコードだと「apps/v1」バージョンを使うよ、と設定してます。
Kubernetesでは、マイナーバージョン毎に新機能の追加や、古い機能の非推奨化・廃止が実施されます。
Kubernetesのバージョンアップ時には、リソースのapiVersionの設定が非推奨となった場合、書き換える必要があります。
下記ドキュメントには、各オブジェクトのバージョンの状況や、非推奨APIからの移行方法が記載されてます。
kind
作成するリソースの種類
PodとかDeploymentとか、Kubernetesには色々な種類のリソースがありますが、
yamlファイルが何のリソースの設定かを記載します。
サンプルコードをみると、Deploymentの設定になっています。
metadata
オブジェクトを一意に特定するための情報。
nameとかUID、またnamespaceの情報が記載されます。
サンプルコードを見るとnginx-deploymentという名前のDeploymentになっています。
spec
オブジェクトの望ましい状態を表す設定(いっぱいいろいろ)
リソースの設定を見たければここ見てって感じでしょうか。
サンプルコードではselectorやreplicas、templateが設定されています。
specに記載できるフィールドは、各リソースそれぞれで設定されています。
どんなフィールドが設定できるかは、Kubernetes API リファレンスを見るといいらしいです。
Podに関するのはPodSpec v1 coreを、Deploymentに関するのはDeploymentSpec v1 appsを確認してねとのこと。