この記事はHacobu Advent Calendar 2024の6日目の記事です。
はじめに
こんにちは、あしゅりーです。
普段はテクノロジー本部に所属し、バックエンドエンジニアをしてます。
今回はKubernetesをお試しで使ってみる過程でどういう風なことをしていたかを書いてみようと思います。
k8sを試すところでコケ続けていた
弊社ではマイクロサービスアーキテクチャを採用しており、その基盤技術としてKubernetes(以下、k8s)が重要な役割を果たしています。日々のバックエンド(サーバーサイド)開発においてk8sに触れる機会は多いものの、これまでは感覚的な理解に留まっていました。個人的な興味もあり、より深い技術理解を目指すことにしました。
まずは簡単化のためにGolangで作成したAPIサーバーをデプロイしてみようと考え、Deploymentを書いていたのですが、これがなかなかうまくいきませんでした。またWeb検索でのトラブルシュートをしてみるもうまく情報をヒットさせることができず、この状況を打開できていませんでした。
そこで今回はClaude(Claude 3.5 Sonnet)にテキストコミュニケーションを行うことで解決が図れないか試してみることにしました。
困っていたこと
時系列の要素もあるのですが、大きく分けて以下の4つの点で困っていました。
- Deploymentにおける必要なもの、不必要なものの判断がつかない
- デプロイを試みても失敗してしまうが、トラブルシュートの方法を知らない
- ログの意味を理解できない
- デプロイされたアプリに対してリクエストを飛ばせない
実際にAIに聞いてみた
いくつか実際の例を載せてみたいと思います。
まずは、エラーの原因とトラブルシュートの方法について聞いてみました。ちなみにgo-taskというものを使ってkubectl系のコマンドはまとめています。go-taskはGolang製のタスクランナーで、makefileのような機能をYAML形式のファイルで実現できるツールです。
エラーの内容が見切れているので載せておきます。
task: [k8s:deploy] kubectl apply -f deployment.yaml -n ashlius
Error from server (NotFound): error when creating "deployment.yaml": namespaces "ashlius" not found
Error from server (NotFound): error when creating "deployment.yaml": namespaces "ashlius" not found
task: Failed to run task "k8s:deploy": exit status 1
全て載せるとすごい長さになってしまうので省略しますが、namespaceが作成されていないことを確認できました。結論から話すと原因はgo-taskのyamlでインデントが一つだけずれていることにより、namespaceを作成するコマンドが正しく実行されていなかったことでした。この辺も逐一Claudeにファイルを共有してみてもらいました。
次はアプリのデプロイには成功して実際にリクエストを飛ばしてみようとしたところ、レスポンスを得られなかった件を相談しています。
トラブルシュートの過程で、minikubeのtunnelという機能が便利ということで、そちらを利用してk8sにデプロイしたアプリに対してリクエストを送ることができました。なおtunnelという機能があることを知ったのはClaudeが教えてくれた要素です。
まとめ
初めて触れる技術などをライトに試すといった観点で、AIに助言を求めてみるのは良い選択だったと思っています。具体的には以下のような良かったなと思うポイントがありました。
-
トラブルシュートのための情報を集める手段を提案してもらえる
そもそも情報の集め方を知らなければエラーの解決が難しいです -
原因を示していそうなログの探索を手伝ってもらえる
情報があっても原因を示していそうなログがどれか判断がつきづらいです -
普遍的なワードだが実は専門用語だった、というワードに気づける
例えば、k8sだと「Service」(サービス)KubernetesにおけるServiceとは、 クラスター内で1つ以上のPodとして実行されているネットワークアプリケーションを公開する方法です。
引用元:https://kubernetes.io/ja/docs/concepts/services-networking/service/
-
Claudeの出力の裏取りが格段に早くなる
Claudeの出力で使われるワードを見て、正しい用語でWeb検索できるようになります
もし触ってみたい技術があるんだけど、うまくいかないな〜という場合には、こういった対処の方法もあるということで覚えておいていただければと思います。