
まず連載第1回の簡単な復習をしましょう。Kubernetesはコンテナを本番で運用するために便利な機能をたくさん備えています。Kubernetesではリソースを作成することでコンテナを起動したりネットワークの設定を行ったりします。リソースを扱うためにはマニフェストを利用することがほとんどであるため、マニフェストの読み書きができるようになることがKubernetesを利用するための第一歩です。
コンテナ起動を例にしたマニフェストの解説

Kubernetesでは、クラスタ上でコンテナを起動したり、ネットワークを設定したり、あらゆる操作をKubernetes APIサーバを通してリソースを登録・作成することにより実行します。例えば「NGINXのコンテナを起動したい」と言った時にはKubernetes APIサーバにマニフェストを添付したリクエストを送信し、Kubernetesクラスタはマニフェストを解読し、Podオブジェクトを作成、実際にコンテナを起動……といったことを行います(詳細なアーキテクチャについては後ほど説明します)。
ではKubernetesのマニフェストはどのようなものなのか、具体的にみていきましょう。

マニフェストはYAMLで書くことが多いですが、JSONで書くことも可能です(CLIを利用してYAMLからJSONに変換しているだけで、APIサーバへのリクエストはJSONで行われます)。
これはNGINXのコンテナを起動するためのマニフェストです。KubernetesではコンテナをPodというリソースを利用してデプロイします。
ここで例示されているマニフェストは大枠としては以下のように分かれています。
フィールド | 概要 |
---|---|
apiVersion | 利用するAPIのバージョン |
kind | 作成するリソースの種類 |
metadata | 作成するリソースにつける名前などのメタデータ |
spec | 作成するリソースの仕様 |
metadata、apiVersion、kindは各リソース共通の必須入力項目です。今回はPodを例に出しましたが、共通項目に関しては他のリソースの読み書きする際にも重要になってくるので覚えておいてください。
Pod用マニフェスト各項目に関しての詳細な仕様を知りたい場合は以下のドキュメントを参考にしてください。