Helm-Operator FailedReleaseSync - kubernetes-helm

I am stuck with a weird helm issue since last few days. All the helm-releases for a particular cluster are getting failed with this particular reason.
As part of resolving this issue, have tried these approaches already, but no luck.
enter image description here
Changes to the git url in helm release
Reinstalling the flux
Upgrading helm chart apiVersion
Upgrading apiVersion in helm release
Helm rollback
Trying for helm upgrade-blocker not able to build helm chart
It would be really helpful if someone could share some troubleshooting insights.

Related

Helm chart failed to download

When trying to do a list on helm by below command I am able to see the list of charts currently deployed in GKE cluster
helm list --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
abc-cd in-gke 1 2023-01-06 deployed cd-5.16.14 v2.5.5
However when trying to download , it's throwing download error
$ helm show chart cd-5.16.14
Error: failed to download "cd-5.16.14"
Also helm repo showing blank , not sure if this has any significance as I can already see the charts
$ helm repo list
Error: no repositories to show
helm list --all-namespaces shows the releases that are already installed in your k8s cluster, and helm show shows information about the chart.
"A Chart is a Helm package. It contains all of the resource definitions
necessary to run an application, tool, or service inside of a
Kubernetes cluster.
A Repository is the place where charts can be collected and shared.
A Release is an instance of a chart running in a Kubernetes cluster.
One chart can often be installed many times into the same cluster. And
each time it is installed, a new release is created."
- from Helm documentation
Now if you are getting no response from helm repo list means that you need to add local repositories, and then you may need to update them. To do that use:
helm repo add [NAME] [URL] [flags] To add a repository.
helm repo update [REPO1 [REPO2 ...]] [flags] To update the information on available charts locally from chart repositories.
If it didn't work for some reasons, you may try helm repo add with --force-update as recommended in different troubleshooting scenarios here: https://helm.sh/docs/faq/troubleshooting/
If it worked you would be able to run helm show REPO_NAME/CHART_NAME.
In case you lost access to the chart or its repository, or it was deployed from a local helm chart that was not published to an artifactory. You can get the rendered manifest with helm get manifest RELEASE, with your example's inputs it will be:
helm get manifest abc-cd --namespace in-gke
And this won't show your helm values to get that you can try with helm get values RELEASE_NAME [flags], which would be something like:
helm get values abc-cd --namespace in-gke --all
Also, if any of these commands fail add --debug or set HELM_DEBUG=1.
I hope this was helpful :)

Migrate Kubernetes manifests to Helm charts

I'm currently deploying k8s using manifests and kubectl command.
Is there any automated way to convert these manifests to Helm charts?
If not, can you please give me a template or examples to follow in order to do this migration manually?
Thank you.
I tried helmify CLI but I was unable to install it.

why does kubernetes delete secrets after helm upgrade?

when performing helm upgrade, I find that secrets that are created upon initial install are deleted. Why is this? The example I am using is dagster. When installing with:
helm install dagster dagster/dagster \ --namespace dagster \ --create-namespace
everything starts up fine and secrets are created. When updating the image and tag and performing an upgrade with:
helm upgrade -f charts/dagster-user-deployments/values.yaml dagster ./charts/dagster-user-deployments -n dagster
the image is upgraded, but all secrets are deleted. Why would/ could this happen?
After running the upgrade command, I expect secrets to still be in place, and the new image to be pulled and run.
when performing helm upgrade, I find that secrets that are created upon initial install are deleted. Why is this?
This is currently how helm works, here's the issue opened for discussion, there are several workarounds provided here as well.
Helm will create a new secret when you install/upgrade a release and you can check all the information regarding this in .airflow.
By default helm will keep up to 10 revisions and whenever you run commands like helm list, helm history, helm upgrade it will know what it has done in its past.

Is There a Way to Detect Changes made to Resources Deployed by a Helm Chart

We have several resources deployed as part of a helm (v3) chart. Some time ago, I made changes to resources deployed by that helm chart manually, via kubectl. This caused some drift between the values in the yaml resources deployed by the helm release (as show by helm get values <release>) and what is actually deployed in the cluster
Example: kubectl describe deployment <deployment> shows an updated image that was manually applied via a kubectl re-apply. Whereas helm show values <release> shows the original image used by helm for said deployment.
I realize that I should have performed a helm upgrade with a modified values.yaml file to execute the image change, but I am wondering if there is a way for me to sync the state of the values I manually updated with the values in the helm release. The goal is to create a new default values.yaml that reflect the current state of the cluster resources.
Thanks!
This is a community wiki answer posted for better visibility. Feel free to expand it.
According to the Helm issue 2730 this feature will not be added in the Helm, as it is outside of the scope of the project.
It looks like there is no existing tool right from the Helm, that would help to port/adapt the life kubernetes resource back into existing or new helm charts/releases.
Based on this, you can use one of the following options:
As suggested by #David Maze. The Helm Diff Plugin will show you the difference between the chart output and the cluster, but then you need to manually update values.yaml and templates.
The helm-adopt plugin is a helm plugin to adopt existing k8s resources into a new generated helm chart.

Where is the Superset Helm Chart?

I am looking for a helm chart of Superset to set it up on Kubernetes which is hosted remotely. In other words I would like to call "helm repo add" on a remote url.
I found this one here but it says that it is deprecated with no reference to a new location. The only thing I could find is this pull request, but the repository it is leading to does not seem to contain Superset.
Does anyone know if there is still a remote Superset helm chart somewhere out there?
According to the documentation here
A helm chart has been published and can be added as
helm repo add superset https://apache.github.io/superset
Then installed
helm upgrade --install --values my-values.yaml superset superset/superset
https://github.com/apache/superset/tree/master/helm/superset
is where I found the code of the chart