‫これまで､ 私たちはYAMLが､ ある可能性があることを議論してきました...
‫ルートオブジェクトは4つあり､
‫そのうちの3つについて簡単に説明しました｡
‫これはスペックに関わることです｡
‫やってほしいことの詳細､ ですね｡
‫最初にAPIがあったので､ どのバージョンのAPIかわかっています｡
‫話したいリソースがわかっていて､
‫手を出す｡
‫そうすると､ メタデータで名前がわかるんです｡
‫それがあるんです｡ それ以降は､ スペック次第で世界が広がります｡
‫最初のコマンドは､ 特定のリソースタイプに置くことができるすべての異なるキーをリストアップする方法を学ぶことです｡
‫最初に覚えてほしいコマンドはkubectlの説明､
‫次にリソースタイプです｡
‫YAMLにある種類です｡
‫次に --再帰的
‫これで､ YAMLファイルでサポートするすべての異なるキーが表示されます｡
‫サービスだけに､ たくさんついてくるのがわかりますね｡
‫ちょっと無理がありますね｡
‫すごくたくさん入っているんです｡
‫もちろん､ それらが何をするものであるかは書かれていない｡
‫でも､ これだけあれば､ 少なくともざっとはわかりますよね｡
‫この機能は､
‫YAMLをビルドするときに､ そのものの名前や作成タイムスタンプを正確に覚えていない場合に便利です｡
‫タイムスタンプ作成でしょうか？
‫複数形ですか？ 単数か？
‫さっと調べる程度でOKです｡
‫でも､ これは､ これらが何をするものなのか､ どれが必要なのか､ そういうことを教えてくれるわけではありません｡
‫少し変わったコマンドを使ってドリルダウンすると､ より詳細な情報を得ることができます｡
‫もう一度kubectlのexplain
‫servicesをやってみましょう｡ 今回はドット記法でYAMLをドリルダウンしていきます｡
‫スペックにしかこだわらないというか｡
‫I'm with you a . のスペックです｡
‫今回は､ 仕様のサブキーと､ それに関するちょっとした説明だけが返ってきました｡
‫そして､ どのような価値を支えているのか､ ですね｡
‫ブーリアンであるかどうか？ オブジェクトの地図でしょうか？
‫そんな感じですね｡ ちょっとした参考になりますよ｡
‫これで､ ドキュメントに飛び火するのを防げそうです｡
‫ここを見れば､
‫少しは回避できる｡ 特に1つの属性を探すだけなら､
‫これでも多い方です｡
‫そのドット表記をどんどん掘り下げていけばいいんです｡
‫スペックすれば｡ タイプはサービス YAML
‫内の特定のキーであり､ ロードバランサーのタイプを教えてくれます｡
‫このコースの最初のほうのサービスの話を覚えているのであれば､
‫これはデフォルトでクラスタIPである可能性があります｡
‫そのままだと､ クラスタのIPとか､ ノードのポートとか､
‫ロードバランサーとかをやるだけです｡
‫そこを指定するのです｡
‫YAMLファイルのspecの下､ そしてtypeのキーに入る必要があるのはご存知の通りです｡
‫この場合､ YAMLを書き始めればいいんですね｡
‫種類はサービスになることが分かっています｡
‫APIバージョンは､ このタイプではv1だと書いてあります｡
‫また､
‫先ほどのようにapi-versionsコマンドで確認することもできます｡
‫そして､ 自分の価値を入れることができます｡
‫これは､ クラスタIPが大文字のCと大文字のIPであることを示す､
‫ワーキングバリューのリストですね｡
‫インターネット上で検索する手間を省くことができます｡
‫誰かが時代遅れなことを言っているか､ 正しいことを言っているか､
‫まったくわからない｡
‫私はこういうのが好きなんです｡
‫このドット表記がどこまで可能なのかを示すために｡
‫デプロイメント・スペックを見ると､ サブスペックがあるため､
‫これまで話していなかったことがあります｡
‫あるリソースを他のリソースのサブオブジェクトとして持つことができます｡
‫この場合､ データを保存するためのボリューム､ ですね｡
‫デプロイメント内に好きなだけボリュームを用意し､ それをコンテナに接続することができるのです｡
‫それらは確かに独自のリソースタイプですね､
‫ボリュームの｡
‫この場合､ スペックを2回見ることになります｡
‫このコマンドで展開のためにエンターキーを押すとしたら｡
‫spec､
‫その中のひとつがテンプレートでしょう｡
‫そうすれば､ テンプレートを入力するだけでいいんです｡
‫そして､ そこに入れることができるすべての異なるキーがリストアップされ､
‫そのうちのひとつがテンプレートの仕様です｡
‫厳密には､ スペック的には
‫そしてその下にポッドのテンプレートの仕様があります｡ デプロイメントには独自の仕様があるので､
‫その仕様の下にポッドのテンプレートがあるのです｡
‫それから､
‫コンテナの仕様が書かれていて､ ここにボリュームがあるかもしれません｡
‫ボリュームと､ それからnfsは､ 私が使えるボリュームのタイプだからです｡
‫それから､ NFSで中で使うサーバー｡
‫さあ､ どうぞ｡ 説明文やバージョンの情報を得ることができた｡
‫ちなみに､
‫Kubernetesのもう一つの癖は､ コマンドラインのドキュメントがバージョンに関して少し古いということです｡
‫なぜなら､
‫これは以前からのやり方だからです｡ 現在､ デプロイメント用の新しいアプリ/v1があるそうです｡
‫たまたま､
‫なぜこうなのか探っていたら､ 完全に非推奨になるまでドキュメントでこのままにしていることがわかったからです｡
‫とにかく､ 最終的にドット記法でパイプを通すのはおわかりいただけたと思います｡
‫私なら､ ただ展開するだけです｡ そうしたら､ それを見ますね｡
‫そして､ 私は. のスペックなど､ 様々なものがあります｡
‫そうすれば､ 最終的にYAMLに入れるべき正しいキーと値を見つけることができるだろう｡
‫いつでも他の人の例を使ってきてください｡
‫最終的には､ 私かドキュメントのどちらかの例から始めることになると思います｡
‫それから､ 私がここで紹介する方法で､ 純粋なバニラファイルを作ることができるかどうかを確認します｡
‫そうすると､
‫結局は自分の小さなリソースになるわけですよね｡ これらすべてのリソース YAML
‫のあなた自身の小さなコピーです｡ それは､ あなただけの知識の宝庫｡
‫それが､ あなたの会社で使うものになるのです｡
‫デプロイメントの作成方法に関する標準や､ サービスの作成方法に関する標準もあるかもしれません｡
‫もしかしたら､ まだ話していない､ 特別なラベルや注釈がつくかもしれませんね｡
‫もしかしたら､ 特別なテンプレート機能を持つかもしれない｡
‫とにかく しかし､ ほとんどのチームは､ 完全にゼロからタイプするのではなく､
‫自分たちのデフォルトをレポのようなものに格納して､ そこから引っ張ってくることにしています｡
‫そうですね｡ composeではそのようなことはしませんし､
‫KubernetesのYAMLでもそのようなことはしたくありません｡
‫最後に､
‫あなたが開発者側であれば､
‫APIドキュメントに感謝することでしょう｡
‫ただ､ オペレーティングに詳しい人が理解できるような形には必ずしもなっていないんです｡
‫私はどちらのバックグラウンドも持っていますが､
‫swaggerやその他のAPIのドキュメントを読み慣れていない人にとっては､
‫APIのドキュメントが少し威圧的であることは間違いないでしょう｡
‫ここでは､ 例えば115以下のAPIのKubernetesのリファレンスをピックアップしているので､
‫バージョン管理されていますね｡
‫左側には､ すべてのワークロードAPIのメニューが表示されていますね｡
‫これらがほとんどになると思います｡
‫そして､ サービスAPIです｡
‫これらのものは､ サービスやイングレス､ エンドポイントなど､
‫ワークロードの上に置かれます｡
‫そして､ この下にコンフィグとストレージがあります｡
‫そうしているうちに､ 実はもっと非推奨の､ あるいはレガシーなAPIバージョンにたどり着くことになる｡
‫を探ることができるのでは？ このように､ アルファとベータがたくさん出てきます｡
‫どれがあるかは､ なんとなくわかると思います｡
‫もし私がデプロイメントに素早く行き､ ここに来れば､
‫どのように見えるかのkubectlの例をいくつか得ることができます｡
‫ここをスクロールしてスペックを探すこともできるんです｡
‫スペックというのは､ 先ほど見ていたような詳細な情報を得るためのものです｡
‫仕様の下には､ そのオブジェクトに関するさまざまなオプションが表示されます｡
‫デプロイメント仕様のテンプレートに飛び込むと､ 少し前にドット記法に従っていたのを覚えている人は､
‫それがポッドテンプレートに入ることになります｡
‫そして､ その中に飛び込んで､ テンプレートに飛び込むものをすべて見ることができます｡
‫そのためには､
‫少し探って､ 探しているオブジェクトやキーを見つけることが必要です｡
‫コマンドラインから作業するのが少し楽なのですが､
‫コマンドラインではバージョンも扱えません｡
‫クライアントのバージョンとサーバーのバージョンが異なる場合､
‫APIドキュメントを必ず確認するようにしてください｡
‫コマンドラインで､ 異なるバージョンの情報を取得する方法は､
‫私の知る限り､ 実際にはありません｡
‫いつもクライアントのバージョンだけなんです｡