在 Distributed Cloud 軟體 (僅限軟體) 參考實作上,部署 Solo Enterprise for kagent

Solo Enterprise for kagent 可讓平台管理員在 Google Distributed Cloud (僅限軟體) (GDC-SO) 上部署及管理 AI 代理。在這項參考實作中,您會將容器映像檔和 Helm 圖表鏡像至私人 Harbor 登錄檔、部署 kagent 控制層、UI 和 Solo Enterprise for agentgateway,並查看叢集大小調整指南。如要進一步瞭解架構,請參閱「將自己的 MCP 伺服器帶到 kagent 參考架構」。

必要條件

開始之前,請確認您可以使用 Linux 工作站,且該工作站已安裝 Chrome、Docker、crane、kubectl、Helm、envsubst 和 gdcloud CLI。請確認 GDC-SO 環境已設定下列元件:

元件 詳細資料或規定 範例值
GDC-SO 的Google Cloud 專案 與 GDC-SO 叢集相關聯的專案 kagent-enterprise
叢集 目標 GDC-SO 叢集 user-project-8a210897
Kubernetes 憑證 (Connect Gateway) 連線至叢集 gcloud container fleet memberships get-credentials user-project-8a210897
私人登錄檔 Harbor 登錄檔網址 solo-kagent-enterprise.org-1.zone1.google.gdch.test
專案存放區 專案存放區路徑 solo-kagent-enterprise.org-1.zone1.google.gdch.test/kagent-enterprise
提取密鑰 Docker 提取密鑰名稱 solo-harbor-pull-secret

以下操作說明適用於 kagent 0.4.0 以上版本的 Solo Enterprise。

這項部署作業已在 GDC-SO 1.31.5-gke.300 版中驗證。

在 GDC-SO 叢集上部署

根據叢集和登錄檔設定建立 .env 檔案:

export PUBLIC_REGISTRY="us-docker.pkg.dev/solo-public/kagent-enterprise-helm/charts"
export PUBLIC_MANAGEMENT_REGISTRY="us-docker.pkg.dev/solo-public/solo-enterprise-helm/charts"
export PUBLIC_AGENTGATEWAY_REGISTRY="us-docker.pkg.dev/solo-public/enterprise-agentgateway/charts"

# Set these based on your desired installation version
export KAGENT_ENT_VERSION=0.4.1
export KAGENT_VERSION=0.9.1
export AGENTGATEWAY_VERSION=v2.4.0-beta.0
export SOLO_LICENSE_KEY="SOLO_LICENSE_KEY"

# Set the following values based on your GDC setup
export PROJECT_ID="kagent-enterprise"
export CLUSTER_NAME="user-project-8a210897"
export NAMESPACE="solo-kagent"
export USER_CONTEXT="user-vm-1-zone1-gdch_console-org-1-zone1-google-gdch-test_user-vm-1"
export MGMT_CONTEXT="user-project-8a210897-zone1-gdch_console-org-1-zone1-google-gdch-test_user-project-8a210897"
export PULL_SECRET_NAME="solo-harbor-pull-secret"

# Set the following values based on your Harbor registry setup
export ORG="ORG"
export ZONE="ZONE"
export PRIVATE_REGISTRY="solo-kagent-enterprise.${ORG}.${ZONE}.google.gdch.test"
export PRIVATE_REPO="${PRIVATE_REGISTRY}/${PROJECT_ID}"
export PRIVATE_CHART_REGISTRY="${PRIVATE_REPO}/charts"

更改下列內容:

  • SOLO_LICENSE_KEY:Solo Enterprise 授權金鑰
  • ORG:GDC 組織名稱
  • ZONE:GDC 可用區名稱

建立 Helm 值檔案

為三個圖表建立 Helm 值檔案。除非您想自訂安裝作業,否則不需要修改任何值。您之後可以在 kagent UI 中設定其他模型和代理。

建立 enterprise-agentgateway-values.yaml 檔案:

image:
  registry: ${PRIVATE_REPO}/enterprise-agentgateway
  tag: ${AGENTGATEWAY_VERSION}
licensing:
  licenseKey: ${SOLO_LICENSE_KEY}
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
inferenceExtension:
  enabled: true

建立 kagent-enterprise-values.yaml 檔案:

registry: ${PRIVATE_REPO}
cluster: ${CLUSTER_NAME}
imagePullSecrets:
- name: ${PULL_SECRET_NAME}
global:
  imagePullSecrets:
  - name: ${PULL_SECRET_NAME}
oidc:
  skipOBO: true
otel:
  tracing:
    enabled: true
    exporter:
      otlp:
        endpoint: http://solo-enterprise-telemetry-collector.${NAMESPACE}.svc.cluster.local.:4317
        insecure: true
kubernetes:
  jwksUrl: "https://kubernetes.default.svc.cluster.local/openid/v1/jwks"
providers:
  default: OpenAI # Choose the model API type
  OpenAI:
    provider: OpenAI
    model: "/model/gemma-4-12B" # Choose the model
    apiKeySecretRef: "kagent-openai"
    apiKeySecretKey: "none" # Name of the key in the Secret, or "none" if no API key is required
controller:
  agentDeployment:
    podLabels:
      egress.networking.gke.io/enabled: "true"
  imagePullSecrets:
  - name: ${PULL_SECRET_NAME}
  image:
    registry: ${PRIVATE_REPO}
  agentImage:
    registry: ${PRIVATE_REPO}
    repository: "kagent-dev/kagent/app"
    pullSecret: "${PULL_SECRET_NAME}"
licensing:
  createSecret: true
  secretName: "enterprise-kagent-license"
kmcp:
  imagePullSecrets:
  - name: ${PULL_SECRET_NAME}
  image:
    registry: ${PRIVATE_REPO}
  enabled: true
kagent-tools:
  enabled: true
  imagePullSecrets:
  - name: ${PULL_SECRET_NAME}
  tools:
    image:
      registry: ${PRIVATE_REPO}
agents:
  k8s-agent:
    enabled: true
grafana-mcp:
  enabled: false # Pull secret is not supported
tools:
  grafana-mcp:
    enabled: false # Pull secret is not supported
database:
  postgres:
    bundled:
      storageClassName: local-shared
      image:
        registry: ${PRIVATE_REPO}
      enabled: true

建立 management-values.yaml 檔案:

cluster: ${CLUSTER_NAME}
context: "${USER_CONTEXT}"

management-crds:
  enabled: false

global:
  imagePullPolicy: IfNotPresent
  imagePullSecrets:
  - name: ${PULL_SECRET_NAME}

products:
  kagent:
    enabled: true
  agentgateway:
    enabled: true
  mesh:
    enabled: false
  agentregistry:
    enabled: false

oidc:
  issuer: ""

traces:
  verbose: false

tunnelserver:
  registry: ${PRIVATE_REPO}
  repository: solo-enterprise
  name: solo-enterprise-tunnel-server

ui:
  backend:
    registry: ${PRIVATE_REPO}
    repository: solo-enterprise
    name: solo-enterprise-ui-backend
    clickhouse:
      migrations:
        registry: ${PRIVATE_REPO}
  frontend:
    registry: ${PRIVATE_REPO}
    repository: solo-enterprise
  telemetryGateway:
    repository: ${PRIVATE_REPO}/otel/opentelemetry-collector-contrib

idp:
  registry: ${PRIVATE_REPO}
  repository: solo-enterprise

telemetry:
  image:
    registry: ${PRIVATE_REPO}
    repository: otel
    name: opentelemetry-collector-contrib
  k8sobjects:
    enabled: true
  metrics:
    enabled: false
  selfMonitoring:
    enabled: false
    verbose: false
  traces:
    enabled: true

clickhouse:
  enabled: true
  image:
    repository: ${PRIVATE_REPO}/clickhouse/clickhouse-server

設定環境

在 .env 和 Helm 值檔案所在的目錄中,載入環境變數並轉譯 Helm 值範本。請在同一個殼層工作階段中執行本指南中的其餘指令,確保這些變數維持設定狀態:

SCRIPT_DIR="${PWD}"

set -a
source "$SCRIPT_DIR/.env"
set +a

COMMON_FLAGS=(--kube-context "$MGMT_CONTEXT" -n "$NAMESPACE" --create-namespace --insecure-skip-tls-verify)

# Values files live alongside the script. Render them with envsubst into
# *.generated.yaml siblings that are then fed to helm upgrade.

MANAGEMENT_VALUES_GENERATED="$SCRIPT_DIR/management-values.generated.yaml"
KAGENT_ENTERPRISE_VALUES_GENERATED="$SCRIPT_DIR/kagent-enterprise-values.generated.yaml"
ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED="$SCRIPT_DIR/enterprise-agentgateway-values.generated.yaml"

envsubst < "$SCRIPT_DIR/management-values.yaml"            > "$MANAGEMENT_VALUES_GENERATED"
envsubst < "$SCRIPT_DIR/kagent-enterprise-values.yaml"     > "$KAGENT_ENTERPRISE_VALUES_GENERATED"
envsubst < "$SCRIPT_DIR/enterprise-agentgateway-values.yaml" > "$ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED"

從公開登錄檔鏡像映像檔和圖表

向私人 Harbor 登錄檔驗證 Docker 和 Helm,然後從公開登錄檔鏡像 Helm Chart 和容器映像檔:

# Authenticate to the private Harbor registry before mirroring charts and images.
helm registry login "$PRIVATE_REGISTRY"
docker login "$PRIVATE_REGISTRY"

function mirror() {
  if command -v crane &> /dev/null; then
    crane cp "$1" "$2"
  else
    docker pull "$1"
    docker tag "$1" "$2"
    docker push "$2"
  fi
}

MANAGEMENT_CHARTS=(management-crds management)
KAGENT_CHARTS=(kagent-enterprise-crds kagent-enterprise)
AGENTGATEWAY_CHARTS=(enterprise-agentgateway-crds enterprise-agentgateway)

# Mirror Helm chart OCI artifacts to the private registry using the same mirror() helper.

for CHART in "${MANAGEMENT_CHARTS[@]}"; do
  mirror \
    "${PUBLIC_MANAGEMENT_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}" \
    "${PRIVATE_CHART_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}"
done

for CHART in "${KAGENT_CHARTS[@]}"; do
  mirror \
    "${PUBLIC_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}" \
    "${PRIVATE_CHART_REGISTRY}/${CHART}:${KAGENT_ENT_VERSION}"
done

for CHART in "${AGENTGATEWAY_CHARTS[@]}"; do
  mirror \
    "${PUBLIC_AGENTGATEWAY_REGISTRY}/${CHART}:${AGENTGATEWAY_VERSION}" \
    "${PRIVATE_CHART_REGISTRY}/${CHART}:${AGENTGATEWAY_VERSION}"
done

# Discover images by templating the charts directly from their public OCI source.

IMAGES=$( (
  helm template management "oci://${PUBLIC_MANAGEMENT_REGISTRY}/management" \
    --version "$KAGENT_ENT_VERSION" \
    --set products.kagent.enabled=true \
    --set products.agentgateway.enabled=true \
    --set products.agentregistry.enabled=true \
    --set licensing.licenseKey=placeholder
  helm template kagent-enterprise "oci://${PUBLIC_REGISTRY}/kagent-enterprise" \
    --version "$KAGENT_ENT_VERSION" \
    --set licensing.licenseKey=placeholder \
    --set kmcp.licensing.licenseKey=placeholder \
    --set ui.enabled=true \
    --set kagent-tools.enabled=true \
    --set agents.k8s-agent.enabled=true
  helm template enterprise-agentgateway "oci://${PUBLIC_AGENTGATEWAY_REGISTRY}/enterprise-agentgateway" \
    --version "$AGENTGATEWAY_VERSION" \
    --set licensing.licenseKey=placeholder
) | grep "image:" | grep -v '{' | sed 's/.*image: //' | tr -d '" ' | grep -E '^[a-zA-Z0-9].*[:/]' | sort -u)

IMAGES_EXTRA="cr.kagent.dev/kagent-dev/kagent/golang-adk:$KAGENT_VERSION cr.kagent.dev/kagent-dev/kagent/app:$KAGENT_VERSION ghcr.io/kagent-dev/kagent/skills-init:$KAGENT_VERSION"

TARGET_PREFIX="${PRIVATE_REPO//\//\\/}"

for IMG in $IMAGES $IMAGES_EXTRA; do
  echo "From: $IMG"
  NEW_IMG=$(echo "$IMG" | sed s/'us-docker\.pkg\.dev\/solo-public'/"$TARGET_PREFIX"/ | sed s/'^clickhouse\/'/"$TARGET_PREFIX\/clickhouse\/"/ | sed s/'^argoproj\/'/"$TARGET_PREFIX\/argoproj\/"/ | sed s/'^docker.io\/otel\/'/"$TARGET_PREFIX\/otel\/"/ | sed s/'^docker.io\/library\/postgres'/"$TARGET_PREFIX\/library\/postgres"/ | sed s/'^cr.kagent.dev\/kagent-dev\/'/"$TARGET_PREFIX\/kagent-dev\/"/ | sed s/'^docker.io\/mcp\/'/"$TARGET_PREFIX\/mcp\/"/ | sed s/'^ghcr.io\/kagent-dev\/'/"$TARGET_PREFIX\/kagent-dev\/"/)
  echo "To  : $NEW_IMG"
  mirror "$IMG" "$NEW_IMG"
done

在 GDC-SO 叢集中建立命名空間

在叢集中建立目標命名空間:

kubectl create namespace "$NAMESPACE" --context "$MGMT_CONTEXT" \
    --dry-run=client -o yaml | kubectl apply --context "$MGMT_CONTEXT" -f -

建立 Docker 提取密鑰並套用至叢集

在叢集中建立 Docker 登錄檔提取密鑰:

kubectl create secret docker-registry "$PULL_SECRET_NAME" \
    --context "$MGMT_CONTEXT" \
    --namespace "$NAMESPACE" \
    --docker-server="$PRIVATE_REGISTRY" \
    --docker-username="REGISTRY_USERNAME" \
    --docker-password="REGISTRY_PASSWORD"

更改下列內容:

  • REGISTRY_USERNAME:Harbor 登錄檔使用者名稱
  • REGISTRY_PASSWORD:Harbor 登錄檔密碼

安裝 kagent

安裝 CRD 圖表和 Solo Enterprise for kagent Helm 圖表:

# Standard clusters allow cluster-scoped resources, so install CRD charts first.

helm upgrade -i management-crds \
  "oci://${PRIVATE_CHART_REGISTRY}/management-crds" \
  "${COMMON_FLAGS[@]}" \
  --version "$KAGENT_ENT_VERSION"

helm upgrade -i kagent-enterprise-crds \
  "oci://${PRIVATE_CHART_REGISTRY}/kagent-enterprise-crds" \
  "${COMMON_FLAGS[@]}" \
  --version "$KAGENT_ENT_VERSION"

helm upgrade -i enterprise-agentgateway-crds \
  "oci://${PRIVATE_CHART_REGISTRY}/enterprise-agentgateway-crds" \
  "${COMMON_FLAGS[@]}" \
  --version "$AGENTGATEWAY_VERSION"

helm upgrade -i management \
  "oci://${PRIVATE_CHART_REGISTRY}/management" \
  "${COMMON_FLAGS[@]}" \
  --version "$KAGENT_ENT_VERSION" \
  --values "$MANAGEMENT_VALUES_GENERATED" \
  --set "licensing.licenseKey=$SOLO_LICENSE_KEY"

helm upgrade -i kagent-enterprise \
  "oci://${PRIVATE_CHART_REGISTRY}/kagent-enterprise" \
  "${COMMON_FLAGS[@]}" \
  --version "$KAGENT_ENT_VERSION" \
  --values "$KAGENT_ENTERPRISE_VALUES_GENERATED" \
  --set "licensing.licenseKey=$SOLO_LICENSE_KEY" \
  --set "kmcp.licensing.licenseKey=$SOLO_LICENSE_KEY" \
  --set "controller.agentImage.tag=$KAGENT_VERSION" \
  --set "controller.skillsInitImage.tag=$KAGENT_VERSION"


helm upgrade -i enterprise-agentgateway \
  "oci://${PRIVATE_CHART_REGISTRY}/enterprise-agentgateway" \
  "${COMMON_FLAGS[@]}" \
  --version "$AGENTGATEWAY_VERSION" \
  --values "$ENTERPRISE_AGENTGATEWAY_VALUES_GENERATED" \
  --set "licensing.licenseKey=$SOLO_LICENSE_KEY"

驗證部署作業

確認 Pod 在命名空間中執行:

kubectl get pods -n "$NAMESPACE" --context "$MGMT_CONTEXT"

輸出結果會與下列內容相似:

NAME                                                  READY   STATUS    RESTARTS   AGE
enterprise-agentgateway-5b57c9496b-hfnqq              1/1     Running   0          36m
k8s-agent-796b6674f5-fd8cq                            1/1     Running   0          4m8s
kagent-controller-5f7b44f647-9nd95                    1/1     Running   0          5m31s
kagent-postgresql-688d8c679d-4g9n9                    1/1     Running   0          36m
kagent-tools-6b9f8d58c6-t5zsm                         1/1     Running   0          23m
kmcp-enterprise-controller-manager-7886cdfb57-kgnmw   1/1     Running   0          23m
management-clickhouse-shard0-0                        1/1     Running   0          14m
solo-enterprise-telemetry-collector-0                 1/1     Running   0          23m
solo-enterprise-ui-7c7c889d6-frkvn                    5/5     Running   0          9m34s

將本機通訊埠轉送至 solo-enterprise-ui 服務:

kubectl port-forward -n "$NAMESPACE" --context "$MGMT_CONTEXT" \
    svc/solo-enterprise-ui 9090:80

在瀏覽器中前往 http://localhost:9090,開啟 Solo Enterprise for kagent UI,並設定模型和代理:

Solo Enterprise for kagent UI dashboard.

效能考量和部署規模

下列各節說明元件資源消耗量的擴充方式,並提供單一叢集部署作業的基準儲存空間和資源大小。

資源調度特性

在單一叢集安裝中,隨著代理數量和每個代理的要求負載增加,資源消耗量會發生質變 (management 和 kagent-enterprise 圖表,不含中繼)。在調整資源分配或規劃容量之前,請先使用這些特性,找出哪些元件對特定資源調度維度較為敏感。

控管資源調度的重要架構

  • 代理與 LLM 之間的流量是直接傳輸。代理會直接呼叫大型語言模型 (LLM) 端點 (例如叢集內模型服務)。這類流量不會通過控制器或任何其他管理層元件。新增代理或提高要求比率,不會增加任何共用元件上與 LLM 相關的負載。
  • MCP 伺服器位於代理工具執行的熱路徑中。當代理叫用由 Model Context Protocol (MCP) 伺服器支援的工具時,呼叫會同步且封鎖。MCP 伺服器的延遲時間和處理量會直接影響代理要求延遲時間。每個部署的 MCPServer 資源都是獨立的 Deployment,有自己的資源封包。
  • 遙測是主要的資源調度介面。指標、追蹤記錄和 Kubernetes 物件快照都會透過遙測管道流入 ClickHouse。這個管道會隨著代理數量和要求量增加而擴充,是系統中最耗費資源的部分。
  • 通道伺服器存在,但在單一叢集安裝中不會傳輸任何有意義的流量。tunnel-server 容器會在 UI Pod 中執行,但沒有要服務的用戶端,也不會造成資源調度壓力。

元件資源調度行為

以下各節說明個別元件如何隨著代理程式數量和要求負載而調度資源。

kagent-controller
  • 隨著代理數量增加,連線數會以次線性方式成長,每個代理都會保留代理對代理 (A2A) 串流連線。
  • 對要求量不敏感,因為 LLM 呼叫和工具執行會略過控制器。
  • 支援水平擴充,可分配連線和政策評估負載。
KMCP 企業控制器

KMCP 企業控制器僅由 MCPServer 資源變更事件驅動,不受代理程式數量或要求量影響。

MCP 伺服器
  • 每個 MCPServer 自訂資源 (CR) 部署一個 Deployment;機群大小會隨著部署的 MCPServer 資源數量增加而擴大。
  • 在代理工具執行的同步熱路徑中執行,延遲時間和處理量會直接影響代理。
  • 當多個代理同時呼叫共用伺服器時,會根據所有消費者的總工具呼叫率調整資源。
  • 根據預設,內建伺服器 (grafana-mcp、querydoc) 會以單一副本的形式執行;如需大量共用,請增加副本或限制。
  • 針對使用者部署的 MCP 伺服器,使用使用者定義的映像檔、資源要求和資源限制。
遙測資料收集器
  • 可隨要求量線性調度資源,每項要求都會發出指標,並可選擇是否發出追蹤記錄。
  • 在代理程式負載偏高時,最有可能成為資源受限的元件。
  • 在多叢集安裝作業中,做為遠端叢集的 OpenTelemetry Protocol (OTLP) 閘道 (通訊埠 4316-4318 上的接收器);沒有獨立的閘道 Pod。
  • 使用 k8sobjects sidecar,可依據 Kubernetes 庫存大小 (而非要求比率) 進行資源調度。
ClickHouse

在持續負載下,ClickHouse 是主要的資源瓶頸。儲存空間、記憶體和 CPU 都會隨著下列因素增加:

  • 代理程式數量:每增加一種代理程式類型,指標基數 (不重複標籤組合) 就會增加。
  • 要求量:每項要求都會產生指標資料點和追蹤記錄 span,並寫入及編入索引。
  • Kubernetes 庫存大小:無論要求負載為何,系統都會定期儲存 k8sobjects 個快照。

寫入處理量是初始壓力點;如果資料量增加,但未調整結構定義或保留設定,查詢效能 (由 UI 後端使用) 就會降低。預設設定適用於中等單一節點部署作業;如果負載較重,可能需要增加 replicasPerShard 或 shards,或調整保留存留時間。

UI 後端
  • 無狀態且受查詢限制;會隨著 ClickHouse 中的資料量擴充,而非即時要求處理量。
  • 隨著代理數量和歷來資料增加,機群圖和追蹤記錄查詢的費用也會提高。
代理
  • Python 代理:
    • 每個代理都是獨立的 Deployment,新增代理只會增加資源,不會有共用狀態的負面影響。
    • 每個代理的資源消耗量會隨著要求並行度和工具鍊深度而調整。
  • Go 代理:
    • 閒置記憶體用量約減少 36 倍 (每個代理程式閒置時為 7 MB,而非 253 MB)。
    • 使用的容器映像檔約小 11 倍 (29.7 MB 對比 335.4 MB)。
    • 啟動速度約快 6.7 倍 (2.7 秒與 18.2 秒)。

資源調度特性摘要

下表摘要說明各元件如何隨著代理程式數量和要求負載而擴充:

元件 受代理數量影響 易受要求負載影響 附註
控制器 中 低 為每個代理維護 A2A 串流,不受 LLM 呼叫率影響
Scaler 無 無 事件導向,實際上為靜態
KMCP 企業控制器 無 無 僅回應 MCPServer 資源變更
MCP 伺服器 高 高 每個 MCPServer CR 一個 Deployment;在工具執行的熱路徑中
遙測資料收集器 高 高 主要資源調度介面;與要求量呈線性關係
ClickHouse 高 高 主要瓶頸;由基數和寫入速率造成
UI 後端 低 低 受查詢限制;受歷來資料量影響
代理 (Python 和 Go) 不適用 高 獨立部署;依並行數量調度資源

儲存空間大小

下表提供儲存磁碟區初始大小的建議:

  • PostgreSQL 儲存空間 (kagent 狀態,包括工作階段、記憶體和生命週期管理) 會隨著對話工作階段數量增加而線性擴充。
  • ClickHouse 儲存空間 (追蹤) 也會隨著不重複對話工作階段數量的增加而線性擴充。
元件 建議的起始音量
PostgreSQL 50 GiB
ClickHouse 50 GiB

部署作業規模

下列各節列出 Helm 圖表的預設 CPU、記憶體和儲存空間資源要求和限制。

管理圖表

management 圖表會部署 solo-enterprise-ui Pod、獨立遙測收集器和 ClickHouse。

solo-enterprise-ui 個 Pod 容器

下表列出 solo-enterprise-ui Pod 容器的預設資源要求和限制:

容器 已啟用 CPU 要求 CPU 限制 記憶體要求 記憶體限制
ui-backend 一律 2.5 億 500 公尺 512Mi 1024Mi
ui-frontend 一律 2.5 億 500 公尺 512Mi 1024Mi
k8sobjects-collector telemetry.k8sobjects.enabled 100 公尺 300 公尺 384Mi 768Mi
idp 已啟用 autoAuth 100 公尺 2.5 億 256Mi 512Mi
遙測資料收集器 (StatefulSet 或 Deployment)

下表列出遙測收集器的預設資源要求和限制:

元件 CPU 要求 CPU 限制 記憶體要求 記憶體限制
telemetry-collector 200 公尺 1000 公尺 512Mi 2Gi

遙測閘道 (OpenTelemetry 收集器) 也會另外定義自己的資源:

元件 CPU 要求 CPU 限制 記憶體要求 記憶體限制
telemetry-gateway 100 公尺 500 公尺 300Mi 1024Mi
ClickHouse 子圖表

下表列出 ClickHouse 子圖表的預設資源要求和限制,這些值是根據 Bitnami 2xlarge 預設值,並使用 replicasPerShard 和 shards 值設定:

元件 CPU 要求 CPU 限制 記憶體要求 記憶體限制 臨時儲存空間
clickhouse 1000m (1 核心) 6000m (6 核心) 3072Mi (3 GiB) 12288Mi (12 GiB) 50Mi

kagent-enterprise 圖表

kagent-enterprise 圖表會部署核心控制器、kmcp-enterprise 子圖表、內建 MCP 工具伺服器,以及選用代理。

核心元件

下表列出核心控制器的預設資源要求和限制:

元件 已啟用 CPU 要求 CPU 限制 記憶體要求 記憶體限制
controller 一律 100 公尺 2000m (2 核心) 128Mi 512Mi
kmcp-enterprise 子圖表

下表列出 kmcp-enterprise 控制器的預設資源要求和限制:

元件 CPU 要求 CPU 限制 記憶體要求 記憶體限制
kmcp-enterprise-controller 100 公尺 500 公尺 128Mi 512Mi
內建工具

下表列出內建工具伺服器的預設資源要求和限制:

元件 已啟用 CPU 要求 CPU 限制 記憶體要求 記憶體限制
kagent-tools kagent-tools.enabled 100 公尺 1000 公尺 256Mi 1Gi
grafana-mcp grafana-mcp.enabled 100 公尺 500 公尺 128Mi 512Mi
querydoc querydoc.enabled 100 公尺 500 公尺 128Mi 512Mi
代理

所有代理程式都共用相同的預設資源設定檔。每個代理預設為停用,須個別啟用:

代理 CPU 要求 CPU 限制 記憶體要求 記憶體限制
k8s-agent 100 公尺 1000 公尺 256Mi 1Gi
kgateway-agent 100 公尺 1000 公尺 256Mi 1Gi
istio-agent 100 公尺 1000 公尺 256Mi 1Gi
promql-agent 100 公尺 1000 公尺 256Mi 1Gi
observability-agent 100 公尺 1000 公尺 256Mi 1Gi
argo-rollouts-agent 100 公尺 1000 公尺 256Mi 1Gi
helm-agent 100 公尺 1000 公尺 256Mi 1Gi
cilium-policy-agent 100 公尺 1000 公尺 256Mi 1Gi
cilium-manager-agent 100 公尺 1000 公尺 256Mi 1Gi
cilium-debug-agent 100 公尺 1000 公尺 256Mi 1Gi