Kubernetes

Pré-requisitos

  • Kubernetes 1.19+
  • Helm 3.0+
  • Suporte a provisionador de PV

Instalação

# Clone o repositório
git clone https://github.com/ZoenSpace/sim.git && cd sim

# Gere os segredos
BETTER_AUTH_SECRET=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
INTERNAL_API_SECRET=$(openssl rand -hex 32)

# Instale
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" \
  --namespace simstudio --create-namespace

Values específicos por nuvem

helm 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" \
  --set app.env.INTERNAL_API_SECRET="$INTERNAL_API_SECRET" \
  --set app.env.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
  --namespace simstudio --create-namespace
helm 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.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
  --namespace simstudio --create-namespace
helm 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.NEXT_PUBLIC_APP_URL="https://sim.yourdomain.com" \
  --namespace simstudio --create-namespace

Configuração principal

# values.yaml personalizado
app:
  replicaCount: 2
  env:
    NEXT_PUBLIC_APP_URL: "https://sim.yourdomain.com"
    OPENAI_API_KEY: "sk-..."

postgresql:
  persistence:
    size: 50Gi

ingress:
  enabled: true
  className: nginx
  tls:
    enabled: true
  app:
    host: sim.yourdomain.com

Veja helm/sim/values.yaml para todas as opções.

Banco de dados externo

postgresql:
  enabled: false

externalDatabase:
  enabled: true
  host: "your-db-host"
  port: 5432
  username: "postgres"
  password: "your-password"
  database: "simstudio"
  sslMode: "require"

Comandos

# Port forward para acesso local
kubectl port-forward deployment/sim-sim-app 3000:3000 -n simstudio

# Ver logs
kubectl logs -l app.kubernetes.io/component=app -n simstudio --tail=100

# Upgrade
helm upgrade sim ./helm/sim --namespace simstudio

# Desinstalar
helm uninstall sim --namespace simstudio

Common Questions

O chart Helm usa por padrão limite de 8 Gi de memória / 4 Gi de request e limite de 2000m de CPU / 1000m de request por pod do app. O pod roda como non-root (UID 1001) com fsGroup 1001 por segurança.
Sim. Defina postgresql.enabled como false e configure a seção externalDatabase com host, porta, username, password, nome do banco e sslMode. O banco externo precisa ter a extensão pgvector instalada.
O chart Helm oferece suporte a secrets Kubernetes pré-existentes via app.secrets.existingSecret. Defina enabled como true e informe o nome do secret. Isso integra com External Secrets Operator, HashiCorp Vault, Azure Key Vault e ferramentas similares. Os mapeamentos de chaves podem ser personalizados se o seu secret usar nomes diferentes.
Sim. Defina app.replicaCount no seu values.yaml. O chart oferece suporte ao scaling padrão do Kubernetes. Garanta que o banco consiga lidar com as conexões adicionais das várias réplicas.
Sim. O chart Helm inclui arquivos de values de exemplo para AWS EKS (values-aws.yaml), Azure AKS (values-azure.yaml), GCP GKE (values-gcp.yaml), além de arquivos para produção, desenvolvimento, bancos externos, secrets externos e deployments whitelabeled.
O chart oferece suporte a ingress com className configurável (ex.: nginx), terminação TLS e configuração de host separada para o app. Ative com ingress.enabled: true e defina o host em ingress.app.host.

On this page