diff --git a/config/config.go b/config/config.go index c9074fd1b1..2fd88fc682 100644 --- a/config/config.go +++ b/config/config.go @@ -781,7 +781,7 @@ func (c *MarathonSDConfig) UnmarshalYAML(unmarshal func(interface{}) error) erro // KubernetesSDConfig is the configuration for Kubernetes service discovery. type KubernetesSDConfig struct { APIServers []URL `yaml:"api_servers"` - Role string `yaml:"role"` + Role KubernetesRole `yaml:"role"` InCluster bool `yaml:"in_cluster,omitempty"` BasicAuth *BasicAuth `yaml:"basic_auth,omitempty"` BearerToken string `yaml:"bearer_token,omitempty"` @@ -813,7 +813,7 @@ func (c *KubernetesRole) UnmarshalYAML(unmarshal func(interface{}) error) error case KubernetesRoleNode, KubernetesRolePod, KubernetesRoleContainer, KubernetesRoleService, KubernetesRoleEndpoint, KubernetesRoleAPIServer: return nil default: - return fmt.Errorf("Unknown Kubernetes SD role %q", c) + return fmt.Errorf("Unknown Kubernetes SD role %q", *c) } } diff --git a/config/config_test.go b/config/config_test.go index ca9ab86a78..23d5d822e8 100644 --- a/config/config_test.go +++ b/config/config_test.go @@ -385,6 +385,9 @@ var expectedErrors = []struct { }, { filename: "kubernetes_bearertoken.bad.yml", errMsg: "at most one of bearer_token & bearer_token_file must be configured", + }, { + filename: "kubernetes_role.bad.yml", + errMsg: "role", }, { filename: "kubernetes_bearertoken_basicauth.bad.yml", errMsg: "at most one of basic_auth, bearer_token & bearer_token_file must be configured", diff --git a/config/testdata/kubernetes_role.bad.yml b/config/testdata/kubernetes_role.bad.yml new file mode 100644 index 0000000000..ae924d8f42 --- /dev/null +++ b/config/testdata/kubernetes_role.bad.yml @@ -0,0 +1,5 @@ +scrape_configs: +- kubernetes_sd_configs: + - api_server: kubernetes:443 + role: vacation +