Skip to content

Document the tolerations deprecation and fix the dev nodeSelector notes - #1329

Open
rberrelleza wants to merge 5 commits into
mainfrom
docs-tolerations-deprecation
Open

Document the tolerations deprecation and fix the dev nodeSelector notes#1329
rberrelleza wants to merge 5 commits into
mainfrom
docs-tolerations-deprecation

Conversation

@rberrelleza

Copy link
Copy Markdown
Member

Problem

The Okteto Helm chart has warned since 1.21 that these values are deprecated:

[WARNING] .Values.tolerations.[oktetoPool, devPool, buildPool] is deprecated
and will be removed in Okteto Chart 2.0.

The docs have never carried that deprecation. There is no reference entry for these values, the word "deprecated" appears on the Helm configuration page only under the unrelated autoscaler heading, and the migration guide is reachable only from the chart's install-time output. Meanwhile two runnable examples on the page still teach the deprecated form, so the docs are actively producing new users of a value scheduled for removal.

Changes

  • Deprecation warning under globals.tolerations, linking the community migration guide.
  • daemonset example updated from tolerations.devPool to globals.nodeSelectors / globals.tolerations.
  • Removed an orphaned code block in the defaultBackend section. It was a bare tolerations: devPool: dev snippet with no surrounding prose, immediately after the "Custom error pages" bullet, and reads as a copy-paste artifact.
  • Corrected the dev nodeSelector coupling notes (4 places, see below).
  • Fixed a factual error: a note instructed users to "define a devPool entry in globals.tolerations". No such key exists; globals.tolerations takes okteto and dev. Following it literally produces an invalid config.

On the coupling claim

The page stated, in four places, that globals.nodeSelectors.dev only applies when tolerations.devPool is also set, described as legacy behavior.

That is worth a careful look because it is self-contradictory: it tells users to keep setting the value the chart says is being removed. It also does not match observed behavior.

Verified on a live GKE cluster running chart 1.47.0, configured entirely with the new form so that the configmap carried OKTETO_DEV_POOL: "":

  • OKTETO_GLOBAL_NODE_SELECTORS: {"dev":{"okteto-node-pool":"dev"},"okteto":{"okteto-node-pool":"okteto"}}
  • Every user pod in an Okteto-managed namespace still received nodeSelector: {"okteto-node-pool":"dev"} plus the matching toleration, and scheduled onto the dev pool. Confirmed with a scratch namespace and separately with a real okteto deploy of an 8-service app.

So the dev node selectors are applied unconditionally. What was genuinely gated on devPool is the auto-generated taint toleration, which is why the replacement notes now tell you to spell out globals.tolerations.dev when the target nodes are tainted.

Please sanity-check this against the backend, since it is the one change here based on observed behavior rather than on the chart source.

Not changed

The autoscaler section still says "Use tolerations.devPool to limit the autoscaler analysis to a subset of cluster nodes." I left it alone: the autoscaler is deprecated and disabled by default, and I could not verify whether it reads the new values. Worth a follow-up from whoever owns it.

Related

Complements #1328, which documents the ingress-nginx default-certificate override. Both touch helm-configuration.mdx, so the second to merge will need a trivial rebase.

Applied to both src/content and versioned_docs/version-1.47, which were byte-identical beforehand and remain in sync.

🤖 Generated with Claude Code

The chart has warned since 1.21 that tolerations.oktetoPool / buildPool /
devPool are deprecated and removed in Chart 2.0, but the docs never said so
and two runnable examples still taught the old form.

- Add a deprecation warning under globals.tolerations, linking the community
  migration guide (previously reachable only from the chart's install output).
- Update the daemonset example to globals.nodeSelectors / globals.tolerations.
- Remove an orphaned tolerations.devPool block in defaultBackend that had no
  surrounding prose.
- Drop the claim that globals.nodeSelectors.dev only applies when
  tolerations.devPool is set. Verified against chart 1.47.0 with
  OKTETO_DEV_POOL empty: user workloads still receive the dev node selector.
- Fix the note telling users to define a devPool entry under
  globals.tolerations. That key does not exist; it takes okteto and dev.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@netlify

netlify Bot commented Aug 13, 2026

Copy link
Copy Markdown

Deploy Preview for okteto-docs ready!

Name Link
🔨 Latest commit 5c33339
🔍 Latest deploy log https://app.netlify.com/projects/okteto-docs/deploys/6a7f3adcf2e1970008369d9b
😎 Deploy Preview https://deploy-preview-1329--okteto-docs.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

This value was undocumented. Every other component uses replicaCount, so
setting replicaCount everywhere silently leaves regcredsManager at 2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rberrelleza

Copy link
Copy Markdown
Member Author

Added one more commit: regcredsManager.replicas was undocumented. Every other component uses replicaCount, so setting replicaCount everywhere silently leaves this one at 2. Small and adjacent enough that a third PR seemed like noise, but happy to split it out if you'd rather.

replicas was already documented in that section. Reverting my addition so the
list has a single entry again.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rberrelleza

Copy link
Copy Markdown
Member Author

Correction to my earlier comment: regcredsManager.replicas was already documented in that section, I just missed it. I've reverted that commit, so this PR is back to the tolerations deprecation and the dev nodeSelector notes only.

rberrelleza and others added 2 commits August 13, 2026 18:24
The autoscaler section was the last place in the reference still directing
users to the deprecated tolerations.devPool.

Verified against the backend: cmd/autoscaler.go calls
GetUserPoolNodeSelector(config.OktetoDevPool, config.GlobalNodeSelectors.Dev),
which falls back to globals.nodeSelectors.dev when devPool is empty. So the
autoscaler already honors the supported value; the docs just never said so.
devPool still takes precedence when set, which the note now states.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…eduling

globals.nodeSelectors and globals.tolerations cover Okteto's own components
but not ingress-nginx, okteto-nginx or reloader, which are separate charts
reading their own values. Omitting those blocks fails silently: the install
succeeds and the three schedule onto whatever nodes accept them.

This pattern was only shown on the ARM Support page, framed as a workaround
for the arch taint GKE applies, so nobody configuring node pools would find it.

- Add "Node selectors and tolerations" under Dependencies, next to the existing
  subchart Sample configuration, with a full example and the upstream value
  references for ingress-nginx and Reloader.
- Cross-reference it from globals.nodeSelectors and globals.tolerations, which
  is where people configuring node pools actually land.
- Link the ARM page as a worked example so the two stay connected.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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