HUOXIU

Kubernetesをもっとシンプルに!絶対に知っておくべき8つのAIツール - パート2

パート1では、OpenAIの人気オープンソースツール4つを紹介しました。本日のパート2では、さらに3つのOpenAIのオープンソースツールを紹介し、Appilotに関連するコンテンツをいくつかご紹介します。

Kubectl-GPT

Kubectl-GPTは、 GPTモデルを用いて自然言語入力からkubectlコマンドを生成するkubectlプラグインです。このプラグインは、Kubernetesクラスター内でリクエストを実行するためのkubectl GPTコマンドを導入します。

インストール

自家製

 # Homebrew をインストール: https://brew.sh/ brew tap devinjeon/kubectl-gpt https://github.com/devinjeon/kubectl-gpt
kubectl-gpt をインストールします

クルー

 # Krew をインストール: https://krew.sigs.k8s.io/docs/user-guide/setup/install/kubectl krew index add devinjeon https://github.com/devinjeon/kubectl-gpt
kubectl krew で devinjeon/gpt をインストールします。 

コマンドライン ツールを実行し、 kubectlコマンドを生成するには、自然言語入力を使用する必要があります。

 kubectl gpt "<やりたいこと>" 

前提条件

始める前に、OpenAI API キーをOPENAI_API_KEYという名前の環境変数として設定してください。

次に.zshrcまたは.bashrcファイルに次の行を追加します。

 OPENAI_API_KEY=<あなたのキー>をエクスポートします

もちろん、これは OpenAI GPT API でサポートされている言語によって異なります。

 # 英語kubectl gpt "すべての名前空間内のすべてのポッドの作成時間とポッド名を出力します。"kubectl gpt "すべてのポッドのメモリ制限とリクエストを出力します。"kubectl gpt "coredns デプロイメントのレプリカ数を 2 に増やします。"kubectl gpt "コンテキストを kube-system 名前空間に切り替えます。" 

キューブ・コパイロット

これはOpenAIを搭載したKubernetes Copilotです。主な機能は次のとおりです。

  • ChatGPT (GPT-4 または GPT-3.5) を使用して、Kubernetes クラスターの操作を自動化します
  • Kubernetes ワークロードの潜在的な問題を診断および分析します。
  • 提供された手順に従って Kubernetes マニフェストを生成します。
  • ローカルの kubectl および trivy コマンドを使用して Kubernetes クラスターにアクセスし、セキュリティの脆弱性をスキャンします。
  • デバイスを離れずに Web にアクセスし、Google 検索を実行できます

インストール

Kubernetes で実行する場合:

オプション 1: Helm で Web UI を使用する (推奨)

 # オプション 1: OpenAIexport OPENAI_API_KEY="<replace-this>"helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
  --set openai.apiModel=gpt-4 \
--set openai.apiKey=$OPENAI_API_KEY# オプション 2: Azure OpenAI Serviceexport OPENAI_API_KEY="<replace-this>"export OPENAI_API_BASE="<replace-this>"helm install kube-copilot kube-copilot \
--repo https://feisky.xyz/kube-copilot \
  --set openai.apiModel=gpt-4 \
  --set openai.apiKey=$OPENAI_API_KEY \
--set openai.apiBase=$OPENAI_API_BASE# サービスへのリクエストの転送kubectl port-forward service/kube-copilot 8080:80echo "copilot を使用するには、http://127.0.0.1:8080 にアクセスしてください" 

オプション2: CLIでkubectlを使用する

 kubectl 実行 -it --rm コパイロット \
  --env="OPENAI_API_KEY=$OPENAI_API_KEY" \
--restart=しない\
--image=ghcr.io/feiskyer/kube-copilot \
-- execute --verbose 'クラスター内で最大メモリを使用しているポッドはどれですか' 

ローカルにインストール:

次の pip コマンドを使用して copilot をインストールします。

 pipでkube-copilotをインストールする

設定

  • kubectlローカル コンピューターにインストールされており、kubeconfig ファイルが Kubernetes クラスターにアクセスできるように構成されていることを確認します。
  • コンテナ イメージのセキュリティの問題を評価するには、 trivyをインストールします ( auditコマンド用)。
  • ChatGPT 機能を有効にするには、OpenAI API キーを環境変数OPENAI_API_KEYとして設定します。
  • Azure OpenAI サービスの場合、 OPENAI_API_TYPE=azureOPENAI_API_BASE=https://<replace-this>.openai.azure.com/も設定する必要があります。
  • Google検索はデフォルトで無効になっています。有効にするには、 GOOGLE_API_KEYGOOGLE_CSE_IDを設定してください。

CLI 方式の使用: ターミナルで直接実行します。

使用方法: kube-copilot [OPTIONS] COMMAND [ARGS]...
OpenAI を搭載した Kubernetes Copilot
オプション:
--version バージョンを表示して終了します。
--help このメッセージを表示して終了します。
コマンド:
特定のリソースの問題を分析する
ポッドのセキュリティ問題を監査する
ポッドの問題を診断する
プロンプトの指示に基づいて操作を実行する Kubernetes マニフェストを生成する

Pod のセキュリティ問題の監査: kube-copilot audit POD [NAMESPACE]を使用して、Pod のセキュリティ問題を監査できます。

使用方法: kube-copilot audit [OPTIONS] POD [NAMESPACE]
PodOptions のセキュリティ問題を監査します。
--verbose コパイロット実行ステップの詳細情報を有効にする
--model MODEL コパイロット実行に使用する OpenAI モデル。デフォルトは gpt-4
--help このメッセージを表示して終了します。 

Pod の問題の診断: kube-copilot diagnose POD [NAMESPACE]を使用して Pod の問題を診断できます。

使用方法: kube-copilot diagnose [OPTIONS] POD [NAMESPACE]
PodOptions の問題を診断します。
--verbose コパイロット実行ステップの詳細情報を有効にする
--model MODEL コパイロット実行に使用する OpenAI モデル。デフォルトは gpt-4
--help このメッセージを表示して終了します。 

K8s オブジェクトの潜在的な問題を分析する: kube-copilot analyze RESOURCE NAME [NAMESPACE]を実行すると、特定のリソース オブジェクトの潜在的な問題が分析されます。

使用方法: kube-copilot analyze [オプション] リソース名 [名前空間]
特定のリソースに関する問題を分析するオプション:
--verbose コパイロット実行ステップの詳細情報を有効にする
--model TEXT コパイロット実行に使用する OpenAI モデル。デフォルトは gpt-4
--help このメッセージを表示して終了します。 

kube-copilot execute INSTRUCTIONSコマンドは、プロンプトに基づいて操作を実行します。また、質問にも使用できます。

使用方法: kube-copilot execute [OPTIONS] INSTRUCTIONSプロンプトの指示に基づいて操作を実行します
オプション: --verbose コパイロット実行ステップの詳細情報を有効にする
--model MODEL コパイロット実行に使用する OpenAI モデル。デフォルトは gpt-4
--help このメッセージを表示して終了します。 

Kubernetes マニフェストを生成します。`kube kube-copilot generateコマンドを使用し、プロンプトに従って Kubernetes マニフェストを作成します。マニフェストを生成すると、それを適用するかどうかを確認するメッセージが表示されます。

使用方法: kube-copilot generate [OPTIONS] INSTRUCTIONSKubernetesマニフェストを生成する
オプション:
--verbose コパイロット実行ステップの詳細情報を有効にする
--model TEXT コパイロット実行に使用する OpenAI モデル。デフォルトは gpt-4
--help このメッセージを表示して終了します。 

Kubernetes ChatGPTボット

これはKubernetesの問題を扱うChatGPT1ボットです。Prometheusアラートの解決方法をAIに尋ね、簡潔な回答を得ることができます。

PrometheusはWebhookレシーバーを介してボットにアラートを転送します。その後、ボットはOpenAIにアラートの修正方法を尋ねるクエリを送信します。ユーザーは結果を辛抱強く待つだけです。

このボットは、Kubernetesアラートに応答するためのオープンソースプラットフォームであるRobusta.devを使用して実装されています。また、マルチクラスターKubernetesオブザーバビリティのためのSaaSプラットフォームも提供しています。

設定するには Slack ワークスペースが前提条件となります。

その後は、次の操作を行うだけです。

  • Helmを使ってRobustaをインストールする
  • ChatGPTプレイブックをロードしますgenerated_values.yamlに以下の内容を追加します。

プレイブックリポジトリ:
チャットgpt_robusta_actions:
url: "https://github.com/robusta-dev/kubernetes-chatgpt-bot.git"customPlaybooks:# すべての Prometheus アラート トリガーに「ChatGPT に質問」ボタンを追加します。
- on_prometheus_alert: {} アクション:
- チャットgptエンリッチャー: {} 

  • OpenAI APIキーをgenerated_values.yamlに追加します。既存のglobalConfigセクションを編集し、重複するセクションを追加しないようにしてください。

グローバル設定:
chat_gpt_token: ここにキーを入力してください

  • 新しい値を適用するには、Helm アップグレードを実行します。

ヘルムアップグレード ロブスタ ロブスタ/ロブスタ
--values=生成された値.yaml
--set clusterName=<クラスター名> 

  • PrometheusアラートをRobustaに送信します。または、RobustaにバンドルされているPrometheusスタックを直接使用することもできます。

デモンストレーション

まず、破損したポッドをデプロイして、保留状態のままにします。

 kubectl apply -f https://raw.githubusercontent.com/robusta-dev/kubernetes-demos/main/pending_pods/pending_pod_node_selector.yaml 

通常の遅延をスキップして、Prometheus アラートを直ちにトリガーします。

 robusta プレイブックは prometheus_alert をトリガーします。alert_name=KubePodCrashLooping namespace=default pod_name=example-pod 

Slackにボタン付きのアラートが表示されます。ボタンをクリックすると、ChatGPTにアラートに関する情報を問い合わせることができます。

アピロット

Appilotは、DevOpsシナリオ向けのオープンソースAIアシスタントです。AI大規模言語モデルの機能を最大限に活用し、ユーザーが自然言語を直接入力できるようにすることで、Kubernetes管理エクスペリエンスをさらに簡素化します。

Appilotは、大規模な言語モデルに基づく推論を実行し、ローカルPC上で実行できます。ユーザーは、ニーズや利用習慣に応じてAppilotを任意のプラットフォームに統合することができ、自然言語を入力するだけでバックエンドプラットフォームの機能を呼び出し、アプリケーション管理、環境管理、Kubernetesデバッグなどのタスクを容易に実行できます。

Appilot プロジェクトは https://github.com/seal-io/appilot にあります。