Deployment with Kubernetes

Recommended for cloud-agnostic, orchestrated, and advanced use-cases, especially for teams using Kubernetes (EKS, etc.).

Prerequisites)

  • Engine Version:
    Check Releases.

  • Helm:
    Helm 3.8.0+ installed. Helm charts hosted as OCI packages:

    helm show chart oci://ghcr.io/arthur-ai/arthur-engine/charts/arthur-genai-engine:<version_number>
  • OpenAI GPT Model:

    • OpenAI/Azure endpoint(s) with appropriate token limits.
  • DNS:

    • DNS URL with SSL certificate for Engine.
  • Kubernetes Environment:

    • Cluster tested on AWS EKS v1.31.
    • kubectl admin access.
    • Nginx ingress controller.
    • Dedicated namespace, e.g. arthur.
    • For CPU: at least 2x m8g.large nodes.
    • For GPU: at least 2x g4dn.2xlarge nodes and metrics server.
    • Managed PostgreSQL 15 database (pre-create, e.g., arthur_genai_engine).
  • Container Image Repository:

    • Access to Docker Hub or configure private registry in values.yaml.

(Optional) GPU Node Group on AWS EKS

For GPU production deployment, configure your EKS cluster with a GPU node group.
Instructions for preparing user data, IAM, AMI, and autoscaling are provided above (see detailed guide).

Installation Steps (GenAI Engine)

  1. Prepare a values.yaml configuration file based on values.yaml.template.

  2. Create Kubernetes secrets (see below).

  3. Install the Helm chart:

    helm upgrade --install -n arthur -f values.yaml arthur-genai-engine oci://ghcr.io/arthur-ai/arthur-engine/charts/arthur-genai-engine --version <version_number>
  4. Configure DNS: Create an A record pointing to the GenAI Engine's ingress load balancer.

  5. Verify deployment:

    kubectl get pods -n arthur

    You should see GenAI Engine pods running. Inspect logs as needed.

Creating Kubernetes Secrets (example):

kubectl -n arthur create secret generic postgres-secret \
    --from-literal=username='<username>' \
    --from-literal=password='<password>'

kubectl -n arthur create secret docker-registry arthur-repository-credentials \
    --docker-server='registry-1.docker.io' \
    --docker-username='<username>' \
    --docker-password='<password>' \
    --docker-email=''

kubectl -n arthur create secret generic genai-engine-secret-admin-key \
    --from-literal=key='<key>'

kubectl -n arthur create secret generic genai-engine-secret-open-ai-gpt-model-names-endpoints-keys \
    --from-literal=keys='<your_gpt_keys>'

For production, use secure methods for secrets management (e.g. Sealed Secrets or external secret stores).

ML Engine Helm Chart Deployment

  1. Create secrets for client credentials:
    kubectl -n arthur create secret generic ml-engine-client-secret \
        --from-literal=client_id='<client_id>' \
        --from-literal=client_secret='<client_secret>'
  2. Prepare a values.yaml file for ML Engine.
  3. Install the chart:
    helm upgrade --install -n arthur -f values.yaml arthur-ml-engine oci://ghcr.io/arthur-ai/arthur-engine/charts/arthur-ml-engine --version <version_number>
  4. Verify ML Engine pods are running with:
    kubectl get pods -n arthur

FAQ (Kubernetes)

  • Azure OpenAI Quota:
    Use multiple endpoints for round-robin, or request a quota increase from Azure.

Continue with Setup: Click Here