はじめに
こんにちはサイオステクノロジーの小野です。前回はOpenShift LightspeedというAIチャットアシスタント機能の構築方法について説明しました。今回はそのOpenShift Lightspeedを使って数々の問題を解決する様子をお届けします。なお2025年1月23日の現時点ではテクノロジープレビューのため、不具合や正式版と異なる場合があることにご了承ください。
OpenShift Lightspeed使ってみた
OpenShift Lightspeed前提条件
- Lightspeed環境構築済み:前回投稿した記事を参考にしてください
- 使用LLMプロバイダ:Azure OpenAI
- 使用LLM:GPT-4o
Lightspeed機能確認
LightspeedにはOpenShiftを利用する上で便利な機能が備わっています。それを紹介します。
質問に対する応答
最初にLightspeed自身のことについて質問します。
このようにOpenShiftLightspeedの概要について回答します。また、関連ドキュメントには回答に関連する公式ドキュメントのリンクが添付されています。
連続した質問に対する応答
Lightspeedは会話履歴を記憶しており、連続した質問に対しても回答できます。
例としてIDP設定について質問します。
IDPの種類の説明やOAuthの設定方法、LDAPの場合の設定方法などについて回答します。次にGitHubの場合の設定方法について質問します。
GitHubをIDPとして設定する方法について回答します。このように連続した質問に対しては会話履歴に関連づいた回答をします。
リソースの情報を添付した質問
LightspeedはOpenShiftのリソースのyamlやイベント、ログを添付して質問することができます。cluster-version-operatorというOpenShiftのバージョン管理を行っているpodを例に質問をします。
最初にpodのyamlを添付して、OpenShiftクラスターの自動更新設定について質問します。cluster-version-operatorの詳細画面に移動してチャット欄の+ボタンからYAMLを選択します。
yaml内から情報を読み取り、自動更新設定がオフになっていることを回答します。
次にlogを添付してエラーの有無を確認します。logやeventは添付する量を調整できるので、無駄にLLMリソースを消費せずに質問ができます。
重大なエラーはなかったが、警告があることを回答します。このようにリソースを添付して送信することでOpenShiftの問題を解決できます。
Alertのトラブルシューティング
リソースのyamlのみならず、Alertの情報を添付して質問することも可能です。AlertmanagerReceiversNotConfiguredというAlertの通知設定をしていないAlertを例にして質問をします。
Alertがなぜ発生しているのか、その対処法について回答します。このようにAlertのトラブルシューティングにも役立ちます。
日本語の質問
Lightspeedは英語で質問することを想定していますが、日本語で質問することも可能です。
先ほどのAlertの質問を日本語でします。
Alertの説明と対処法を日本語で回答します。
簡単な質問への回答
Lightspeedに簡単な質問をした場合の回答を紹介します。
基本的な用語の質問
コンテナ関連の用語は専門用語が多く、把握するのが大変です。そこでOpenShiftの基本的な用語についての質問をします。
Deployment
最初にDeploymentとは何か質問します。
Deploymentの概要について回答します。またDeploymentConfigがOpenShift 4.14以降で非推奨になっている補足情報も回答します。
Pod
次にPodとは何か質問します。
Podについての概要を回答します。
Operator
最後にOperatorとは何か質問します。
Operatorについての概要を回答します。このようにOpenShiftで用いられる用語を聞くと、参考になるドキュメントへのリンクを含めて解説してくれます。
リソースのyaml作成
OpenShiftのリソースを作成するには複雑なyamlファイルを書かなければなりません。そこでリソースのyamlの例を出力します。
Secret
最初にSecretのyamlの例について質問します。
apiVersion: v1
kind: Secret
metadata:
name: example-secret
namespace: my-namespace
type: Opaque
data:
username: <base64 encoded username>
password: <base64 encoded password>
stringData:
hostname: myapp.mydomain.com
Secretリソースの例を出力します。dataフィールドに入れる値はbase64でエンコードする必要があることやstringDataを用いれば自動的にbase64にエンコードされてdataフィールドに格納されることを説明します。
Service
次にServiceのyamlの書き方について質問します。
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: my-namespace
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
Serviceリソースの例を出力し、各フィールドに何が書かれているのか解説します。このようにリソースのyamlの例を聞くことで、yaml内の各フィールドの意味を理解して書くことができるようになります。
よくある質問への回答
OpenShiftを利用する際によくある疑問の解消を行った例を紹介します。
Podのオートスケーリング設定
OpenShiftのpodをオートスケーリングする設定方法について質問します。
Webコンソール上での方法を回答しているので、それに従います。適当なDeploymentのページを開きます。
アクションのドロップダウンリストからHorizontalPodAutscalerの追加を選択します。
HorizontalPodAutoscalerの設定をすることでオートスケーリングが可能になります。
しかし、CPU およびメモリー使用率を使用する場合、CPU およびメモリーリソースの制限を設定する必要があるそうなので、それについても追加で質問します。
Deploymentにリソース制限を付ける必要があることが分かったのでリソース制限の設定をします。
リソース制限をしてHorizontalPodAutscalerの設定をするとCPUおよびメモリー使用率によるオートスケーリングができるようになります。
最後にHorizontalPodAutscalerを作成するとオートスケーリングが設定されました。
このようにLightspeedに質問することでpodの自動スケーリング設定を行うことができます。
PodのデプロイをNamespace単位でノード指定
OpenShiftで特定のNamespace内のpodを特定のノードにデプロイする設定を質問します。
Namespace全体のPodのノード指定はプロジェクトノードセレクターを設定すれば可能と回答しました。Namespaceのyamlのannotaionsに指定したいノードのラベルを設定します。
これで、このNamespace内ではannotaionsに設定したラベルを持つノードにpodがデプロイされるようになります。試しに設定したNamespace内にPodを作成します。
作成されたPodを確認するとノードセレクターに指定したラベルが設定されています。また、ノードのラベルを確認すると指定したラベルがあることが確認できます。
おわりに
このようにOpenShift LightspeedはOpenShift Webコンソール上で気軽に質問することで、OpenShiftの不明な点や問題点に対して、迅速な解決の手助けをしてくれます。まだテクノロジープレビューで粗い部分もありますが、正式版がリリースされた際はぜひ使ってみてください。