mirror of https://github.com/knative/caching.git
[master] Auto-update dependencies (#264)
Produced via: `./hack/update-deps.sh --upgrade && ./hack/update-codegen.sh` /assign n3wscott vagababov /cc n3wscott vagababov
This commit is contained in:
parent
c55f2d33c5
commit
f7d206ca4a
4
go.mod
4
go.mod
|
@ -18,8 +18,8 @@ require (
|
|||
k8s.io/client-go v11.0.1-0.20190805182717-6502b5e7b1b5+incompatible
|
||||
k8s.io/code-generator v0.18.0
|
||||
k8s.io/kube-openapi v0.0.0-20190816220812-743ec37842bf
|
||||
knative.dev/pkg v0.0.0-20200501005942-d980c0865972
|
||||
knative.dev/test-infra v0.0.0-20200430225942-f7c1fafc1cde
|
||||
knative.dev/pkg v0.0.0-20200504072243-f591fc672afa
|
||||
knative.dev/test-infra v0.0.0-20200501211843-902135793f08
|
||||
)
|
||||
|
||||
replace (
|
||||
|
|
8
go.sum
8
go.sum
|
@ -914,12 +914,12 @@ k8s.io/utils v0.0.0-20190801114015-581e00157fb1/go.mod h1:sZAwmy6armz5eXlNoLmJcl
|
|||
k8s.io/utils v0.0.0-20190907131718-3d4f5b7dea0b h1:eMM0sTvh3KBVGwJfuNcU86P38TJhlVMAICbFPDG3t0M=
|
||||
k8s.io/utils v0.0.0-20190907131718-3d4f5b7dea0b/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew=
|
||||
knative.dev/pkg v0.0.0-20191101194912-56c2594e4f11/go.mod h1:pgODObA1dTyhNoFxPZTTjNWfx6F0aKsKzn+vaT9XO/Q=
|
||||
knative.dev/pkg v0.0.0-20200501005942-d980c0865972 h1:N/umsmNgROaU+fIziEBZ+L32OMpgwZRYW3VeHUPR8ZA=
|
||||
knative.dev/pkg v0.0.0-20200501005942-d980c0865972/go.mod h1:X4wmXb4xUR+1eDBoP6AeVfAqsyxl1yATnRdSgFdjhQw=
|
||||
knative.dev/test-infra v0.0.0-20200429211942-f4c4853375cf h1:rNWg3NiXNLjZC9C1EJf2qKA+mRnrWMLW1KONsEusLYg=
|
||||
knative.dev/test-infra v0.0.0-20200429211942-f4c4853375cf/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
|
||||
knative.dev/pkg v0.0.0-20200504072243-f591fc672afa h1:828TZbIIKb5O98q484YTSn5cjiZjxkue1ksJ3O6G+iI=
|
||||
knative.dev/pkg v0.0.0-20200504072243-f591fc672afa/go.mod h1:1RvwKBbKqKYt5rgI4lfYdWCdtXgMxJY73QxPb3jZPC4=
|
||||
knative.dev/test-infra v0.0.0-20200430225942-f7c1fafc1cde h1:QSzxFsf21WXNhODvh0jRKbFR+c5UI7WFjiISy/sMOLg=
|
||||
knative.dev/test-infra v0.0.0-20200430225942-f7c1fafc1cde/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
|
||||
knative.dev/test-infra v0.0.0-20200501211843-902135793f08 h1:MWN+yyFFtNa9wSLx8VWFlLmJP6q3p0t+nhGj9hpJwH8=
|
||||
knative.dev/test-infra v0.0.0-20200501211843-902135793f08/go.mod h1:xcdUkMJrLlBswIZqL5zCuBFOC22WIPMQoVX1L35i0vQ=
|
||||
modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw=
|
||||
modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk=
|
||||
modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k=
|
||||
|
|
|
@ -185,29 +185,9 @@ func NewImpl(ctx {{.contextContext|raw}}, r Interface{{if .hasClass}}, classValu
|
|||
|
||||
{{.type|lowercaseSingular}}Informer := {{.informerGet|raw}}(ctx)
|
||||
|
||||
recorder := {{.controllerGetEventRecorder|raw}}(ctx)
|
||||
if recorder == nil {
|
||||
// Create event broadcaster
|
||||
logger.Debug("Creating event broadcaster")
|
||||
eventBroadcaster := {{.recordNewBroadcaster|raw}}()
|
||||
watches := []{{.watchInterface|raw}}{
|
||||
eventBroadcaster.StartLogging(logger.Named("event-broadcaster").Infof),
|
||||
eventBroadcaster.StartRecordingToSink(
|
||||
&{{.typedcorev1EventSinkImpl|raw}}{Interface: {{.kubeclientGet|raw}}(ctx).CoreV1().Events("")}),
|
||||
}
|
||||
recorder = eventBroadcaster.NewRecorder({{.schemeScheme|raw}}, {{.corev1EventSource|raw}}{Component: defaultControllerAgentName})
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
for _, w := range watches {
|
||||
w.Stop()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
rec := &reconcilerImpl{
|
||||
Client: {{.clientGet|raw}}(ctx),
|
||||
Lister: {{.type|lowercaseSingular}}Informer.Lister(),
|
||||
Recorder: recorder,
|
||||
reconciler: r,
|
||||
finalizerName: defaultFinalizerName,
|
||||
{{if .hasClass}}classValue: classValue,{{end}}
|
||||
|
@ -217,6 +197,7 @@ func NewImpl(ctx {{.contextContext|raw}}, r Interface{{if .hasClass}}, classValu
|
|||
queueName := {{.fmtSprintf|raw}}("%s.%s", {{.stringsReplaceAll|raw}}(t.PkgPath(), "/", "-"), t.Name())
|
||||
|
||||
impl := {{.controllerNewImpl|raw}}(rec, logger, queueName)
|
||||
agentName := defaultControllerAgentName
|
||||
|
||||
// Pass impl to the options. Save any optional results.
|
||||
for _, fn := range optionsFns {
|
||||
|
@ -227,11 +208,41 @@ func NewImpl(ctx {{.contextContext|raw}}, r Interface{{if .hasClass}}, classValu
|
|||
if opts.FinalizerName != "" {
|
||||
rec.finalizerName = opts.FinalizerName
|
||||
}
|
||||
if opts.AgentName != "" {
|
||||
agentName = opts.AgentName
|
||||
}
|
||||
}
|
||||
|
||||
rec.Recorder = createRecorder(ctx, agentName)
|
||||
|
||||
return impl
|
||||
}
|
||||
|
||||
func createRecorder(ctx context.Context, agentName string) record.EventRecorder {
|
||||
logger := {{.loggingFromContext|raw}}(ctx)
|
||||
|
||||
recorder := {{.controllerGetEventRecorder|raw}}(ctx)
|
||||
if recorder == nil {
|
||||
// Create event broadcaster
|
||||
logger.Debug("Creating event broadcaster")
|
||||
eventBroadcaster := {{.recordNewBroadcaster|raw}}()
|
||||
watches := []{{.watchInterface|raw}}{
|
||||
eventBroadcaster.StartLogging(logger.Named("event-broadcaster").Infof),
|
||||
eventBroadcaster.StartRecordingToSink(
|
||||
&{{.typedcorev1EventSinkImpl|raw}}{Interface: {{.kubeclientGet|raw}}(ctx).CoreV1().Events("")}),
|
||||
}
|
||||
recorder = eventBroadcaster.NewRecorder({{.schemeScheme|raw}}, {{.corev1EventSource|raw}}{Component: agentName})
|
||||
go func() {
|
||||
<-ctx.Done()
|
||||
for _, w := range watches {
|
||||
w.Stop()
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
return recorder
|
||||
}
|
||||
|
||||
func init() {
|
||||
{{.schemeAddToScheme|raw}}({{.schemeScheme|raw}})
|
||||
}
|
||||
|
|
|
@ -96,7 +96,7 @@ func Filter(gvk schema.GroupVersionKind) func(obj interface{}) bool {
|
|||
// cache.FilteringResourceEventHandler that filter based on the
|
||||
// schema.GroupVersionKind of the controlling resources.
|
||||
//
|
||||
// Deprecated: Use FilterControlledByGVK instead.
|
||||
// Deprecated: Use FilterControllerGVK instead.
|
||||
func FilterGroupVersionKind(gvk schema.GroupVersionKind) func(obj interface{}) bool {
|
||||
return FilterControllerGVK(gvk)
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ func FilterControllerGVK(gvk schema.GroupVersionKind) func(obj interface{}) bool
|
|||
// cache.FilteringResourceEventHandler that filter based on the
|
||||
// schema.GroupKind of the controlling resources.
|
||||
//
|
||||
// Deprecated: Use FilterControlledByGK instead
|
||||
// Deprecated: Use FilterControllerGK instead
|
||||
func FilterGroupKind(gk schema.GroupKind) func(obj interface{}) bool {
|
||||
return FilterControllerGK(gk)
|
||||
}
|
||||
|
|
|
@ -27,6 +27,10 @@ type Options struct {
|
|||
// FinalizerName is the name of the finalizer this reconciler uses. This
|
||||
// overrides a default finalizer name assigned by the generator if needed.
|
||||
FinalizerName string
|
||||
|
||||
// AgentName is the name of the agent this reconciler uses. This overrides
|
||||
// the default controller's agent name.
|
||||
AgentName string
|
||||
}
|
||||
|
||||
// OptionsFn is a callback method signature that accepts an Impl and returns
|
||||
|
|
|
@ -29,6 +29,7 @@ import (
|
|||
|
||||
"go.opencensus.io/stats"
|
||||
"go.uber.org/zap"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"knative.dev/pkg/metrics/metricskey"
|
||||
)
|
||||
|
||||
|
@ -88,9 +89,8 @@ type metricsConfig struct {
|
|||
// writing the metrics to the stats.RecordWithOptions interface.
|
||||
recorder func(context.Context, []stats.Measurement, ...stats.Options) error
|
||||
|
||||
// secretFetcher provides access for fetching Kubernetes Secrets from an
|
||||
// informer cache.
|
||||
secretFetcher SecretFetcher
|
||||
// secret contains credentials for an exporter to use for authentication.
|
||||
secret *corev1.Secret
|
||||
|
||||
// ---- OpenCensus specific below ----
|
||||
// collectorAddress is the address of the collector, if not `localhost:55678`
|
||||
|
@ -162,10 +162,6 @@ func (mc *metricsConfig) record(ctx context.Context, mss []stats.Measurement, ro
|
|||
func createMetricsConfig(ops ExporterOptions, logger *zap.SugaredLogger) (*metricsConfig, error) {
|
||||
var mc metricsConfig
|
||||
|
||||
// We don't check if this is `nil` right now, because this is a transition step.
|
||||
// Eventually, this should be a startup check.
|
||||
mc.secretFetcher = ops.Secrets
|
||||
|
||||
if ops.Domain == "" {
|
||||
return nil, errors.New("metrics domain cannot be empty")
|
||||
}
|
||||
|
@ -205,6 +201,13 @@ func createMetricsConfig(ops ExporterOptions, logger *zap.SugaredLogger) (*metri
|
|||
if mc.requireSecure, err = strconv.ParseBool(isSecure); err != nil {
|
||||
return nil, fmt.Errorf("invalid %s value %q", CollectorSecureKey, isSecure)
|
||||
}
|
||||
|
||||
if mc.requireSecure {
|
||||
mc.secret, err = getOpenCensusSecret(ops.Component, ops.Secrets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -265,6 +268,15 @@ func createMetricsConfig(ops ExporterOptions, logger *zap.SugaredLogger) (*metri
|
|||
return stats.RecordWithOptions(ctx, append(ros, stats.WithMeasurements(mss...))...)
|
||||
}
|
||||
}
|
||||
|
||||
if scc.UseSecret {
|
||||
secret, err := getStackdriverSecret(ops.Secrets)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
mc.secret = secret
|
||||
}
|
||||
}
|
||||
|
||||
// If reporting period is specified, use the value from the configuration.
|
||||
|
|
|
@ -121,6 +121,7 @@ func UpdateExporterFromConfigMapWithOpts(opts ExporterOptions, logger *zap.Sugar
|
|||
Component: opts.Component,
|
||||
ConfigMap: configMap.Data,
|
||||
PrometheusPort: opts.PrometheusPort,
|
||||
Secrets: opts.Secrets,
|
||||
}, logger)
|
||||
}, nil
|
||||
}
|
||||
|
@ -130,6 +131,7 @@ func UpdateExporterFromConfigMapWithOpts(opts ExporterOptions, logger *zap.Sugar
|
|||
// to prevent a race condition between reading the current configuration
|
||||
// and updating the current exporter.
|
||||
func UpdateExporter(ops ExporterOptions, logger *zap.SugaredLogger) error {
|
||||
// TODO(https://github.com/knative/pkg/issues/1273): check if ops.secrets is `nil` after new metrics plan lands
|
||||
newConfig, err := createMetricsConfig(ops, logger)
|
||||
if err != nil {
|
||||
if getCurMetricsConfig() == nil {
|
||||
|
@ -141,28 +143,33 @@ func UpdateExporter(ops ExporterOptions, logger *zap.SugaredLogger) error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Updating the metrics config and the metrics exporters needs to be atomic to
|
||||
// avoid using an outdated metrics config with new exporters.
|
||||
metricsMux.Lock()
|
||||
defer metricsMux.Unlock()
|
||||
|
||||
if isNewExporterRequired(newConfig) {
|
||||
logger.Info("Flushing the existing exporter before setting up the new exporter.")
|
||||
FlushExporter()
|
||||
flushGivenExporter(curMetricsExporter)
|
||||
e, err := newMetricsExporter(newConfig, logger)
|
||||
if err != nil {
|
||||
logger.Errorf("Failed to update a new metrics exporter based on metric config %v. error: %v", newConfig, err)
|
||||
return err
|
||||
}
|
||||
existingConfig := getCurMetricsConfig()
|
||||
setCurMetricsExporter(e)
|
||||
existingConfig := curMetricsConfig
|
||||
curMetricsExporter = e
|
||||
logger.Infof("Successfully updated the metrics exporter; old config: %v; new config %v", existingConfig, newConfig)
|
||||
}
|
||||
|
||||
setCurMetricsConfig(newConfig)
|
||||
setCurMetricsConfigUnlocked(newConfig)
|
||||
return nil
|
||||
}
|
||||
|
||||
// isNewExporterRequired compares the non-nil newConfig against curMetricsConfig. When backend changes,
|
||||
// or stackdriver project ID changes for stackdriver backend, we need to update the metrics exporter.
|
||||
// This function is not implicitly thread-safe.
|
||||
// This function must be called with the metricsMux reader (or writer) locked.
|
||||
func isNewExporterRequired(newConfig *metricsConfig) bool {
|
||||
cc := getCurMetricsConfig()
|
||||
cc := curMetricsConfig
|
||||
if cc == nil || newConfig.backendDestination != cc.backendDestination {
|
||||
return true
|
||||
}
|
||||
|
@ -177,15 +184,14 @@ func isNewExporterRequired(newConfig *metricsConfig) bool {
|
|||
}
|
||||
|
||||
// newMetricsExporter gets a metrics exporter based on the config.
|
||||
// This function is not implicitly thread-safe.
|
||||
// This function must be called with the metricsMux reader (or writer) locked.
|
||||
func newMetricsExporter(config *metricsConfig, logger *zap.SugaredLogger) (view.Exporter, error) {
|
||||
ce := getCurMetricsExporter()
|
||||
// If there is a Prometheus Exporter server running, stop it.
|
||||
resetCurPromSrv()
|
||||
|
||||
// TODO(https://github.com/knative/pkg/issues/866): Move Stackdriver and Promethus
|
||||
// operations before stopping to an interface.
|
||||
if se, ok := ce.(stoppable); ok {
|
||||
if se, ok := curMetricsExporter.(stoppable); ok {
|
||||
se.StopMetricsExporter()
|
||||
}
|
||||
|
||||
|
@ -230,6 +236,10 @@ func getCurMetricsConfig() *metricsConfig {
|
|||
func setCurMetricsConfig(c *metricsConfig) {
|
||||
metricsMux.Lock()
|
||||
defer metricsMux.Unlock()
|
||||
setCurMetricsConfigUnlocked(c)
|
||||
}
|
||||
|
||||
func setCurMetricsConfigUnlocked(c *metricsConfig) {
|
||||
if c != nil {
|
||||
view.SetReportingPeriod(c.reportingPeriod)
|
||||
} else {
|
||||
|
@ -244,6 +254,10 @@ func setCurMetricsConfig(c *metricsConfig) {
|
|||
// Return value indicates whether the exporter is flushable or not.
|
||||
func FlushExporter() bool {
|
||||
e := getCurMetricsExporter()
|
||||
return flushGivenExporter(e)
|
||||
}
|
||||
|
||||
func flushGivenExporter(e view.Exporter) bool {
|
||||
if e == nil {
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -24,6 +24,7 @@ import (
|
|||
"go.opencensus.io/stats/view"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/grpc/credentials"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
)
|
||||
|
||||
|
@ -33,49 +34,53 @@ func newOpenCensusExporter(config *metricsConfig, logger *zap.SugaredLogger) (vi
|
|||
opts = append(opts, ocagent.WithAddress(config.collectorAddress))
|
||||
}
|
||||
if config.requireSecure {
|
||||
opts = append(opts, ocagent.WithTLSCredentials(credentialFetcher(config.component, config.secretFetcher, logger)))
|
||||
opts = append(opts, ocagent.WithTLSCredentials(getCredentials(config.component, config.secret, logger)))
|
||||
} else {
|
||||
opts = append(opts, ocagent.WithInsecure())
|
||||
}
|
||||
e, err := ocagent.NewExporter(opts...)
|
||||
if err != nil {
|
||||
logger.Errorw("Failed to create the OpenCensus exporter.", zap.Error(err))
|
||||
logger.Errorw("failed to create the OpenCensus exporter.", zap.Error(err))
|
||||
return nil, err
|
||||
}
|
||||
logger.Infof("Created OpenCensus exporter with config: %+v.", *config)
|
||||
logger.Infof("created OpenCensus exporter with config: %+v.", *config)
|
||||
view.RegisterExporter(e)
|
||||
return e, nil
|
||||
}
|
||||
|
||||
// credentialFetcher attempts to locate a secret containing TLS credentials
|
||||
// getOpenCensusSecret attempts to locate a secret containing TLS credentials
|
||||
// for communicating with the OpenCensus Agent. To do this, it first looks
|
||||
// for a secret named "<component>-opencensus", then for a generic
|
||||
// "opencensus" secret.
|
||||
func credentialFetcher(component string, lister SecretFetcher, logger *zap.SugaredLogger) credentials.TransportCredentials {
|
||||
func getOpenCensusSecret(component string, lister SecretFetcher) (*corev1.Secret, error) {
|
||||
if lister == nil {
|
||||
logger.Errorf("No secret lister provided for component %q; cannot use requireSecure=true", component)
|
||||
return nil, fmt.Errorf("no secret lister provided for component %q; cannot use requireSecure=true", component)
|
||||
}
|
||||
secret, err := lister(component + "-opencensus")
|
||||
if errors.IsNotFound(err) {
|
||||
secret, err = lister("opencensus")
|
||||
}
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to fetch opencensus secret for %q, cannot use requireSecure=true: %+v", component, err)
|
||||
}
|
||||
|
||||
return secret, nil
|
||||
}
|
||||
|
||||
// getCredentials attempts to create a certificate containing TLS credentials
|
||||
// for communicating with the OpenCensus Agent.
|
||||
func getCredentials(component string, secret *corev1.Secret, logger *zap.SugaredLogger) credentials.TransportCredentials {
|
||||
if secret == nil {
|
||||
logger.Errorf("no secret provided for component %q; cannot use requireSecure=true", component)
|
||||
return nil
|
||||
}
|
||||
return credentials.NewTLS(&tls.Config{
|
||||
GetClientCertificate: func(*tls.CertificateRequestInfo) (*tls.Certificate, error) {
|
||||
// We ignore the CertificateRequestInfo for now, and hand back a single fixed certificate.
|
||||
// TODO(evankanderson): maybe do something SPIFFE-ier?
|
||||
cert, err := certificateFetcher(component+"-opencensus", lister)
|
||||
if errors.IsNotFound(err) {
|
||||
cert, err = certificateFetcher("opencensus", lister)
|
||||
}
|
||||
cert, err := tls.X509KeyPair(secret.Data["client-cert.pem"], secret.Data["client-key.pem"])
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unable to fetch opencensus secret for %q, cannot use requireSecure=true: %+v", component, err)
|
||||
return nil, err
|
||||
}
|
||||
return &cert, err
|
||||
return &cert, nil
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func certificateFetcher(secretName string, lister SecretFetcher) (tls.Certificate, error) {
|
||||
secret, err := lister(secretName)
|
||||
if err != nil {
|
||||
return tls.Certificate{}, err
|
||||
}
|
||||
return tls.X509KeyPair(secret.Data["client-cert.pem"], secret.Data["client-key.pem"])
|
||||
}
|
||||
|
|
|
@ -115,7 +115,7 @@ func newOpencensusSDExporter(o stackdriver.Options) (view.Exporter, error) {
|
|||
func newStackdriverExporter(config *metricsConfig, logger *zap.SugaredLogger) (view.Exporter, error) {
|
||||
gm := getMergedGCPMetadata(config)
|
||||
mpf := getMetricPrefixFunc(config.stackdriverMetricTypePrefix, config.stackdriverCustomMetricTypePrefix)
|
||||
co, err := getStackdriverExporterClientOptions(&config.stackdriverClientConfig)
|
||||
co, err := getStackdriverExporterClientOptions(config)
|
||||
if err != nil {
|
||||
logger.Warnw("Issue configuring Stackdriver exporter client options, no additional client options will be used: ", zap.Error(err))
|
||||
}
|
||||
|
@ -140,21 +140,21 @@ func newStackdriverExporter(config *metricsConfig, logger *zap.SugaredLogger) (v
|
|||
|
||||
// getStackdriverExporterClientOptions creates client options for the opencensus Stackdriver exporter from the given stackdriverClientConfig.
|
||||
// On error, an empty array of client options is returned.
|
||||
func getStackdriverExporterClientOptions(sdconfig *StackdriverClientConfig) ([]option.ClientOption, error) {
|
||||
func getStackdriverExporterClientOptions(config *metricsConfig) ([]option.ClientOption, error) {
|
||||
var co []option.ClientOption
|
||||
if sdconfig.UseSecret && useStackdriverSecretEnabled {
|
||||
secret, err := getStackdriverSecret(sdconfig)
|
||||
if err != nil {
|
||||
return co, err
|
||||
|
||||
// SetStackdriverSecretLocation must have been called by calling package for this to work.
|
||||
if config.stackdriverClientConfig.UseSecret {
|
||||
if config.secret == nil {
|
||||
return co, fmt.Errorf("No secret provided for component %q; cannot use stackdriver-use-secret=true", config.component)
|
||||
}
|
||||
|
||||
if opt, err := convertSecretToExporterOption(secret); err == nil {
|
||||
if opt, err := convertSecretToExporterOption(config.secret); err == nil {
|
||||
co = append(co, opt)
|
||||
} else {
|
||||
return co, err
|
||||
}
|
||||
}
|
||||
|
||||
return co, nil
|
||||
}
|
||||
|
||||
|
@ -215,19 +215,31 @@ func getMetricPrefixFunc(metricTypePrefix, customMetricTypePrefix string) func(n
|
|||
}
|
||||
|
||||
// getStackdriverSecret returns the Kubernetes Secret specified in the given config.
|
||||
// SetStackdriverSecretLocation must have been called by calling package for this to work.
|
||||
// TODO(anniefu): Update exporter if Secret changes (https://github.com/knative/pkg/issues/842)
|
||||
func getStackdriverSecret(sdconfig *StackdriverClientConfig) (*corev1.Secret, error) {
|
||||
if err := ensureKubeclient(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func getStackdriverSecret(secretFetcher SecretFetcher) (*corev1.Secret, error) {
|
||||
stackdriverMtx.RLock()
|
||||
defer stackdriverMtx.RUnlock()
|
||||
|
||||
sec, secErr := kubeclient.CoreV1().Secrets(secretNamespace).Get(secretName, metav1.GetOptions{})
|
||||
if !useStackdriverSecretEnabled {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
var secErr error
|
||||
var sec *corev1.Secret
|
||||
if secretFetcher != nil {
|
||||
sec, secErr = secretFetcher(fmt.Sprintf("%s/%s", secretNamespace, secretName))
|
||||
} else {
|
||||
// This else-block can be removed once UpdateExporterFromConfigMap is fully deprecated in favor of ConfigMapWatcher
|
||||
if err := ensureKubeclient(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sec, secErr = kubeclient.CoreV1().Secrets(secretNamespace).Get(secretName, metav1.GetOptions{})
|
||||
}
|
||||
|
||||
if secErr != nil {
|
||||
return nil, fmt.Errorf("Error getting Secret [%s] in namespace [%s]: %w", secretName, secretNamespace, secErr)
|
||||
return nil, fmt.Errorf("error getting Secret [%v] in namespace [%v]: %v", secretName, secretNamespace, secErr)
|
||||
}
|
||||
|
||||
return sec, nil
|
||||
|
|
|
@ -651,7 +651,7 @@ k8s.io/kube-openapi/pkg/util/sets
|
|||
k8s.io/utils/buffer
|
||||
k8s.io/utils/integer
|
||||
k8s.io/utils/trace
|
||||
# knative.dev/pkg v0.0.0-20200501005942-d980c0865972
|
||||
# knative.dev/pkg v0.0.0-20200504072243-f591fc672afa
|
||||
knative.dev/pkg/apis
|
||||
knative.dev/pkg/changeset
|
||||
knative.dev/pkg/codegen/cmd/injection-gen
|
||||
|
@ -668,7 +668,7 @@ knative.dev/pkg/logging/logkey
|
|||
knative.dev/pkg/metrics
|
||||
knative.dev/pkg/metrics/metricskey
|
||||
knative.dev/pkg/reconciler
|
||||
# knative.dev/test-infra v0.0.0-20200430225942-f7c1fafc1cde
|
||||
# knative.dev/test-infra v0.0.0-20200501211843-902135793f08
|
||||
knative.dev/test-infra/scripts
|
||||
knative.dev/test-infra/tools/dep-collector
|
||||
# sigs.k8s.io/yaml v1.1.0
|
||||
|
|
Loading…
Reference in New Issue