diff --git a/braintrust/README.md b/braintrust/README.md index 8c37a5f..bf3b4bb 100644 --- a/braintrust/README.md +++ b/braintrust/README.md @@ -15,8 +15,8 @@ The `braintrust-secrets` secret must contain the following keys: | `BRAINSTORE_LICENSE_KEY` | Brainstore license key | Valid Brainstore license key from the Braintrust Data Plane settings page | | `FUNCTION_SECRET_KEY` | Random string for encrypting function secrets | Random string | | `AZURE_STORAGE_CONNECTION_STRING` | Azure storage connection string | Valid Azure storage connection string (only required if `cloud` is `azure`) | -| `GCS_ACCESS_KEY_ID` | Google HMAC Access ID string | Valid S3 API Key Id (only required if `cloud` is `google`) | -| `GCS_SECRET_ACCESS_KEY` | Google HMAC Secret string | Valid S3 Secret string (only required if `cloud` is `google`) | +| `GCS_ACCESS_KEY_ID` | Google HMAC Access ID string | Valid S3 API Key Id (only required if `cloud` is `google` and if `enableGcsAuth` is `false`) | +| `GCS_SECRET_ACCESS_KEY` | Google HMAC Secret string | Valid S3 Secret string (only required if `cloud` is `google` and if `enableGcsAuth` is `false`) | ## Azure Key Vault Driver Integration @@ -159,3 +159,7 @@ This Helm chart includes comprehensive automated unit tests. ## Breaking Changes With version 2 of this helm, the Brainstore pods are split into Readers and Writers improving performance and the ability to independently scale for more read operations or write operations. For existing customers that have deployed our Helm or via other means on Kubernetes, please update your override values file or deployment to match this change. This will result in no data loss, but will be a brief downtime as the existing Brainstore Pods are removed and new Brainstore Pods for Reading and Writing are launched. + +## Example Values Files + +Example values files for different cloud providers and configurations are located in the `examples/` folder. diff --git a/braintrust/examples/gke-autopilot-values.yaml b/braintrust/examples/gke-autopilot-values.yaml new file mode 100644 index 0000000..7c82753 --- /dev/null +++ b/braintrust/examples/gke-autopilot-values.yaml @@ -0,0 +1,111 @@ +# Sample values for GKE Autopilot deployment + +# Global configs +global: + orgName: "" + namespace: "braintrust" + +# Cloud provider configuration +cloud: "google" + +# Google Cloud specific configuration for Autopilot +google: + mode: "autopilot" + autopilotMachineFamily: "c4" + +objectStorage: + google: + brainstoreBucket: "" + apiBucket: "" + +api: + name: "braintrust-api" + annotations: + service: + networking.gke.io/load-balancer-type: "Internal" + replicas: 2 + # Uncomment the following section to use usee a different image or tag from the version in the Helm release + #image: + #repository: public.ecr.aws/braintrust/standalone-api + #tag: "" + service: + type: LoadBalancer + port: 8000 + portName: http + serviceAccount: + name: "braintrust-api" + googleServiceAccount: "" + # this is for native GCS authentication via workload identity (defaults to false for S3-compatible access) Requires v1.1.31 or later of the dataplane to be set to true. + enableGcsAuth: false + resources: + requests: + cpu: "2" + memory: "4Gi" + limits: + cpu: "4" + memory: "6Gi" + extraEnvVars: + # For S3-compatible GCS Storage, set the AWS_REGION environment variable to the region of your GCS bucket + - name: AWS_REGION + value: "us-central1" + +# Brainstore configuration (split into reader and writer) +brainstore: + serviceAccount: + name: "brainstore" + googleServiceAccount: "" + # Uncomment the following section to use usee a different image or tag from the version in the Helm release + #image: + #repository: public.ecr.aws/braintrust/brainstore + #tag: "" + # New deployments should use objectStorage as the locks backend. Existing deployments should remain on redis at this time. + locksBackend: "objectStorage" + + # Brainstore Reader configuration + reader: + name: "brainstore-reader" + replicas: 2 + service: + name: "" + type: ClusterIP + port: 4000 + portName: http + resources: + requests: + cpu: "16" + memory: "32Gi" + limits: + cpu: "20" + memory: "40Gi" + cacheDir: "/mnt/tmp/brainstore" + objectStoreCacheMemoryLimit: "1Gi" + objectStoreCacheFileSize: "100Gi" + verbose: true + volume: + size: "200Gi" + extraEnvVars: + + # Brainstore Writer configuration + writer: + name: "brainstore-writer" + replicas: 1 + service: + name: "" + type: ClusterIP + port: 4000 + portName: http + resources: + requests: + cpu: "32" + memory: "64Gi" + limits: + cpu: "40" + memory: "80Gi" + cacheDir: "/mnt/tmp/brainstore" + objectStoreCacheMemoryLimit: "1Gi" + objectStoreCacheFileSize: "100Gi" + verbose: true + volume: + size: "200Gi" + extraEnvVars: + \ No newline at end of file diff --git a/braintrust/tests/__fixtures__/base-values.yaml b/braintrust/tests/__fixtures__/base-values.yaml index b485e11..2e1e039 100644 --- a/braintrust/tests/__fixtures__/base-values.yaml +++ b/braintrust/tests/__fixtures__/base-values.yaml @@ -37,7 +37,7 @@ api: memory: "4Gi" limits: cpu: "4" - memory: "8Gi" + memory: "6Gi" allowCodeFunctionExecution: true backfillDisableHistorical: false backfillDisableNonhistorical: false diff --git a/braintrust/values.yaml b/braintrust/values.yaml index 1328cbc..4f7d8f6 100644 --- a/braintrust/values.yaml +++ b/braintrust/values.yaml @@ -102,7 +102,7 @@ api: memory: "4Gi" limits: cpu: "4" - memory: "8Gi" + memory: "6Gi" # Allow running user generated code functions (e.g. scorers/tools) allowCodeFunctionExecution: true # Brainstore backfill configuration. These defaults are fine for most cases. @@ -202,11 +202,11 @@ brainstore: portName: http resources: requests: - cpu: "4" - memory: "8Gi" + cpu: "16" + memory: "32Gi" limits: - cpu: "8" - memory: "16Gi" + cpu: "20" + memory: "40Gi" cacheDir: "/mnt/tmp/brainstore" objectStoreCacheMemoryLimit: "1Gi" objectStoreCacheFileSize: "50Gi" @@ -238,11 +238,11 @@ brainstore: portName: http resources: requests: - cpu: "8" - memory: "16Gi" + cpu: "32" + memory: "64Gi" limits: - cpu: "16" - memory: "32Gi" + cpu: "40" + memory: "80Gi" cacheDir: "/mnt/tmp/brainstore" objectStoreCacheMemoryLimit: "1Gi" objectStoreCacheFileSize: "50Gi"