Skip to content

Commit 08ef955

Browse files
committed
use k8s bearer token file instead actual token itself to handle key rotations
1 parent 47132e6 commit 08ef955

File tree

3 files changed

+11
-31
lines changed

3 files changed

+11
-31
lines changed

receiver/awscontainerinsightreceiver/internal/k8sapiserver/prometheus_scraper.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ const (
2929
caFile = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"
3030
collectionInterval = 60 * time.Second
3131
// needs to start with "containerInsightsKubeAPIServerScraper" for histogram deltas in the emf exporter
32-
jobName = "containerInsightsKubeAPIServerScraper"
32+
jobName = "containerInsightsKubeAPIServerScraper"
33+
serviceAccountTokenDefaultPath = "/var/run/secrets/kubernetes.io/serviceaccount/token" // #nosec
3334
)
3435

3536
var controlPlaneMetricAllowList = []string{
@@ -72,7 +73,6 @@ type PrometheusScraperOpts struct {
7273
Host component.Host
7374
ClusterNameProvider clusterNameProvider
7475
LeaderElection *LeaderElection
75-
BearerToken string
7676
}
7777

7878
func NewPrometheusScraper(opts PrometheusScraperOpts) (*PrometheusScraper, error) {
@@ -101,6 +101,10 @@ func NewPrometheusScraper(opts PrometheusScraperOpts) (*PrometheusScraper, error
101101
CAFile: caFile,
102102
InsecureSkipVerify: false,
103103
},
104+
Authorization: &configutil.Authorization{
105+
Type: "Bearer",
106+
CredentialsFile: serviceAccountTokenDefaultPath,
107+
},
104108
},
105109
ScrapeInterval: model.Duration(collectionInterval),
106110
ScrapeTimeout: model.Duration(collectionInterval),
@@ -145,12 +149,6 @@ func NewPrometheusScraper(opts PrometheusScraperOpts) (*PrometheusScraper, error
145149
},
146150
}
147151

148-
if opts.BearerToken != "" {
149-
scrapeConfig.HTTPClientConfig.BearerToken = configutil.Secret(opts.BearerToken)
150-
} else {
151-
opts.TelemetrySettings.Logger.Warn("bearer token is not set, control plane metrics will not be published")
152-
}
153-
154152
promConfig := prometheusreceiver.Config{
155153
PrometheusConfig: &prometheusreceiver.PromConfig{
156154
ScrapeConfigs: []*config.ScrapeConfig{scrapeConfig},

receiver/awscontainerinsightreceiver/internal/k8sapiserver/prometheus_scraper_test.go

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,6 @@ func TestNewPrometheusScraperBadInputs(t *testing.T) {
101101
Host: componenttest.NewNopHost(),
102102
ClusterNameProvider: mockClusterNameProvider{},
103103
LeaderElection: nil,
104-
BearerToken: "",
105104
},
106105
{
107106
Ctx: context.TODO(),
@@ -111,7 +110,6 @@ func TestNewPrometheusScraperBadInputs(t *testing.T) {
111110
Host: componenttest.NewNopHost(),
112111
ClusterNameProvider: mockClusterNameProvider{},
113112
LeaderElection: &leaderElection,
114-
BearerToken: "",
115113
},
116114
{
117115
Ctx: context.TODO(),
@@ -121,7 +119,6 @@ func TestNewPrometheusScraperBadInputs(t *testing.T) {
121119
Host: nil,
122120
ClusterNameProvider: mockClusterNameProvider{},
123121
LeaderElection: &leaderElection,
124-
BearerToken: "",
125122
},
126123
{
127124
Ctx: context.TODO(),
@@ -131,7 +128,6 @@ func TestNewPrometheusScraperBadInputs(t *testing.T) {
131128
Host: componenttest.NewNopHost(),
132129
ClusterNameProvider: nil,
133130
LeaderElection: &leaderElection,
134-
BearerToken: "",
135131
},
136132
}
137133

@@ -172,7 +168,6 @@ func TestNewPrometheusScraperEndToEnd(t *testing.T) {
172168
Host: componenttest.NewNopHost(),
173169
ClusterNameProvider: mockClusterNameProvider{},
174170
LeaderElection: &leaderElection,
175-
BearerToken: "",
176171
})
177172
assert.NoError(t, err)
178173
assert.Equal(t, mockClusterNameProvider{}, scraper.clusterNameProvider)

receiver/awscontainerinsightreceiver/receiver.go

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,6 @@ import (
1212
"time"
1313

1414
"github.com/amazon-contributing/opentelemetry-collector-contrib/extension/awsmiddleware"
15-
"go.opentelemetry.io/collector/component"
16-
"go.opentelemetry.io/collector/consumer"
17-
"go.opentelemetry.io/collector/pdata/pmetric"
18-
"go.opentelemetry.io/collector/receiver"
19-
"go.uber.org/zap"
20-
"k8s.io/client-go/rest"
21-
2215
ci "github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/containerinsight"
2316
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/k8s/k8sclient"
2417
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver/internal/cadvisor"
@@ -33,6 +26,11 @@ import (
3326
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver/internal/prometheusscraper/decoratorconsumer"
3427
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver/internal/stores"
3528
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver/internal/stores/kubeletutil"
29+
"go.opentelemetry.io/collector/component"
30+
"go.opentelemetry.io/collector/consumer"
31+
"go.opentelemetry.io/collector/pdata/pmetric"
32+
"go.opentelemetry.io/collector/receiver"
33+
"go.uber.org/zap"
3634
)
3735

3836
const (
@@ -270,16 +268,6 @@ func (acir *awsContainerInsightReceiver) initPrometheusScraper(ctx context.Conte
270268
}
271269

272270
acir.settings.Logger.Debug("kube apiserver endpoint found", zap.String("endpoint", endpoint))
273-
// use the same leader
274-
275-
restConfig, err := rest.InClusterConfig()
276-
if err != nil {
277-
return err
278-
}
279-
bearerToken := restConfig.BearerToken
280-
if bearerToken == "" {
281-
return errors.New("bearer token was empty")
282-
}
283271

284272
acir.prometheusScraper, err = k8sapiserver.NewPrometheusScraper(k8sapiserver.PrometheusScraperOpts{
285273
Ctx: ctx,
@@ -289,7 +277,6 @@ func (acir *awsContainerInsightReceiver) initPrometheusScraper(ctx context.Conte
289277
Host: host,
290278
ClusterNameProvider: hostInfo,
291279
LeaderElection: leaderElection,
292-
BearerToken: bearerToken,
293280
})
294281
return err
295282
}

0 commit comments

Comments
 (0)