🎃

k8sgpt-operator 開発メモ (ARM Mac 向け)

2024/01/10に公開

Kubernetes クラスタ構築

AMD64 コンテナ環境セットアップ ~ Lima VM ~

https://github.com/lima-vm/lima

  • Getting Started については README.md 参照
  • Limaでは、事前に定義した内容でVMを作ることができます
  • 今回は、amd64 の VM を作成したいため、docker.yaml に以下の行を追記します
    • arch: "x86_64"
  • 自前でLLMをホスティングする際はメモリの割り当てを多くすることをお勧めします
    • 私は 16GB ほど
  • VMの起動
    • limactl start docker.yaml
  • Docker コンテキストの追加
    • docker.yaml を参考に起動すると、最後に実行して欲しいスクリプトの出力があるので、そちらを反映させます

クライアント側に Docker Client のセットアップ

  • docker cli のインストール
    • brew install docker
  • docker-buildx のインストール (Makefileで指定されているのでインストールします)
    • brew install docker-buildx
  • Docker の認証情報を扱うプラグインのインストール
    • brew install docker-credential-helper

kind クラスタセットアップ

https://github.com/kubernetes-sigs/kind

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: k8sgpt-operator-test
nodes:
- role: control-plane
- role: worker
  • 設定ファイルから kindクラスタの起動
    • kind create cluster --config kind.yaml

k8sgpt-operator 開発メモ

コントビューションのガイドラインを一読

https://github.com/k8sgpt-ai/k8sgpt/blob/main/CONTRIBUTING.md

DCO (Developer’s Certificate of Origin)

CIでコミットに署名が入っているかチェックされます。本文リンク

ユーザ名、メールアドレスを設定しておきましょう。--global -> --local に変えることでリポジトリ単位でも設定可能です。

  • git config --global user.name ${USERNAME}
  • git config --global user.email ${EMAIL}

API(./api)に変更を加えたときに実行するコマンド

  • WebhookConfiguration, ClusterRole and CustomResourceDefinition objects の生成
    • make manifests
  • DeepCopy、DeepCopyInto、および DeepCopyObject メソッドの実装を含むコードの生成
    • make generate

コンテナイメージを作成して kind クラスタでテストする場合

# ビルド
# ※ make docker-buildx は Dockerfile と記述が重複しており途中エラーを吐いてしまうので修正待ち
docker build . -t k8sgpt-operator:test
# ビルドしたイメージを kindのノードに登録する
kind load docker-image k8sgpt-operator:test --name ${KIND_CLUSTER_NAME}
# k8sgpt-operator のインストール
helm install k8sgpt-operator ./chart/operator --set controllerManager.manager.image.repository=k8sgpt-operator --set controllerManager.manager.image.tag=test

ベンダーのLLMではなく自前で構築したい場合

こちらの LocalAI の欄に記載されています。
例では ggml-gpt4all-j というモデルを LocalAI でホスティングしています。
ggml-gpt4all-j のサイズは 4GB ほど、LocalAI起動時の Init Container でダウンロードされます。RAM は 8GB ほど使用されるかと思いますので、Lima VM の 容量も考慮が必要です。

https://github.com/k8sgpt-ai/k8sgpt-operator?tab=readme-ov-file#other-ai-backend-examples

Discussion