---
updatedAt: 2025-07-15T21:16:03.000Z
agentTools:
  projectIndex: https://docs.arthur.ai/llms.txt
---

# Deployment with Kubernetes

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

### Prerequisites)

* **Engine Version:**\
  Check [Releases](https://github.com/arthur-ai/arthur-engine/releases).

* **Helm:**\
  Helm 3.8.0+ installed.
  Helm charts hosted [as OCI packages](https://github.com/arthur-ai/arthur-engine/pkgs/container/arthur-engine%2Fcharts%2Farthur-genai-engine):

  ```bash
  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](values.yaml.template).

2. Create Kubernetes secrets (see below).

3. Install the Helm chart:

   ```bash
   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:

   ```bash
   kubectl get pods -n arthur
   ```

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

#### Creating Kubernetes Secrets (example):

```bash
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:
   ```bash
   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:
   ```bash
   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:
   ```bash
   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](https://docs.arthur.ai/docs/creating-engine#5-complete-configuration-and-connect)