こんにちはサイオステクノロジーの前田です。
Kubernetesを利用するときに多くの人が問題になるのがYAMLです。通称『YAMLの壁』といわれるものです。マニフェスト(設定)ファイルをYAMLで書くのですが、似たような名称、似たような書き方、自動で生成されるもの、自分で設定されるものが同じファイルに記載されてしまいます。そのため、初心者はどこに注目したらいいかわからないです。説明書を読んでも特定の部分を●●は◆◆という風に、全部を説明せず部分的な説明の箇所も多いため、やりたいこと全部を達成するまでにすごく苦労します。
- YAMLの壁の原因
- インデントの数やスペースの数まで正確にする必要があること(記述の厳密性)
- 多くの設定ファイルがあり、重要な内容とそれ以外が区別がつきにくい(apiの種類の豊富さのため把握しづらくなる問題)
- 必須な項目と書かなくていい項目、自動保管される項目があり、パッと見わかりにくい。(パラメーターの多さで視認性はよくなるが、多すぎて直観的でなくなる問題)
物理学的な次元を多く取り扱う方や統計学的な観点が平気な人からすると綺麗で美しい文章で理解しやすいです。しかし、実務においてはみんながみんなそういうわけにもいきません。仕事で無駄な勉強や努力したくない人もいるでしょう。私はそうです。
chatGPTで話題のAIを利用すると、今まで理解しづらかった箇所も簡単に調べて説明してくれます。そのため、簡易にYAMLの壁を壊すことができます。本記事ではChatGPTではなく別のAIであるMicrosoft Bingを利用してYAMLの壁攻略方法を説明していきます。今回はKubernetesのアプリケーション部分のworkload(ワークロード)部分を攻略していきます。
利用するAI技術 Microsoft Bing
EgdeブラウザでMicrosoft Bingのチャットを利用していきます。windowsユーザでMicrosoftのoffice等を購入しているユーザならログインのみで利用可能な場合もあるぐらい簡単に使えます。ChatGPTと違い、情報収集元や新しい情報等も教えてれます。
詳細はリンクを見てください。
『chatGPTとMicrosoft Bingの違いを表で教えてください』と聞いてみましょう。すると下記と返してくれます。
聞いた内容を判断して情報をを教えてくれます。下に詳細情報もあるため深掘りもしやすいです。
厳密性や正当性は考慮する必要性があります。しかし初期調査や簡易判断をするための調査時間を大幅に減らしてくれます。
Kubernetesのワークロードとは
『Kubernetesのワークロードについて100文字程度で説明してください』聞いていきましょう。
下記の回答をしていただけます。
『Kubernetesのワークロードとは、Kubernetes上で実行中のアプリケーションのことです。ワークロードは、1つ以上のコンテナから構成されるPodというリソースの集合として管理されます。PodはネットワークやIPアドレスを共有するため、コンポーネント間の連携が容易になります。』
さらに『コンテナとpodとdeploymentについての違いを表で説明してください』と聞きます。
※ちなみに毎回同じ答えを返答してくれるわけではないです。色はついていません。今回は見やすいように少し修正しています。
コンテナ |
pod |
deployment |
アプリケーションの実行環境を隔離する技術 |
1つ以上のコンテナからなる集合体で、Kubernetes上でコンテナを管理する最小単位 |
podの作成や更新を管理するオブジェクトで、アプリケーションデプロイの基本単位 |
コンテナはpodによってまとめられ、podはdeploymentによって制御されるという関係になります。podはそれぞれIPアドレスで通信するため、コンポーネント間の連携が容易になります1。deploymentは理想的な状態を宣言的に記述することで、podの作成や更新を自動化します。
さらにもう一声『絵に直すことはできますか?』と聞きます。
上記のような絵を作成してくれます。驚きです。早すぎです!!文字だけでわかりにくい内容も絵で説明してくれるため、学習効率が上がり、調べる時間がすごく減ります。最初は上記図を理解しておけばいいです。不明確なことや気になったことはチャットで聞けば8割がたは解決します。
ワークロードにかかわる他の内容
ご存知の方も多いと思いますが、deployment以外にもワークロードに関するものがあります。YAMLを見ていると全部知らないといけないという思いが発生して壁を大きくしてしまいますが、最低限必要なことが減れば壁はだいぶ小さくなります。
『kubernetesのワークロードのリソースを複数あげてください。』と聞きます、
このように聞きながら対応してください。Kubernetesのための多くの「お気に入りリンク」が減ります。アプリケーションをデプロイする設定のもろもろのことをワークロードといい、いろんな設定でアプリケーションを動かすというこを理解しておきます。後はわすれても対話しながらその場で対処すればよくなります。
YAMLの壁攻略_ワークロード
実際のYAMLの壁を攻略してみましょう。簡易にアプリケーションをデプロイするためにも、ツールなしで、一から記載はとても大変です。サンプルの作成からおしえてくれたらとても楽できて幸せですよね。聞くだけはタダです。聞いてみましょう。
サンプルの作成
『nginxのコンテナを動かす、appAのpodを2台動かすdeploymentのyaml形式のマニフェストを教えてください』と記載します。
サンプルを簡単に作成してくれます。
デプロイテスト
それでは上記を利用してデプロイしてみましょう。セキュリティが高いOpenShiftを利用してデプロイしていきす。
- 環境条件
- kubernetesクラスタ: OpenShift4.12
- 基盤: AWS
先ほどのyamlファイルをデプロイしていきます。
エラーがでました。使えないと考える人がいるでしょう。少しお待ちください。このエラー文をチャットに伝えたらどうなるでしょう?
エラー文の翻訳だけでなく、問題の解決方法まで伝えてくれます。文章を修正して再度適応すると。。。。
デプロイ成功します。
今回は簡単な内容ですが、簡単にデプロイできました。今の状態でKubernetesのYAMLの壁はありましたでしょうか?特に壁など発生しなかったのではないでしょうか?
AI贔屓になっているかもしれませんが、YAMLの壁の原因をAIを使うとどうなるか考えましょう。
- YAMLの壁の原因
- インデントの数やスペースの数まで正確にする必要があること (記述の厳密性)
- AIで解決:AIにサンプルファイルや基礎構文を用意してもらう。インデントの数等のチェックが少なくなるため、負担が減り壁にならない。
- 多くの設定ファイルがあり、重要な内容とそれ以外が区別がつきにくい(apiの種類の豊富さのため把握しづらくなる問題)
- AIで解決:AIがサンプルファイルを用意してくれるから、必要な項目(kind等)だけに絞ってくれる。たりない項目はAIに日本語で聞いて回答してくれます。公式ドキュメントの大量の勉強や理解が減るため壁が小さくなります。
- 必須な項目と書かなくていい項目、自動保管される項目があり、パッと見わかりにくい。(パラメーターの多さで視認性はよくなるが、多すぎて直観的でなくなる問題)
- AIで解決:AIがわかりやすい形で補足してくれる。日本語だけど専門用語的なわかりにくさが減りYAMLの壁が小さくなる
- インデントの数やスペースの数まで正確にする必要があること (記述の厳密性)
言葉で書いていますが、まずは利用してみてください。実体験したほうがすごさがわかると考えています。
最後に
Kubernetesやコンテナ技術は素晴らしいものです。利用コストはそこまでないのですが、学習コストが高いことが問題になっていました。しかしAI技術を利用することにより学習コストを下げることが可能になりました。全部が全部はAIで作成できないですし、セキュリティ等の問題もあるかもしれません。しかし、便利な道具の一つとして使わない理由はありません。便利な道具を使って仕事の負担を減らしてみんなで楽をしましょう。この記事がKubernetsに悩んでいる方の一助になることを望みます。
※サムネイルもAIを利用しています。こんなにポップ調な感じにするつもりはなかったです。