Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 3.8k
fix(helm): correct chart docs, examples, and dead config across the board#5907
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
d7e1475dd2872aa07ecf690545f34b1d84947cff4980e2fb4e53876c5b008df5c83c2bb1c7995f453313ff0ecff338636bFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -9,8 +9,8 @@ import { FAQ } from '@/components/ui/faq' | ||
| ## Prerequisites | ||
| - Kubernetes 1.19+ | ||
| - Helm 3.0+ | ||
| - Kubernetes 1.25+ | ||
| - Helm 3.8+ | ||
| - PV provisioner support | ||
| ## Installation | ||
| @@ -23,47 +23,59 @@ git clone https://github.com/simstudioai/sim.git && cd sim | ||
| BETTER_AUTH_SECRET=$(openssl rand -hex 32) | ||
| ENCRYPTION_KEY=$(openssl rand -hex 32) | ||
| INTERNAL_API_SECRET=$(openssl rand -hex 32) | ||
| CRON_SECRET=$(openssl rand -hex 32) | ||
| POSTGRES_PASSWORD=$(openssl rand -hex 24) | ||
| # Install | ||
| helm install sim ./helm/sim \ | ||
| --set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \ | ||
| --set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \ | ||
| --set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \ | ||
| --set app.env.CRON_SECRET="$CRON_SECRET" \ | ||
| --set postgresql.auth.password="$POSTGRES_PASSWORD" \ | ||
| --namespace simstudio --create-namespace | ||
| ``` | ||
| ## Cloud-Specific Values | ||
| These are cloud-tuned **alternatives** to the generic install above — pick one path, don't run both. The commands reuse the `$BETTER_AUTH_SECRET`, `$ENCRYPTION_KEY`, `$INTERNAL_API_SECRET`, `$CRON_SECRET`, and `$POSTGRES_PASSWORD` variables generated in [Installation](#installation) above, so run that block's `openssl` lines first in the same shell. They use `helm upgrade --install`, so they work whether or not a release exists yet. Two caveats when converting an existing generic install rather than starting fresh: (1) **reuse the original secret values** — recover them with `helm get values sim -n simstudio` if your shell no longer has them; supplying a newly generated `ENCRYPTION_KEY` makes every previously encrypted credential (OAuth tokens, provider keys, environment variables) undecryptable. (2) The cloud values rename the bundled PostgreSQL database to `simstudio`, but Postgres only applies that setting on first initialization — add `--set postgresql.auth.database=sim` to keep your existing database. If you'd rather start clean, `helm uninstall sim -n simstudio`, delete its PVCs, and run the cloud command fresh. | ||
| <Tabs items={['AWS EKS', 'Azure AKS', 'GCP GKE']}> | ||
| <Tab value="AWS EKS"> | ||
| ```bash | ||
| helm install sim ./helm/sim \ | ||
| helm upgrade --install sim ./helm/sim \ | ||
| --values ./helm/sim/examples/values-aws.yaml \ | ||
| --set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \ | ||
| --set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \ | ||
waleedlatif1 marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| --set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \ | ||
| --set app.env.CRON_SECRET="$CRON_SECRET" \ | ||
| --set postgresql.auth.password="$POSTGRES_PASSWORD" \ | ||
waleedlatif1 marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| --set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \ | ||
| --namespace simstudio --create-namespace | ||
| ``` | ||
| </Tab> | ||
| <Tab value="Azure AKS"> | ||
| ```bash | ||
| helm install sim ./helm/sim \ | ||
| helm upgrade --install sim ./helm/sim \ | ||
| --values ./helm/sim/examples/values-azure.yaml \ | ||
| --set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \ | ||
| --set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \ | ||
| --set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \ | ||
| --set app.env.CRON_SECRET="$CRON_SECRET" \ | ||
| --set postgresql.auth.password="$POSTGRES_PASSWORD" \ | ||
| --set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \ | ||
| --namespace simstudio --create-namespace | ||
| ``` | ||
| </Tab> | ||
| <Tab value="GCP GKE"> | ||
| ```bash | ||
| helm install sim ./helm/sim \ | ||
| helm upgrade --install sim ./helm/sim \ | ||
| --values ./helm/sim/examples/values-gcp.yaml \ | ||
| --set app.env.BETTER_AUTH_SECRET="$BETTER_AUTH_SECRET" \ | ||
| --set app.env.ENCRYPTION_KEY="$ENCRYPTION_KEY" \ | ||
| --set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \ | ||
| --set app.env.CRON_SECRET="$CRON_SECRET" \ | ||
| --set postgresql.auth.password="$POSTGRES_PASSWORD" \ | ||
| --set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \ | ||
| --namespace simstudio --create-namespace | ||
| ``` | ||
| @@ -115,7 +127,7 @@ externalDatabase: | ||
| ```bash | ||
| # Port forward for local access | ||
| kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio | ||
| kubectl port-forward deployment/sim-app 3000:3000 -n simstudio | ||
| # View logs | ||
| kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100 | ||
| @@ -130,7 +142,7 @@ helm uninstall sim --namespace simstudio | ||
| <FAQ items={[ | ||
| { question: "What are the default resource limits for the Sim app pod?", answer: "The Helm chart defaults to 8 Gi memory limit / 4 Gi request and 2000m CPU limit / 1000m request per app pod. The pod runs as non-root (UID 1001) with fsGroup 1001 for security." }, | ||
| { question: "Can I use an external database instead of the bundled PostgreSQL?", answer: "Yes. Set postgresql.enabled to false and configure the externalDatabase section with your host, port, username, password, database name, and sslMode. The external database must have the pgvector extension installed." }, | ||
| { question: "How do I manage secrets securely in Kubernetes?", answer: "The Helm chart supports pre-existing Kubernetes secrets via app.secrets.existingSecret. Set enabled to true and provide the secret name. This integrates with External Secrets Operator, HashiCorp Vault, Azure Key Vault, and similar tools. Key mappings can be customized if your secret uses different key names." }, | ||
| { question: "How do I manage secrets securely in Kubernetes?", answer: "The Helm chart supports pre-existing Kubernetes secrets via app.secrets.existingSecret. Set enabled to true and provide the secret name. This integrates with External Secrets Operator, HashiCorp Vault, Azure Key Vault, and similar tools. The secret must use the standard key names (BETTER_AUTH_SECRET, ENCRYPTION_KEY, INTERNAL_API_SECRET, CRON_SECRET, ...) — it is consumed wholesale, so key remapping is not supported." }, | ||
| { question: "Can I scale the app to multiple replicas?", answer: "Yes. Set app.replicaCount in your values.yaml. The chart supports standard Kubernetes scaling. Ensure your database can handle the additional connections from multiple replicas." }, | ||
| { question: "Are there cloud-specific example configurations?", answer: "Yes. The Helm chart includes example values files for AWS EKS (values-aws.yaml), Azure AKS (values-azure.yaml), GCP GKE (values-gcp.yaml), as well as files for production, development, external databases, external secrets, and whitelabeled deployments." }, | ||
| { question: "What ingress options are supported?", answer: "The chart supports ingress with configurable className (e.g., nginx), TLS termination, and separate host configuration for the app. Enable it with ingress.enabled: true and set your host under ingress.app.host." }, | ||
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.