k8sgpt icon indicating copy to clipboard operation
k8sgpt copied to clipboard

[Bug]: --with-doc flag not working

Open pavneeta opened this issue 1 year ago • 3 comments

Checklist

  • [X] I've searched for similar issues and couldn't find anything matching
  • [X] I've included steps to reproduce the behavior

Affected Components

  • [X] K8sGPT (CLI)
  • [ ] K8sGPT Operator

K8sGPT Version

No response

Kubernetes Version

No response

Host OS and its Version

Ubunto 2204

Steps to reproduce

  1. Run k8sgpt analyze --explain --with-doc

  2. The output did not have any link or URL . image

Expected behaviour

There should be a complete or short URl of the k8s docs being referenced for the recommendation or error message.

Actual behaviour

No link provided in the response

Additional Information

No response

pavneeta avatar Dec 29 '23 04:12 pavneeta

@golgoth31 if I am correct, this actually just checks to see if there is an error from OpenAPIschema right? Do we think there needs to be some more work done to clarify what this command really does?

	// we get the openapi schema from the server only if required by the flag "with-doc"
	openapiSchema := &openapi_v2.Document{}
	if a.WithDoc {
		var openApiErr error

		openapiSchema, openApiErr = a.Client.Client.Discovery().OpenAPISchema()
		if openApiErr != nil {
			a.Errors = append(a.Errors, fmt.Sprintf("[KubernetesDoc] %s", openApiErr))
		}
	}

AlexsJones avatar Dec 29 '23 11:12 AlexsJones

Hi @AlexsJones , The command you mention is the command to extract the full openapi schema from the target kubernetes cluster only if requested by the "with-doc" flag.

Unfortunatly, this is not used if not requested by an analyser. For exemple, the cronjob analyser:

  • configure the openapi schema parser https://github.com/k8sgpt-ai/k8sgpt/blob/main/pkg/analyzer/cronjob.go#L33
  • perse the schema when needed https://github.com/k8sgpt-ai/k8sgpt/blob/main/pkg/analyzer/cronjob.go#L56

If the nothing is found or the schema not parsed, the kubernetesDoc string is empty and the output is not shown https://github.com/k8sgpt-ai/k8sgpt/blob/main/pkg/analysis/output.go#L81

We have multiple ways to fix this:

  • always add a kubernetesDoc value to "not available"; replaced by the real value if found
  • update the documentation to say that nothing is displayed if not found

In a first run, I can add all the missing openapi parsing requests to the known objects.

Do you have any guide lines for the analysers writing, if yes, we schould add this part.

golgoth31 avatar Dec 29 '23 14:12 golgoth31

@AlexsJones Can I work on this issue?

VaibhavMalik4187 avatar Jan 25 '24 10:01 VaibhavMalik4187