CtrlK
BlogDocsLog inGet started
Tessl Logo

nitinjain999/platform-skills

Production-grade platform engineering handbook — Kubernetes, Terraform, Flux CD, GitHub Actions, AWS, and more.

67

Quality

84%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

fluxcd-migration.mdreferences/

FluxCD API Migration Guide

Flux has removed deprecated API versions in two waves. Running any v1beta1 or v1beta2 resource in a post-removal cluster will cause reconciliation failures.


What was removed and when

Flux v2.7 — v1beta1 removals

All v1beta1 versions across every toolkit were removed:

API groupRemoved version
source.toolkit.fluxcd.iov1beta1 (GitRepository, HelmRepository, HelmChart, Bucket, OCIRepository)
kustomize.toolkit.fluxcd.iov1beta1 (Kustomization)
helm.toolkit.fluxcd.iov1beta1 (HelmRelease)
image.toolkit.fluxcd.iov1beta1 (ImageRepository, ImagePolicy, ImageUpdateAutomation)
notification.toolkit.fluxcd.iov1beta1 (Provider, Alert, Receiver)

Flux v2.8 — v1beta2 removals

All v1beta2 versions were removed:

API groupRemoved version
source.toolkit.fluxcd.iov1beta2 (GitRepository, HelmRepository, HelmChart, Bucket, OCIRepository)
kustomize.toolkit.fluxcd.iov1beta2 (Kustomization)
helm.toolkit.fluxcd.iov1beta2 (HelmRelease)
notification.toolkit.fluxcd.iov1beta2 (Provider, Alert)

Current stable API versions (post-v2.8)

KindCurrent apiVersion
GitRepository, OCIRepository, HelmRepository, HelmChart, Bucketsource.toolkit.fluxcd.io/v1
Kustomizationkustomize.toolkit.fluxcd.io/v1
HelmReleasehelm.toolkit.fluxcd.io/v2
Provider, Alertnotification.toolkit.fluxcd.io/v1beta3
Receivernotification.toolkit.fluxcd.io/v1
ImageRepository, ImagePolicy, ImageUpdateAutomationimage.toolkit.fluxcd.io/v1beta2 (for non-gitless)
FluxInstance, ResourceSet, ResourceSetInputProviderfluxcd.controlplane.io/v1

Detect deprecated APIs before migrating

# Preview all files that need updating (dry-run — no changes written)
flux migrate -f . --dry-run

# Or use the official audit script from fluxcd/agent-skills
git clone --depth=1 https://github.com/fluxcd/agent-skills.git /tmp/flux-agent-skills
bash /tmp/flux-agent-skills/skills/gitops-repo-audit/scripts/check-deprecated.sh -d .

flux migrate --dry-run exits 1 if deprecated versions are found. Use in CI to block merges.


Migration path — CLI-based (3 steps)

Use when managing Flux via flux bootstrap.

Step 1 — Migrate Git manifests

# Clone your GitOps repo
git clone https://github.com/my-org/fleet-manifests.git
cd fleet-manifests

# Rewrite deprecated apiVersions in all YAML files
flux migrate -f .

# Review the diff
git diff

# Commit and push
git add -A
git commit -m "chore: migrate Flux APIs to v2.8+ versions"
git push

# Trigger reconciliation
flux reconcile ks flux-system --with-source

Step 2 — Migrate in-cluster resources

# Update resources already stored in etcd
# Safe to run multiple times — idempotent
flux migrate

# For a specific cluster context
flux migrate --context my-cluster --kubeconfig ~/.kube/config

Step 3 — Upgrade Flux components

# Re-run your original bootstrap command with the new version
flux bootstrap github \
  --owner=my-org \
  --repository=fleet-manifests \
  --branch=main \
  --path=clusters/production

# Verify
flux check

Migration path — Flux Operator-based (3 steps)

Use when managing Flux via FluxInstance.

Step 1 — Upgrade Flux Operator

helm upgrade flux-operator oci://ghcr.io/controlplaneio-fluxcd/charts/flux-operator \
  --namespace flux-system \
  --version ">=0.43.0"

Step 2 — Migrate Git manifests

Same as CLI Step 1 — run flux migrate -f . in your GitOps repo, commit, push.

Step 3 — Update FluxInstance target version

apiVersion: fluxcd.controlplane.io/v1
kind: FluxInstance
metadata:
  name: flux
  namespace: flux-system
spec:
  distribution:
    version: "2.8.x"    # or "2.x" to track latest

The Flux Operator automatically handles in-cluster API migrations when the version target is updated.


Post-migration validation

# Validate all manifests against current Flux OpenAPI schemas
git clone --depth=1 https://github.com/fluxcd/agent-skills.git /tmp/flux-agent-skills
bash /tmp/flux-agent-skills/skills/gitops-repo-audit/scripts/validate.sh -d .

# Check Flux component health
flux check

# Check all sources and kustomizations
flux get all -A

CI gate — block deprecated API merges

Add to your GitHub Actions workflow:

- name: Check for deprecated Flux APIs
  run: |
    flux migrate -f . --dry-run
    if [ $? -ne 0 ]; then
      echo "Deprecated Flux API versions found — run 'flux migrate -f .' to fix"
      exit 1
    fi

Common issues after migration

SymptomCauseFix
no matches for kind "HelmRelease" in version "helm.toolkit.fluxcd.io/v2beta2"YAML not migratedRun flux migrate -f .
Resources stuck after flux migrateCached schema in kubeconfigRun rm -rf ~/.kube/cache
flux check shows outdated componentsComponents not upgradedRe-run bootstrap or update FluxInstance version
flux migrate shows no changes but errors persistIn-cluster resources not migratedRun flux migrate (without -f .) to update etcd

BEFORE_AFTER.md

CHANGELOG.md

CODE_OF_CONDUCT.md

COMMANDS.md

CONTRIBUTING.md

EDITOR_INTEGRATIONS.md

GETTING_STARTED.md

HOW_IT_WORKS.md

install.sh

INSTALLATION.md

LAUNCH.md

PROMPTS.md

QUICKSTART.md

README.md

renovate.json

SECURITY.md

SKILL.md

tessl.json

tile.json