Перейти к основному содержимому

Upgrade a Vendored Chart

Before You Change Anything

These steps can affect shared dev workloads or the GitOps control layer. Confirm the target repo, environment, and intended owner before mutating anything.

Crawbl vendors all third-party Helm charts into Git. When a new chart version is available, follow this guide to upgrade safely.

1
Step 1

Remove the old chart

Start in crawbl-argocd-apps and remove the existing vendored chart directory.

cd crawbl-argocd-apps
rm -rf components/<name>/chart
2
Step 2

Pull the new version

Pull the replacement chart from the Helm repo or OCI registry.

helm repo update
helm pull <repo-name>/<chart-name> --version <new-version> \
--untar -d components/<name>/chart/

For OCI charts:

helm pull oci://<registry>/<chart> --version <new-version> \
--untar -d components/<name>/chart/
3
Step 3

Review the diff

Inspect the chart changes before you commit them.

git diff components/<name>/chart

Pay attention to changed defaults, new required values, CRD changes, and immutable fields like volumeClaimTemplates.

4
Step 4

Update values if needed

If the new chart changed value names or requirements, update components/<name>/envs/dev.yaml to match.

5
Step 5

Commit and push

Push the upgraded chart and let ArgoCD roll it out.

git add components/<name>/chart
git commit -m "Upgrade <name> chart to <new-version>"
git push origin main

Monitor the rollout with:

kubectl get application <name> -n argocd -w

Handling Sync Failures After Upgrade

If ArgoCD sync fails after the upgrade:

Immutable field conflict (StatefulSet): Kubernetes cannot update volumeClaimTemplates in-place. Delete the StatefulSet while preserving data:

kubectl delete statefulset <name> -n <namespace> --cascade=orphan
kubectl delete pod <name>-0 -n <namespace>

ArgoCD recreates the StatefulSet on the next sync. The --cascade=orphan flag preserves existing pods and PVCs.

CRD conflicts: Apply CRDs manually before the chart sync:

kubectl apply -f components/<name>/chart/<chart-dir>/crds/

Validation errors: Check kubectl describe application <name> -n argocd for the specific error and update your values accordingly.

Helm Repository Reference

Add these repositories before pulling charts:

helm repo add jetstack https://charts.jetstack.io
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add external-dns https://kubernetes-sigs.github.io/external-dns/
helm repo add external-secrets https://charts.external-secrets.io

Envoy Gateway uses OCI — no helm repo add needed:

helm pull oci://docker.io/envoyproxy/gateway-helm --version v1.7.0 \
--untar -d components/envoy-gateway/chart/

Current Chart Versions

ChartVersion
cert-managerv1.20.0
envoy-gatewayv1.7.0
external-secrets0.9.x
postgresql (Bitnami)18.5.14
redis (Bitnami)25.3.9
external-dns1.16.1
ArgoCD (Pulumi-managed)7.8.13

What's next: CrashLoopBackOff