argoproj / argo-cd

Declarative Continuous Deployment for Kubernetes
https://argo-cd.readthedocs.io
Apache License 2.0
18.01k stars 5.49k forks source link

Helm Version Mismatch with Istio Deployment on ArgoCD v2.13.0 #20835

Open DunkRing opened 1 week ago

DunkRing commented 1 week ago

Summary

ArgoCD v2.13.0 currently uses Helm v3.15.4 within the argocd-repo-server, which presents a compatibility issue when deploying recent versions of Istio. For example, Istio 1.24.0 requires at least Helm v3.16.3, resulting in deployment failures and feature limitations due to the older Helm version used by ArgoCD.

Motivation

Deploying Istio via ArgoCD is a common practice for managing and automating infrastructure, particularly in Kubernetes environments. Here are specific use cases where this becomes problematic:

Istio 1.24.0 Deployment Failure: Users attempting to deploy or upgrade to Istio 1.24.0 encounter errors due to Helm version constraints, as it requires Helm v3.16.3 or higher. Feature Gaps and Limitations: For users relying on newer versions of Istio, using an older Helm version in ArgoCD leads to missed features, potential security vulnerabilities, and operational inconsistencies compared to directly using an updated Helm CLI. Broader Ecosystem Impact: As more Kubernetes tools and operators adopt recent Helm versions, users need to rely on consistent support across their tooling, including ArgoCD.

Proposal

The ideal solution is to update the bundled Helm version in ArgoCD's argocd-repo-server to a version that satisfies current compatibility requirements with popular tools such as Istio (e.g., Helm v3.16.3 or higher). This would ensure:

Compatibility with the latest stable releases of widely-used tools. Improved support for Helm-based deployments without manual intervention or workarounds. Reduced friction for users upgrading ArgoCD and integrating it into modern infrastructure workflows. Please consider incorporating a more recent Helm version in future ArgoCD releases to meet these needs. Alternatively, providing a configurable mechanism for specifying the Helm version used by argocd-repo-server could also offer greater flexibility.

anandf commented 6 days ago

For kustomize, we have an option to use a different version using volume mounts and using the appropriate configuration in argocd-cm. https://argo-cd.readthedocs.io/en/stable/user-guide/kustomize/#custom-kustomize-versions

Probably we can implement a similar feature for helm as part of this enhancement.

DunkRing commented 6 days ago

That would be awesome! But can we get the helm dependency bumped in the next version v2.13.1. :)

anandf commented 6 days ago

Generally y-stream updates of 3rd party dependencies i.e 3.15.x -> 3.16.x can only happen in the next ArgoCD y-stream release i.e 2.14 in order to maintain the stability of z-stream releases.

andrii-korotkov-verkada commented 6 days ago

There are a few PRs trying to do that, but they are running into some issues.