Đăng vào

Triển khai Agentic AI trên Kubernetes với kagent

Các công cụ mã nguồn mở dành cho DevOps và kỹ sư nền tảng để xây dựng, triển khai và vận hành các giải pháp AI trên nền tảng Kubernetes.

Giới thiệu

Trong bài viết này mình giới thiệu vắn tắt cách triển khai kagent trên Kubernetes và vẫn như mọi khi, mình sử dụng ArgoCD.

Trên document của kagent đã hướng dẫn cách cài bằng Helm chart khá đầy đủ, chúng ta cần cài 2 chart:

  • kagent-crds
  • kagent

Cài đăt kagent-crds

kagent-crds.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kagent-crds
  namespace: argocd
spec:
  project: default
  syncPolicy:
    automated:
      prune: true 
      selfHeal: true
    syncOptions:
      - Validate=false
      - CreateNamespace=true
      - PrunePropagationPolicy=foreground
      - PruneLast=true
      - RespectIgnoreDifferences=true
      - Replace=true
  source:
    repoURL: ghcr.io/kagent-dev/kagent/helm
    chart: kagent-crds
    targetRevision: 0.*
  destination:
    namespace: kagent
    server: https://kubernetes.default.svc

Khi cài đặt chúng ta chỉ cần chạy: kubectl apply -f kagent-crds.yaml

Cài đăt kagent

Tiếp theo, chúng ta cần phải cài tiếp chart kagent, trong đây sẽ cấu hình các agent cũng như loại AI model mà chúng ta sử dụng.

Trong ví dụ này, mình sử dụng model: gemini-2.0-flash, chúng ta cần lưu API key trên Kubernetes để sau đó kagent có thể tích hợp được với Google Gemini.

kubectl create secret generic kagent-gemini -n kagent --from-literal GOOGLE_API_KEY=<your_api_key>
kagent.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: kagent
  namespace: argocd
spec:
  project: default
  syncPolicy:
    automated:
      prune: true 
      selfHeal: true
    syncOptions:
      - Validate=false
      - CreateNamespace=true
      - PrunePropagationPolicy=foreground
      - PruneLast=true
      - RespectIgnoreDifferences=true
      - Replace=true
  source:
    repoURL: ghcr.io/kagent-dev/kagent/helm
    chart: kagent
    targetRevision: 0.*
    helm:
      parameters:
        - name: controller.resources.limits.cpu
          value: "500m"
        - name: providers.default
          value: "Gemini"
        - name: providers.Gemini.provider
          value: "Gemini"
        - name: providers.Gemini.model
          value: "gemini-2.0-flash"
        - name: providers.Gemini.apiKeySecretRef
          value: "kagent-gemini"
        - name: providers.Gemini.apiKeySecretKey
          value: "GOOGLE_API_KEY"
        - name: querydoc.enabled
          value: "false"
      valuesObject:
        agents:
          k8s-agent:
            enabled: true
          kgateway-agent:
            enabled: false
          istio-agent:
            enabled: false
          promql-agent:
            enabled: false
          observability-agent:
            enabled: false
          argo-rollouts-agent:
            enabled: false
          helm-agent:
            enabled: false
          cilium-policy-agent:
            enabled: false
          cilium-manager-agent:
            enabled: false
          cilium-debug-agent:
            enabled: false
  destination:
    namespace: kagent
    server: https://kubernetes.default.svc

Chúng ta chạy lệnh kubectl apply -f kagent.yaml để triển khai.

Bởi vì trong phần helm chart hiện tại chưa có hỗ trợ cấu hình ingress để cho phép người dùng thao tác với các AI Agent, nên chúng ta tự tạo thêm ingress để có thể truy cập vào phần quản lý.

ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kagent-ui
  namespace: kagent
  labels:
    k8s-app: kagent-ui
    app.kubernetes.io/name: kagent-ui
    app.kubernetes.io/part-of: kagent
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  rules:
    - host: agents.nvtienanh.info
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: kagent-ui
                port:
                  number: 80
  tls:
    - hosts:
        - agents.nvtienanh.info
      secretName: ssl-agents.nvtienanh.info

Mọi thứ đến đây đã xong, chúng ta có thể deploy resource.

Demo

Chúc thành công,

ANH NGUYỄN