mirror of
https://github.com/k8sgpt-ai/k8sgpt.git
synced 2026-02-21 14:52:11 +00:00
fix: validate namespace before running custom analyzers (#1617)
* feat(serve): add short flag and env var for metrics port Add short flag -m for --metrics-port to improve discoverability. Add K8SGPT_METRICS_PORT environment variable support, consistent with other K8SGPT_* environment variables. This helps users who encounter port conflicts on the default metrics port (8081) when running k8sgpt serve with --mcp or other configurations. Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxes53235@gmail.com> Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com> * fix: validate namespace before running custom analyzers Custom analyzers previously ignored the --namespace flag entirely, executing even when an invalid or misspelled namespace was provided. This was inconsistent with built-in filter behavior, which respects namespace scoping. Add namespace existence validation in RunCustomAnalysis() before executing custom analyzers. If a namespace is specified but does not exist, an error is reported and custom analyzers are skipped. Fixes #1601 Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxes53235@gmail.com> Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com> --------- Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxes53235@gmail.com> Signed-off-by: Three Foxes (in a Trenchcoat) <threefoxesyes3inatrenchcoat@gmail.com> Co-authored-by: Alex Jones <1235925+AlexsJones@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
285c1353d5
commit
458aa9deba
@@ -35,6 +35,7 @@ import (
|
||||
"github.com/k8sgpt-ai/k8sgpt/pkg/util"
|
||||
"github.com/schollz/progressbar/v3"
|
||||
"github.com/spf13/viper"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
type Analysis struct {
|
||||
@@ -227,6 +228,15 @@ func (a *Analysis) CustomAnalyzersAreAvailable() bool {
|
||||
}
|
||||
|
||||
func (a *Analysis) RunCustomAnalysis() {
|
||||
// Validate namespace if specified, consistent with built-in filter behavior
|
||||
if a.Namespace != "" && a.Client != nil {
|
||||
_, err := a.Client.Client.CoreV1().Namespaces().Get(a.Context, a.Namespace, metav1.GetOptions{})
|
||||
if err != nil {
|
||||
a.Errors = append(a.Errors, fmt.Sprintf("namespace %q not found: %s", a.Namespace, err))
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
var customAnalyzers []custom.CustomAnalyzer
|
||||
if err := viper.UnmarshalKey("custom_analyzers", &customAnalyzers); err != nil {
|
||||
a.Errors = append(a.Errors, err.Error())
|
||||
|
||||
Reference in New Issue
Block a user