Skip to content

Commit

Permalink
Export k8s flags (#1038)
Browse files Browse the repository at this point in the history
  • Loading branch information
marctc authored Jul 18, 2024
1 parent 61c142d commit 806a68a
Show file tree
Hide file tree
Showing 6 changed files with 27 additions and 22 deletions.
4 changes: 2 additions & 2 deletions pkg/beyla/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import (
"github.com/grafana/beyla/pkg/internal/filter"
"github.com/grafana/beyla/pkg/internal/imetrics"
"github.com/grafana/beyla/pkg/internal/infraolly/process"
"github.com/grafana/beyla/pkg/internal/kube"
"github.com/grafana/beyla/pkg/internal/traces"
"github.com/grafana/beyla/pkg/kubeflags"
"github.com/grafana/beyla/pkg/services"
"github.com/grafana/beyla/pkg/transform"
)
Expand Down Expand Up @@ -105,7 +105,7 @@ var DefaultConfig = Config{
HostnameDNSResolution: true,
},
Kubernetes: transform.KubernetesDecorator{
Enable: kube.EnabledDefault,
Enable: kubeflags.EnabledDefault,
InformersSyncTimeout: 30 * time.Second,
},
},
Expand Down
4 changes: 2 additions & 2 deletions pkg/beyla/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ import (
ebpfcommon "github.com/grafana/beyla/pkg/internal/ebpf/common"
"github.com/grafana/beyla/pkg/internal/imetrics"
"github.com/grafana/beyla/pkg/internal/infraolly/process"
"github.com/grafana/beyla/pkg/internal/kube"
"github.com/grafana/beyla/pkg/internal/netolly/transform/cidr"
"github.com/grafana/beyla/pkg/internal/traces"
"github.com/grafana/beyla/pkg/kubeflags"
"github.com/grafana/beyla/pkg/transform"
)

Expand Down Expand Up @@ -162,7 +162,7 @@ network:
},
Kubernetes: transform.KubernetesDecorator{
KubeconfigPath: "/foo/bar",
Enable: kube.EnabledTrue,
Enable: kubeflags.EnabledTrue,
InformersSyncTimeout: 30 * time.Second,
},
Select: attributes.Selection{
Expand Down
25 changes: 9 additions & 16 deletions pkg/internal/kube/informer_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,8 @@ import (
"time"

"k8s.io/client-go/kubernetes"
)

type EnableFlag string

const (
EnabledTrue = EnableFlag("true")
EnabledFalse = EnableFlag("false")
EnabledAutodetect = EnableFlag("autodetect")
EnabledDefault = EnabledFalse
"github.com/grafana/beyla/pkg/kubeflags"
)

type MetadataProvider struct {
Expand All @@ -32,7 +25,7 @@ type MetadataProvider struct {
}

func NewMetadataProvider(
enable EnableFlag,
enable kubeflags.EnableFlag,
disabledInformers []string,
kubeConfigPath string,
syncTimeout time.Duration,
Expand All @@ -50,20 +43,20 @@ func (mp *MetadataProvider) IsKubeEnabled() bool {
if mp == nil {
return false
}
switch strings.ToLower(string(mp.enable.Load().(EnableFlag))) {
case string(EnabledTrue):
switch strings.ToLower(string(mp.enable.Load().(kubeflags.EnableFlag))) {
case string(kubeflags.EnabledTrue):
return true
case string(EnabledFalse), "": // empty value is disabled
case string(kubeflags.EnabledFalse), "": // empty value is disabled
return false
case string(EnabledAutodetect):
case string(kubeflags.EnabledAutodetect):
// We autodetect that we are in a kubernetes if we can properly load a K8s configuration file
_, err := LoadConfig(mp.kubeConfigPath)
if err != nil {
klog().Debug("kubeconfig can't be detected. Assuming we are not in Kubernetes", "error", err)
mp.enable.Store(EnabledFalse)
mp.enable.Store(kubeflags.EnabledFalse)
return false
}
mp.enable.Store(EnabledTrue)
mp.enable.Store(kubeflags.EnabledTrue)
return true
default:
klog().Warn("invalid value for Enable value. Ignoring stage", "value", mp.enable.Load())
Expand All @@ -72,7 +65,7 @@ func (mp *MetadataProvider) IsKubeEnabled() bool {
}

func (mp *MetadataProvider) ForceDisable() {
mp.enable.Store(EnabledFalse)
mp.enable.Store(kubeflags.EnabledFalse)
}

func (mp *MetadataProvider) Get(ctx context.Context) (*Metadata, error) {
Expand Down
3 changes: 2 additions & 1 deletion pkg/internal/pipe/instrumenter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"github.com/grafana/beyla/pkg/internal/svc"
"github.com/grafana/beyla/pkg/internal/testutil"
"github.com/grafana/beyla/pkg/internal/traces"
"github.com/grafana/beyla/pkg/kubeflags"
"github.com/grafana/beyla/pkg/transform"
"github.com/grafana/beyla/test/collector"
"github.com/grafana/beyla/test/consumer"
Expand All @@ -39,7 +40,7 @@ func gctx(groups attributes.AttrGroups) *global.ContextInfo {
return &global.ContextInfo{
Metrics: imetrics.NoopReporter{},
MetricAttributeGroups: groups,
K8sInformer: kube.NewMetadataProvider(kube.EnabledFalse, nil, "", 0),
K8sInformer: kube.NewMetadataProvider(kubeflags.EnabledFalse, nil, "", 0),
}
}

Expand Down
10 changes: 10 additions & 0 deletions pkg/kubeflags/kubeflags.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package kubeflags

type EnableFlag string

const (
EnabledTrue = EnableFlag("true")
EnabledFalse = EnableFlag("false")
EnabledAutodetect = EnableFlag("autodetect")
EnabledDefault = EnabledFalse
)
3 changes: 2 additions & 1 deletion pkg/transform/k8s.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ import (
"github.com/grafana/beyla/pkg/internal/pipe/global"
"github.com/grafana/beyla/pkg/internal/request"
"github.com/grafana/beyla/pkg/internal/svc"
"github.com/grafana/beyla/pkg/kubeflags"
)

func klog() *slog.Logger {
return slog.With("component", "transform.KubernetesDecorator")
}

type KubernetesDecorator struct {
Enable kube.EnableFlag `yaml:"enable" env:"BEYLA_KUBE_METADATA_ENABLE"`
Enable kubeflags.EnableFlag `yaml:"enable" env:"BEYLA_KUBE_METADATA_ENABLE"`

// ClusterName overrides cluster name. If empty, the NetO11y module will try to retrieve
// it from the Cloud Provider Metadata (EC2, GCP and Azure), and leave it empty if it fails to.
Expand Down

0 comments on commit 806a68a

Please sign in to comment.