Codelab - AI を活用した Kubernetes アシスタントである kubectl-ai を使用して Kubernetes を管理する

1. はじめに

kubectl-ai は、ユーザーの意図を正確な Kubernetes オペレーションに変換する AI を活用したインテリジェントなインターフェースです。これにより、Kubernetes の管理がよりアクセスしやすく効率的になります。

d62a763b2dba5ba7.png

演習内容

  • kubectl-ai(AI を活用した Kubernetes アシスタント)を使用して、GKE クラスタを管理します。

学習内容

  • GKE クラスタを作成し、kubectl-ai. を設定します。
  • クラスタとリソースのトラブルシューティングを行いながら、リソースの管理、作成、パッチ適用などの Kubernetes タスクを実行します。

必要なもの

  • Chrome ウェブブラウザ
  • Gmail アカウント
  • 課金が有効になっている Cloud プロジェクト
  • Gemini API キー

この Codelab は、ユーザーが Kubernetes の基本知識を理解していることを前提としています。

2. 始める前に

プロジェクトを作成する

  1. Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
  3. Cloud Shell(Google Cloud で動作するコマンドライン環境)を使用します。この環境には bq がプリロードされています。Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。

[Cloud Shell をアクティブにする] ボタンの画像

  1. Cloud Shell に接続したら、次のコマンドを使用して、すでに認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されていることを確認します。
gcloud auth list
  1. Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
  1. プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <YOUR_PROJECT_ID>
  1. 次のコマンドを使用して、必要な API を有効にします。これには数分かかることがあります。
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

コマンドが正常に実行されると、次のようなメッセージが表示されます。

Operation "operations/..." finished successfully.

API が見つからない場合は、実装中にいつでも有効にできます。

gcloud コマンドとその使用方法については、ドキュメントをご覧ください。

3. GKE クラスタを設定する

このステップでは、コマンドを実行する GKE クラスタを設定します。前の手順に沿って、正しいプロジェクト ID を設定し、Google Cloud プロジェクトで必要なサービスを有効にしていることを確認します。

GKE クラスタを作成する

Cloud Shell で次のコマンドを実行します。別のゾーンにクラスタを作成する場合は、--zone の値を変更してください。

gcloud container clusters create my-gke-cluster \
       --num-nodes 2 \
       --machine-type e2-standard-4 \
       --zone us-central1-a

完了までにしばらく時間がかかることがあります。完了すると、次のような出力が表示されます。

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster my-gke-cluster in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                             
Created [https://container.googleapis.com/v1/projects/YOUR_PROJECT_ID/zones/us-central1-a/clusters/my-gke-cluster].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/my-gke-cluster?project=YOUR_PROJECT_ID
kubeconfig entry generated for my-gke-cluster.
NAME: my-gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.33.4-gke.1350000
MASTER_IP: 34.59.221.183
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.33.4-gke.1350000
NUM_NODES: 2
STATUS: RUNNING
STACK_TYPE: IPV4

GKE クラスタの詳細を確認する

まず、クラスタの認証情報を取得します。

gcloud container clusters get-credentials my-gke-cluster \
                 --zone us-central1-a

次のような出力が表示されます。

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.

次に、クラスタの詳細を確認します。

kubectl get nodes

次のような出力が表示されます。

NAME                                            STATUS   ROLES    AGE     VERSION
gke-my-gke-cluster-default-pool-c63d5936-2f1z   Ready    <none>   2m58s   v1.33.4-gke.1350000
gke-my-gke-cluster-default-pool-c63d5936-fqtl   Ready    <none>   3m2s    v1.33.4-gke.1350000

最後に、クラスタの Namespace を検証します。

kubectl get namespaces

次のような出力が表示されます。

NAME                          STATUS   AGE
default                       Active   6m16s
gke-managed-cim               Active   4m21s
gke-managed-system            Active   4m6s
gke-managed-volumepopulator   Active   4m
gmp-public                    Active   3m40s
gmp-system                    Active   3m41s
kube-node-lease               Active   6m16s
kube-public                   Active   6m16s
kube-system                   Active   6m16s

4. kubectl-ai CLI をインストールする

ここでは、kubectl-ai CLI のインストール方法として [Quick Install (Recommended)] を使用します。

Cloud Shell で次のコマンドを指定します。

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash

これにより、kubectl-ai CLI がダウンロードされてインストールされます。最後に、次のようなメッセージが表示されます。

✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.

kubectl-ai コマンドが機能しているかどうかを確認するには、次のコマンドを実行します。

kubectl-ai

注: 上記のコマンドは、

creating llm client: GEMINI_API_KEY environment variable not set

kubectl-ai は、geminivertexaiazopenaiopenaigrokbedrock の AI モデルと、ollamallama.cpp などのローカル LLM プロバイダをサポートしています。この例では Gemini(Google)を使用するため、Google AI Studio を介して API キーを取得する必要があります。キーを生成して値の準備ができたら、Cloud Shell で次のコマンドを使用して、キーを指す環境変数 GEMINI_API_KEY を設定します。

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

注: キー値として「GEMINI_API_KEY」のみを使用します。

kubectl-ai をもう一度起動します。今回は、起動してインタラクティブ ターミナルでコマンドを待機していることがわかります。

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

プロンプトで kubectl コマンドに関連するクエリをいくつか試してみます。以下にいくつかの例を示します。

  • What is the command to get the nodes in a cluster?
  • list pods

quit と入力すると、kubectl-ai ターミナルを終了できます。

5. kubectl-ai の使用

kubectl-ai の構成が完了しました。ここで重要なのは、自然言語クエリを使用してクラスタを操作できるようになったことです。他のコマンドも試してみましょう。

次のコマンドを実行してみましょう。

kubectl-ai --model gemini-2.5-flash "list pods in default namespace"

出力は次のようになります。

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

自然言語クエリを同等の kubectl コマンドに変換したことに注目してください。

また、kubectl-ai インタラクティブ ターミナル(>>>)内に移動し、引き続き操作できることに注意してください。

次のコマンドを実行します。

how many pods are there in kube-system namespace

出力は次のとおりです。

>>> how many pods are there in kube-system namespace

Running: kubectl get pods -n kube-system --output=jsonpath='{.items[*].metadata.name}'

There are 18 pods in the kube-system namespace.

Single Shot Command

前のセクションでは、kubectl-ai を起動してインタラクティブ ターミナルに留まり、後続のコマンドを実行する方法について説明しました。これは、自律的に実行し、次のコマンドを待つインタラクティブ プロンプトを表示しないコマンドには適していません。

--quiet パラメータを指定してシングル ショット コマンド メソッドを入力します。

デプロイを作成するコマンドの例を次に示します。

kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions

これにより、次のように create deployment コマンドが実行されます。

Running: kubectl create deployment nginx --image=nginx --replicas=2

I have created a deployment named nginx with 2 replicas. You can verify this by running kubectl get deployments .

このようにして、現在の GKE クラスタとやり取りするように kubectl-ai を設定できました。

いくつかのコマンドを実行して、kubectl-ai を使用するモードを説明しました。出力を他のツールにパイプしたり、エラーを把握したり、kubectl-ai のさまざまなセッション実行間の永続性を把握したりできます。ツールのドキュメントの使用方法のセクションを参照してください。

6. (省略可)kubectl-ai チャット インターフェース

状況によっては、標準の Chat インターフェースで kubectl-ai を操作する方が便利な場合があります。Kubectl-ai には独自の UI インターフェースが用意されています。Cloud Shell で次のコマンドを実行して起動できます。

kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080

ユーティリティがインターフェース チャット インターフェースで起動し、次のような出力が表示されます。

listening on http://[::]:8080

Cloud Shell で [ウェブでプレビュー] をクリックします。

f990712162e8e924.png

[ポート 8080 でプレビュー] をクリックします。ブラウザが起動し、以下に示すウェブチャット インターフェースが利用可能になります。

90fce57ad7f16842.png

チャット インターフェースで実行したクエリの例を次に示します。

6a304d227d3fa5a6.png

このインターフェースで他のクエリを試してみます。また、実行できる他の自然言語クエリに関するヒントも提供します。

7. クリーンアップ

Google Cloud アカウントに継続的に課金されないようにするには、このワークショップで作成したリソースを削除することが重要です。

このラボの前のセクションで作成した GKE クラスタが不要になった場合は、次のコマンドで削除できます。

gcloud container clusters delete my-gke-cluster --zone=us-central1-a

8. 完了

お疲れ様でした。kubectl-ai(AI を活用した Kubernetes アシスタント)を使用して、自然言語クエリで Kubernetes クラスタを管理できました。詳しくは、次のセクションに記載されているリソースをご覧ください。

9. リソース