Skip to content

Add V2 docs for flyte core deployment - #1556

Open
popojk wants to merge 3 commits into
mainfrom
docs/split-aws-deployment-by-chart
Open

Add V2 docs for flyte core deployment#1556
popojk wants to merge 3 commits into
mainfrom
docs/split-aws-deployment-by-chart

Conversation

@popojk

@popojk popojk commented Sep 2, 2026

Copy link
Copy Markdown

Goal

V2 support flyte core helm charts to do multi pods deployment now. This PR add a doc to guild user to do so.

popojk and others added 2 commits September 2, 2026 14:43
…e-core pages

The AWS deployment guide only ever covered the flyte-binary chart, but the
repo also ships flyte-core — the distributed chart that runs one Deployment
per component (runs, actions, events, cache, dataproxy, secret, executor,
app). Nothing in content/ documented it.

Turn aws-deployment into a section with a landing page that picks between the
two charts, keeping the existing /oss-deployment/aws-deployment URL:

- aws-deployment/_index.md: chart comparison and the warning that the two
  values schemas are not interchangeable.
- aws-deployment/flyte-binary.md: the previous page, moved. Fixes the one-off
  {{< WARNING >}} shortcode (no other page in the repo uses that form; every
  other notice is > [!WARNING]) and moves the trailing "Next:" pointer, which
  sat ~150 lines before the end of the page, to the actual end.
- aws-deployment/flyte-core.md: new, mirroring the flyte-binary structure step
  for step, plus a values-differences table.

Every YAML block on the flyte-core page was validated with `helm template`
against charts/flyte-core; the full EKS example renders 8 Deployments and a
15-path fan-out ingress. Notable things the chart does differently and the
page calls out: configuration.runs.storagePrefix (not
flyte-core-components.runs.storagePrefix), the service account being named
flyte-service-account rather than flyte, the executor being pinned to one
replica, and configuration.inline shipping a non-empty default-env-vars that
a user-supplied list silently replaces.

Not done: overview.md still describes only the single-binary architecture.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PfQZ6UXpmynAtFsAHwJnyz
Signed-off-by: Alex Wu <c.alexwu@gmail.com>
Signed-off-by: Alex Wu <c.alexwu@gmail.com>
Copilot AI lite review requested due to automatic review settings September 2, 2026 06:48
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

GHA build & deploy preview

Built by .github/workflows/build-pr.yml and deployed to the docs CF Pages project by .github/workflows/deploy-pr-preview.yml.

Branch alias https://pr-1556-docs-split-aws-deplo.docs-dog.pages.dev
This commit https://f9282033.docs-dog.pages.dev
Commit SHA 661b9bfde7a4253edab6ade53298aa276c4679e1

Updated automatically on every push.

Signed-off-by: Alex Wu <c.alexwu@gmail.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are minor but user-facing documentation clarity/wording issues to address before the new two-chart deployment structure is fully consistent for readers.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Adds Flyte v2 documentation for deploying the flyte-core Helm chart on AWS (multi-pod / one Deployment per component) and reorganizes the AWS deployment docs to clearly present both flyte-binary and flyte-core paths within the OSS deployment section.

Changes:

  • Added a new flyte-core AWS deployment guide and an AWS deployment landing page to select between charts.
  • Updated the existing AWS deployment guide to be explicitly flyte-binary, including updated cross-links and admonition formatting.
  • Normalized internal links across OSS deployment pages to point at the new AWS deployment section index.
File summaries
File Description
content/oss-deployment/overview.md Updates the AWS deployment link target to the new AWS section index.
content/oss-deployment/kind-deployment/_index.md Updates references to AWS deployment to point at the new AWS section index.
content/oss-deployment/aws-deployment/flyte-core.md Adds a new, detailed AWS deployment guide for the flyte-core chart (multi-Deployment topology).
content/oss-deployment/aws-deployment/flyte-binary.md Renames/reframes the existing AWS deployment guide as flyte-binary and updates cross-links/admonitions.
content/oss-deployment/aws-deployment/_index.md Adds a new landing page for AWS deployments to choose between flyte-binary and flyte-core.
content/oss-deployment/app-serving.md Updates AWS deployment prerequisite link to point at the new AWS section index.
content/oss-deployment/_index.md Updates the platform deployment overview to describe both Helm chart options and links accordingly.
Review details
  • Files reviewed: 7/7 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.


Both charts read the same underlying Flyte configuration and expose the same API, so
the choice is about operations, not features. The `flyte-core` guide is written to
mirror the `flyte-binary` one step for step, so you can compare them side by side.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F10 agreed. Folded into the F5 suggestion on this file, which rewrites that sentence.

Comment on lines 160 to +162
When you're ready, continue to the
[Kind deployment](./kind-deployment/_index) to try Flyte on a kind cluster,
or the [AWS deployment](./aws-deployment) guide for a real deployment.
or the [AWS deployment](./aws-deployment/_index) guide for a real deployment.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F9 confirmed, and it goes further than the link. overview.md is single-binary throughout: "Flyte runs as a single unified binary ... one process" (L17), a mermaid node labelled Flyte binary (unified) (L39), and an image table keyed to deployment.image (L150), which is a flyte-binary values path. Both new pages send readers there for prerequisites.

One thing that makes the fix easier than it looks: every flyte-core component runs the same cr.flyte.org/flyteorg/flyte-binary-v2 image. So the accurate note is that the binary is unchanged and only the pod topology differs, not that there are two architectures.

@ppiegaze ppiegaze left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed at 661b9bfd against flyteorg/flyte@origin/main and the rendered charts. The chart facts hold up well: the component set, the ingress route table, the executor replica pin, and the default-env-vars replacement warning are all exactly right, and the minimal values file installs clean. 14 changes, 4 blocking, one of which is only merge ordering against flyte-agent-plugins#42.

ID Finding Where Blocking
F1 TIP depends on flyte-agent-plugins#42, still open flyte-core.md:26 yes
F2 Ingress snippet omits the health-check path; ALB 503s flyte-core.md:208 yes
F3 Executor has no 8080; probes are on 8081 flyte-core.md:276 yes
F4 extraInlineSecretRefs key must end .yaml or it is ignored flyte-core.md:529 yes
F5 "expose the same API" is not accurate _index.md:23 no
F6 defaultK8sServiceAccount is a pass-through, not a values key flyte-core.md:553 no
F7 Schema incompatibility is one-directional _index.md:30 no
F8 Uninstall deletes the TaskAction CRD flyte-core.md:293 no
F9 overview.md is single-binary throughout overview.md no
F10 "step for step" hyphenation _index.md:25 no
F11 13 deep anchors on the old URL stop resolving section move no
F12 Em-dash density vs the rest of the section flyte-core.md no
F13 Children listed twice on the landing page _index.md:36 no
F14 _U_EP_OVERRIDE could use the chart's tpl expression flyte-core.md:479 no

— docsy · automated docs agent · run report

> [!TIP] Deploy this with an AI assistant
> [`flyte-agent-plugins`](https://github.com/flyteorg/flyte-agent-plugins) — a
> portable agent harness plugin for Claude Code, Codex, OpenCode, and other
> harnesses — includes a `flyte-deploy-aws-core` skill that provisions a Flyte v2

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F1 blocking on ordering: flyte-deploy-aws-core is added by flyteorg/flyte-agent-plugins#42, which is still open. Until that merges this TIP points at a skill readers cannot install. Either land #42 first, or drop the TIP and add it back after.

host: <flyte.example.com>
# Your cloud's native ingress class, e.g. alb (EKS), gce (GKE),
# azure-application-gateway (AKS). See the Deployment overview for the options.
ingressClassName: <ingress-class>

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F2 blocking: with no health-check annotation the ALB probes each target group at /, and nothing serves it. Only /healthz and /readyz are registered (flytestdlib/app/app.go:95), so all six API target groups go unhealthy and the ALB returns 503. The annotation appears only in the full example at the foot of the page.

Suggested change
ingressClassName: <ingress-class>
ingressClassName: <ingress-class>
httpAnnotations:
# Components serve /healthz, not /. Without this the ALB probes / and marks
# every API target group unhealthy.
alb.ingress.kubernetes.io/healthcheck-path: /healthz

Comment on lines +276 to +278
Every component serves `/healthz` and `/readyz` on its own port 8080, and the chart
wires both into the pod's liveness and readiness probes — so `Running` **and** ready
across all of them is the health check:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F3 blocking: the executor has no port 8080. Its ports are 9443, 9444, 10254 and health, and both probes point at health, which is configuration.executor.healthProbePort, default 8081 (executor/deployment.yaml:110).

Suggested change
Every component serves `/healthz` and `/readyz` on its own port 8080, and the chart
wires both into the pod's liveness and readiness probes — so `Running` **and** ready
across all of them is the health check:
Seven of the eight components serve `/healthz` and `/readyz` on their API port (8080 by
default). The executor is a controller with no API port: it serves both on
`configuration.executor.healthProbePort`, default 8081. The chart wires them into each
pod's liveness and readiness probes, so `Running` **and** ready across all of them is
the health check:

To keep the **database password** out of the values file too, leave
`configuration.database.postgres.password` empty and either:

- reference an existing Kubernetes Secret with `configuration.extraInlineSecretRefs`, or

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F4 blocking: this silently does nothing as written. The Secret is projected whole into /etc/flyte/config.d, which every component loads as *.yaml (values.yaml:23), so the Secret's key has to end in .yaml and hold a config fragment. A Secret with key password is never read: the password stays empty and flyte-runs fails to reach the database with nothing in the logs. Same applies at L537.

Suggested change
- reference an existing Kubernetes Secret with `configuration.extraInlineSecretRefs`, or
- reference an existing Kubernetes Secret with `configuration.extraInlineSecretRefs`
(the Secret is projected whole into `/etc/flyte/config.d` and loaded as `*.yaml`, so
its key must end in `.yaml` and hold a config fragment, for example a key
`012-db-secret.yaml` setting `database.postgres.password`; a key named `password` is
never read), or

Comment on lines +23 to +25
Both charts read the same underlying Flyte configuration and expose the same API, so
the choice is about operations, not features. The `flyte-core` guide is written to
mirror the `flyte-binary` one step for step, so you can compare them side by side.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F5 nit: the API surfaces are not identical. flyte-binary's ingress routes RunLogsService and SettingsService; flyte-core routes neither, from any component. The bundled connector also differs: flyte-core sets flyteconnector.enabled: false, while flyte-binary has no such key, so the dependency renders by default. F10 folded in here.

Suggested change
Both charts read the same underlying Flyte configuration and expose the same API, so
the choice is about operations, not features. The `flyte-core` guide is written to
mirror the `flyte-binary` one step for step, so you can compare them side by side.
Both charts read the same underlying Flyte configuration and run the same binary image,
so the choice is mostly about operations. The API surfaces are close but not identical:
`flyte-core`'s ingress routes neither `RunLogsService` nor `SettingsService`, and the
bundled connector is enabled by default only on `flyte-binary`. The `flyte-core` guide
is written to mirror the `flyte-binary` one step-for-step, so you can compare them side
by side.

| Run storage prefix | `flyte-core-components.runs.storagePrefix` | `configuration.runs.storagePrefix` |
| Task-pod namespace | `flyte-core-components.actions.kubernetes.namespace` | `configuration.kubernetes.namespace` |
| Data proxy upload/download | `flyte-core-components.dataproxy.*` | `configuration.dataproxy.*` |
| Task service account | `configuration.inline.executor.defaultK8sServiceAccount` | `configuration.executor.defaultK8sServiceAccount` (a real values key) |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F6 nit: defaultK8sServiceAccount is not in flyte-core/values.yaml. It reaches the config only because executor/configmap.yaml:23 dumps all of configuration.executor into the executor: section, and there is no values.schema.json to catch a typo. It works, but it will not show up in helm show values.

Suggested change
| Task service account | `configuration.inline.executor.defaultK8sServiceAccount` | `configuration.executor.defaultK8sServiceAccount` (a real values key) |
| Task service account | `configuration.inline.executor.defaultK8sServiceAccount` | `configuration.executor.defaultK8sServiceAccount` (a pass-through, not in `values.yaml`) |

> [!NOTE] The values schemas are not interchangeable
> The two charts organize their values differently — `flyte-binary` nests service
> settings under `flyte-core-components`, `flyte-core` under `configuration` and
> `components`. A `values.yaml` written for one chart will not install the other.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F7 nit: this holds in one direction only. flyte-core values on flyte-binary fail loudly with a template error. flyte-binary values on flyte-core render fine and install, silently ignoring flyte-core-components, deployment, enabled_plugins and configuration.logging.plugins. The silent direction is the one worth the warning.

Suggested change
> `components`. A `values.yaml` written for one chart will not install the other.
> `components`. A `values.yaml` written for `flyte-core` fails loudly on `flyte-binary`,
> but one written for `flyte-binary` installs on `flyte-core` and silently ignores every
> `flyte-core-components`, `deployment` and `enabled_plugins` setting in it.


```bash
helm uninstall flyte -n flyte
kubectl delete namespace flyte

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

F8 nit: helm uninstall also deletes the taskactions.flyte.org CRD and cascades to every TaskAction in the cluster. The CRD is an ordinary template rather than a crds/ entry, so Helm owns it. Worth a sentence here, next to the note that the external dependencies survive.

@ppiegaze

ppiegaze commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Four non-blocking nits, no reply needed on any of them.

F11 the old URL keeps returning 200 but its content becomes the signpost, so 13 heading anchors on it (#3-install, #full-values-file-example, and 11 more) now land on a page with no such heading. No redirect can carry a fragment, so this is not repo-fixable. Worth one line in the PR body.

F12 em-dashes run at 4.8 per 100 lines in flyte-core.md against a 1.0 baseline for the rest of the section. House style prefers a colon or commas. Not worth a sweep, but the stacked ones (L12, L24, L252) are easy.

F13 _index.md lists its two children twice: the "Pick one" table and then {{< subpage-cards >}}. Either is fine, both is a duplicate. The cards also sit below the "Once Flyte is running" pointer to the next section.

F14 configuration.inline is rendered through tpl, so the _U_EP_OVERRIDE re-supply can use the chart's own expression instead of the literal flyte-actions.flyte:8080 and stay correct under a different release name or namespace.


— docsy · automated docs agent · run report

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.

3 participants