Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement flux debug helmrelease command #5106

Merged
merged 1 commit into from
Dec 11, 2024
Merged

Implement flux debug helmrelease command #5106

merged 1 commit into from
Dec 11, 2024

Conversation

stefanprodan
Copy link
Member

@stefanprodan stefanprodan commented Dec 10, 2024

This PR implements the flux debug hr command as specified in #5101

The debug helmrelease command can be used to troubleshoot failing Helm release reconciliations.
WARNING: this command will print sensitive information if Kubernetes Secrets are referenced in the HelmRelease .spec.valuesFrom field.

Usage:
  flux debug helmrelease [name] [flags]

Aliases:
  helmrelease, hr

Examples:
  # Print the status of a Helm release
  flux debug hr podinfo --show-status

  # Export the final values of a Helm release composed from referred ConfigMaps and Secrets
  flux debug hr podinfo --show-values > values.yaml

Closes: #5101
Fixes: fluxcd/helm-controller#497

@stefanprodan stefanprodan added area/helm Helm related issues and pull requests area/ux In pursuit of a delightful user experience labels Dec 10, 2024
@stefanprodan stefanprodan force-pushed the debug-cmd branch 2 times, most recently from b16bbaa to 73f1cf5 Compare December 10, 2024 18:42
Signed-off-by: Stefan Prodan <stefan.prodan@gmail.com>
Copy link
Member

@matheuscscp matheuscscp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! If you prefer please feel free to mark the comment about exact args as resolved since we need to address this for all commands.

@stefanprodan stefanprodan merged commit d51a2f8 into main Dec 11, 2024
8 checks passed
@stefanprodan stefanprodan deleted the debug-cmd branch December 11, 2024 13:57
Comment on lines +66 to +68
if debugHelmReleaseArgs.showStatus == false && debugHelmReleaseArgs.showValues == false {
return fmt.Errorf("either --show-status or --show-values must be set")
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Requiring a flag for default debug report seems unnecessary. If the intent is to debug, the default output, without any flags, could be the status result.

Instead of --show-status, a flag to hide the status when showing other values may have been better.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was discussed in the dev meeting. It was agreed that the default output should be a summary of all the helpful details about the release. We can define what should constitute a debug summary result and show that without any flag in the future.

cmd/flux/debug_helmrelease.go Show resolved Hide resolved
if err != nil {
return err
}
rootCmd.Print(string(status))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at the multi-document YAML output, when both status and values are printed, there's no indication of which part is status and value. Since it's all YAML documents, we can add a comment at the top that tells what the document is. For example:

# Release Status
conditions:
- lastTransitionTime: "2024-12-13T14:58:20Z"
  message: Helm upgrade succeeded for release default/podinfo.v2 with chart podinfo@6.5.1
  observedGeneration: 4
  reason: UpgradeSucceeded
  status: "True"
  type: Ready
- lastTransitionTime: "2024-12-13T14:58:20Z"
  message: Helm upgrade succeeded for release default/podinfo.v2 with chart podinfo@6.5.1
...
lastAttemptedRevision: 6.5.1
observedGeneration: 4
storageNamespace: default
---
# Release Values
replicaCount: 2
logLevel: debug

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After implementing flux debug kustomization I realise that mixing the outputs is not the best idea. Here by chance both flags output YAML, but this is not the case in the flux debug kustomization. I'm for not allowing both flags to be set, similar to how it's done now in #5117

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay. Left a comment about the standalone debug status output in that PR which also applies to HR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/helm Helm related issues and pull requests area/ux In pursuit of a delightful user experience
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Troubleshoot helpers for Helm release install/upgrade failures Output values.yaml for HelmRelease Resources
3 participants