Skip to content

docs(langflow): rewrite for v1.10.1 community chart (chart-wrap)#805

Open
luohua13 wants to merge 2 commits into
mainfrom
docs/langflow-1.10.1-community-chart
Open

docs(langflow): rewrite for v1.10.1 community chart (chart-wrap)#805
luohua13 wants to merge 2 commits into
mainfrom
docs/langflow-1.10.1-community-chart

Conversation

@luohua13

@luohua13 luohua13 commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Langflow v1.10.1 ships as an OLM OperatorBundle (chart-wrap of the upstream langflow-ai/langflow-helm-charts/langflow-ide chart 0.1.2) instead of the previous Alauda fork chart (aml/langflow v1.6.4). The doc had documented the fork's config surface (langflow.auth.enabled, oauth2_proxy.*, top-level externalDatabase, etc.) — none of which are present in the community chart. This PR rewrites the doc against the new surface.

Key changes

  • Install path: OperatorHub + Langflow custom resource, not Applications / Catalog form.
  • Values paths shift: langflow.foospec.langflow.backend.foo throughout.
  • SQLite storage: sqlite.volume.storageClassNamesqlite.volume.existingStorageClassName; magic string "default" means "use cluster-default SC".
  • External PostgreSQL: path moved to .backend.externalDatabase; documented the chart's startup shim that composes LANGFLOW_DATABASE_URL from LF_CHART_EXTERNALDB_* env vars.
  • Auth: no structured auth.enabled in the community chart. Documented via LANGFLOW_AUTO_LOGIN + LANGFLOW_SUPERUSER* env vars.
  • OAuth2 Proxy section removed: not part of the upstream chart. SSO now documented as "deploy an external OAuth2 Proxy in front of the Langflow Service" — same pattern as other chart-wrap components on the platform.
  • External access: Gateway API (Envoy Gateway + HTTPRoute to langflow-service:8080) is the recommended path; upstream chart Ingress documented as fallback.
  • Prerequisites section added: cluster must have a default StorageClass (chart's existingStorageClassName: "default" magic string relies on it).
  • Runtime mode: documented both backend.backendOnly=true AND frontend.enabled=false (both are required to actually skip the frontend Deployment).

Validation

Every parameter in this rewrite was validated on ACP 4.3 (business-1) against a live langflow-operator.v1.10.1-rc.8 install:

Feature Evidence
SQLite storage on default SC rc.8 e2e smoke passed
Gateway API external access rc.8 e2e smoke E probe (Envoy Gateway, NodePort 32423, /health_check returns 200)
Runtime mode (backendOnly + frontend.enabled=false) fresh install; frontend Deployment count = 0, backend still serves
Flow CRUD (POST/GET/DELETE) smoke F probe on rc.8
API key gate (create + valid → 200 + wrong → 403) smoke H probe on rc.8
External PostgreSQL fresh langflow-pg ns; LANGFLOW_DATABASE_URL rewritten by chart shim, /data/langflow.db absent, 33 flows written into PostgreSQL, full schema built via Alembic
Auth env vars (AUTO_LOGIN=false + superuser) 403 / 200 / 401 / 200 / 403 probe on fresh langflow-auth ns
Global variables (LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT) GET /api/v1/variables/ returns both MY_PLAIN_VAR and MY_SECRET_KEY as type: Credential

Test plan

  • Reviewer sanity-checks that removed OAuth2 Proxy content is not referenced elsewhere in the doc set.
  • Reviewer confirms Gateway API guidance aligns with cluster-ops expectations for other chart-wrap components (kong, dify).
  • Verify both zh/ and en/ are in sync.

Starting with Langflow v1.10.1 the platform ships an OLM OperatorBundle
(chart-wrap of the upstream langflow-ai/langflow-helm-charts/langflow-ide
chart) instead of a bespoke Alauda fork chart (aml/langflow v1.6.4). The
config surface changed accordingly:

- Install path: OperatorHub + Langflow custom resource, not
  Applications / Catalog form
- Values paths shift: `langflow.foo` -> `spec.langflow.backend.foo`
  (wrap CR spec mirrors the upstream chart's values.yaml)
- SQLite volume: `langflow.sqlite.volume.storageClassName` becomes
  `spec.langflow.backend.sqlite.volume.existingStorageClassName`, with
  the magic string `"default"` meaning "use cluster-default SC"
- External DB: `langflow.externalDatabase` becomes
  `spec.langflow.backend.externalDatabase`; startup shim rewrites
  LANGFLOW_DATABASE_URL from the LF_CHART_EXTERNALDB_* env vars
- Auth: the upstream chart has no structured `auth.enabled` block;
  use backend env vars (LANGFLOW_AUTO_LOGIN, LANGFLOW_SUPERUSER,
  LANGFLOW_SUPERUSER_PASSWORD, ...) instead
- OAuth2 Proxy: not part of the upstream chart. Section removed; SSO
  now documented as "deploy an external OAuth2 Proxy in front of the
  Langflow Service" — same pattern as other chart-wrap components
- External access: Gateway API (Envoy Gateway + HTTPRoute) is the
  recommended path; upstream chart Ingress is documented as fallback

Prerequisites section added: cluster must have a default StorageClass
(the chart's `sqlite.volume.existingStorageClassName: "default"` magic
string relies on it).

Every parameter in this rewrite was validated end-to-end on ACP 4.3
(business-1) against a real langflow-operator.v1.10.1-rc.8 install:

- SQLite storage on default SC (sc-topolvm): rc.8 e2e smoke
- Gateway API external access: rc.8 e2e smoke E probe (Envoy Gateway,
  NodePort 32423, hits /health_check successfully)
- Runtime mode (backendOnly + frontend.enabled=false): dedicated
  probe I — frontend Deployment count 0, backend still serves
- Flow CRUD (POST/GET/DELETE): smoke F probe on rc.8
- API key gate (create + valid=200 + wrong=403): smoke H probe on rc.8
- External PostgreSQL: fresh langflow-pg ns install; verified
  LANGFLOW_DATABASE_URL rewritten via chart shim, `/data/langflow.db`
  absent, 33 flows written into PostgreSQL, full Langflow schema
  created via Alembic
- Auth env vars (AUTO_LOGIN=false + SUPERUSER creds): 403/200/401/
  200/403 probe on fresh langflow-auth ns
- Global variables (LANGFLOW_VARIABLES_TO_GET_FROM_ENVIRONMENT + plain
  env + secretKeyRef): GET /api/v1/variables/ returns both entries
  as type: Credential

Both zh and en versions updated in parallel.
…Ingress

Reviewer asked for every parameter to be verified against a live install
before it lands in the doc. Ran a fresh langflow-batch install on
business-1 (ACP 4.3) exercising the full Production Recommendations
surface at once:

- §5.3 numWorkers=2 → LANGFLOW_NUM_WORKERS=2 env set correctly
- §5.4 resources → pod containers[0].resources matches CR (requests
  cpu:500m/mem:1Gi, limits cpu:2/mem:4Gi)
- §5.1 DO_NOT_TRACK=true → env visible in container
- §5.2 LANGFLOW_TRANSACTIONS_STORAGE_ENABLED=false → /monitor/transactions
  returns {"items":[],"total":0}
- ConfigMap flow auto-import via LANGFLOW_LOAD_FLOWS_PATH → after backend
  restart, GET /api/v1/flows returns 34 (33 starter + 1 imported
  hello-world)
- Python deps via PVC + PYTHONPATH → env set, /opt/python-packages
  mounted writable

Also caught a real trap during validation and made it a top-level warning
in Configuration section: `spec.langflow.backend.volumes` (and
volumeMounts) REPLACE the chart-default emptyDirs (tmp/data/db/flows)
instead of appending. Adding a custom volume without re-declaring the
defaults crashes the backend at startup:

  FileNotFoundError: [Errno 2] No usable temporary directory found in
  ['/tmp', '/var/tmp', '/usr/tmp', '/app']

(Langflow's entrypoint imports dill, which calls tempfile.gettempdir();
readOnlyRootFilesystem: true means /tmp must be a writable volume.)

Every sample YAML that customizes volumes/volumeMounts (ConfigMap flow
import, local models, Python deps, runtime mode) now includes the four
required chart-default entries as boilerplate. This trap was caught live
on ACP 4.3.

Per reviewer feedback:
- Delete Chinese doc (auto-translated, we only maintain English).
- Delete Ingress content (platform standardises on Gateway API for chart-
  wrap components; Ingress is not the supported external-access path).
- Delete SSO section entirely (upstream chart has no OAuth2 Proxy; users
  needing SSO should deploy their own gateway outside the wrap).

Filename verified against real GA artifacts:
  langflow-operator.alpha.ALL.v1.10.1.tgz
matches minio://packages/langflow-operator/v1.10/ path.
@luohua13 luohua13 deployed to translate July 7, 2026 14:56 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant