Merge pull request #11051 from hashicorp/partitions/fixes

pull/11072/head
Freddy 2021-09-16 09:29:00 -06:00 committed by GitHub
commit cd08a36ce0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
35 changed files with 199 additions and 26 deletions

View File

@ -585,7 +585,7 @@ func (s *Intention) Match(args *structs.IntentionQueryRequest, reply *structs.In
return err return err
} }
// Finish defaulting the namespace fields. // Finish defaulting the namespace and partition fields.
for i := range args.Match.Entries { for i := range args.Match.Entries {
if args.Match.Entries[i].Namespace == "" { if args.Match.Entries[i].Namespace == "" {
args.Match.Entries[i].Namespace = entMeta.NamespaceOrDefault() args.Match.Entries[i].Namespace = entMeta.NamespaceOrDefault()
@ -594,6 +594,14 @@ func (s *Intention) Match(args *structs.IntentionQueryRequest, reply *structs.In
return fmt.Errorf("Invalid match entry namespace %q: %v", return fmt.Errorf("Invalid match entry namespace %q: %v",
args.Match.Entries[i].Namespace, err) args.Match.Entries[i].Namespace, err)
} }
if args.Match.Entries[i].Partition == "" {
args.Match.Entries[i].Partition = entMeta.PartitionOrDefault()
}
if err := s.srv.validateEnterpriseIntentionPartition(args.Match.Entries[i].Partition); err != nil {
return fmt.Errorf("Invalid match entry partition %q: %v",
args.Match.Entries[i].Partition, err)
}
} }
var authzContext acl.AuthorizerContext var authzContext acl.AuthorizerContext

View File

@ -911,6 +911,7 @@ func intentionMatchOneTxn(tx ReadTxn, ws memdb.WatchSet,
return result, nil return result, nil
} }
// TODO(partitions): Update for partitions
// intentionMatchGetParams returns the tx.Get parameters to find all the // intentionMatchGetParams returns the tx.Get parameters to find all the
// intentions for a certain entry. // intentions for a certain entry.
func intentionMatchGetParams(entry structs.IntentionMatchEntry) ([][]interface{}, error) { func intentionMatchGetParams(entry structs.IntentionMatchEntry) ([][]interface{}, error) {

View File

@ -59,6 +59,7 @@ func (s *handlerConnectProxy) initialize(ctx context.Context) (ConfigSnapshot, e
Entries: []structs.IntentionMatchEntry{ Entries: []structs.IntentionMatchEntry{
{ {
Namespace: s.proxyID.NamespaceOrDefault(), Namespace: s.proxyID.NamespaceOrDefault(),
Partition: s.proxyID.PartitionOrDefault(),
Name: s.proxyCfg.DestinationServiceName, Name: s.proxyCfg.DestinationServiceName,
}, },
}, },

View File

@ -139,6 +139,7 @@ func TestManager_BasicLifecycle(t *testing.T) {
Entries: []structs.IntentionMatchEntry{ Entries: []structs.IntentionMatchEntry{
{ {
Namespace: structs.IntentionDefaultNamespace, Namespace: structs.IntentionDefaultNamespace,
Partition: structs.IntentionDefaultNamespace,
Name: "web", Name: "web",
}, },
}, },

View File

@ -121,6 +121,7 @@ func (s *handlerTerminatingGateway) handleUpdate(ctx context.Context, u cache.Up
Entries: []structs.IntentionMatchEntry{ Entries: []structs.IntentionMatchEntry{
{ {
Namespace: svc.Service.NamespaceOrDefault(), Namespace: svc.Service.NamespaceOrDefault(),
Partition: svc.Service.PartitionOrDefault(),
Name: svc.Service.Name, Name: svc.Service.Name,
}, },
}, },

View File

@ -639,10 +639,9 @@ func (s *ResourceGenerator) makeUpstreamClustersForDiscoveryChain(
targetSpiffeID := connect.SpiffeIDService{ targetSpiffeID := connect.SpiffeIDService{
Host: cfgSnap.Roots.TrustDomain, Host: cfgSnap.Roots.TrustDomain,
Namespace: target.Namespace, Namespace: target.Namespace,
Partition: target.Partition,
Datacenter: target.Datacenter, Datacenter: target.Datacenter,
Service: target.Service, Service: target.Service,
// TODO(partitions) Store partition
} }
if failoverThroughMeshGateway { if failoverThroughMeshGateway {
@ -676,10 +675,9 @@ func (s *ResourceGenerator) makeUpstreamClustersForDiscoveryChain(
id := connect.SpiffeIDService{ id := connect.SpiffeIDService{
Host: cfgSnap.Roots.TrustDomain, Host: cfgSnap.Roots.TrustDomain,
Namespace: target.Namespace, Namespace: target.Namespace,
Partition: target.Partition,
Datacenter: target.Datacenter, Datacenter: target.Datacenter,
Service: target.Service, Service: target.Service,
// TODO(partitions) Store partition
} }
// Failover targets might be subsets of the same service, so these are deduplicated. // Failover targets might be subsets of the same service, so these are deduplicated.

View File

@ -660,6 +660,14 @@ func NewClient(config *Config) (*Client, error) {
} }
} }
if config.Namespace == "" {
config.Namespace = defConfig.Namespace
}
if config.Partition == "" {
config.Partition = defConfig.Partition
}
parts := strings.SplitN(config.Address, "://", 2) parts := strings.SplitN(config.Address, "://", 2)
if len(parts) == 2 { if len(parts) == 2 {
switch parts[0] { switch parts[0] {
@ -1117,7 +1125,9 @@ func generateUnexpectedResponseCodeError(resp *http.Response) error {
var buf bytes.Buffer var buf bytes.Buffer
io.Copy(&buf, resp.Body) io.Copy(&buf, resp.Body)
closeResponseBody(resp) closeResponseBody(resp)
return fmt.Errorf("Unexpected response code: %d (%s)", resp.StatusCode, buf.Bytes())
trimmed := strings.TrimSpace(string(buf.Bytes()))
return fmt.Errorf("Unexpected response code: %d (%s)", resp.StatusCode, trimmed)
} }
func requireNotFoundOrOK(d time.Duration, resp *http.Response, e error) (bool, time.Duration, *http.Response, error) { func requireNotFoundOrOK(d time.Duration, resp *http.Response, e error) (bool, time.Duration, *http.Response, error) {

View File

@ -513,12 +513,17 @@ func generateStatsTags(args *BootstrapTplArgs, initialTags []string, omitDepreca
} }
tagJSONs = append(tagJSONs, tags...) tagJSONs = append(tagJSONs, tags...)
// Default the namespace here since it is also done for cluster SNI // Default the namespace and partition here since it is also done for cluster SNI
ns := args.Namespace ns := args.Namespace
if ns == "" { if ns == "" {
ns = api.IntentionDefaultNamespace ns = api.IntentionDefaultNamespace
} }
ap := args.Partition
if ap == "" {
ap = api.IntentionDefaultNamespace
}
// Add some default tags if not already overridden. Note this is a slice not a // Add some default tags if not already overridden. Note this is a slice not a
// map since we need ordering to be deterministic. // map since we need ordering to be deterministic.
defaults := []struct { defaults := []struct {
@ -540,6 +545,10 @@ func generateStatsTags(args *BootstrapTplArgs, initialTags []string, omitDepreca
name: "consul.source.namespace", name: "consul.source.namespace",
val: ns, val: ns,
}, },
{
name: "consul.source.partition",
val: ap,
},
{ {
name: "consul.source.datacenter", name: "consul.source.datacenter",
val: args.Datacenter, val: args.Datacenter,

View File

@ -89,6 +89,10 @@ type BootstrapTplArgs struct {
// as registered with the Consul agent. // as registered with the Consul agent.
Namespace string Namespace string
// Partition is the Consul Enterprise Partition of the proxy service instance
// as registered with the Consul agent.
Partition string
// Datacenter is the datacenter where the proxy service instance is registered. // Datacenter is the datacenter where the proxy service instance is registered.
Datacenter string Datacenter string
@ -141,6 +145,7 @@ const bootstrapTemplate = `{
"id": "{{ .ProxyID }}", "id": "{{ .ProxyID }}",
"metadata": { "metadata": {
"namespace": "{{if ne .Namespace ""}}{{ .Namespace }}{{else}}default{{end}}", "namespace": "{{if ne .Namespace ""}}{{ .Namespace }}{{else}}default{{end}}",
"partition": "{{if ne .Partition ""}}{{ .Partition }}{{else}}default{{end}}",
"envoy_version": "{{ .EnvoyVersion }}" "envoy_version": "{{ .EnvoyVersion }}"
} }
}, },

View File

@ -482,6 +482,7 @@ func (c *cmd) templateArgs() (*BootstrapTplArgs, error) {
Token: httpCfg.Token, Token: httpCfg.Token,
LocalAgentClusterName: xds.LocalAgentClusterName, LocalAgentClusterName: xds.LocalAgentClusterName,
Namespace: httpCfg.Namespace, Namespace: httpCfg.Namespace,
Partition: httpCfg.Partition,
EnvoyVersion: c.envoyVersion, EnvoyVersion: c.envoyVersion,
Datacenter: httpCfg.Datacenter, Datacenter: httpCfg.Datacenter,
PrometheusBackendPort: c.prometheusBackendPort, PrometheusBackendPort: c.prometheusBackendPort,
@ -525,18 +526,20 @@ func (c *cmd) generateConfig() ([]byte, error) {
// Set the source service name from the proxy's own registration // Set the source service name from the proxy's own registration
args.ProxySourceService = svc.Service args.ProxySourceService = svc.Service
} }
// In most cases where namespaces and partitions are enabled they will already be set
// correctly because the http client that fetched this will provide them explicitly.
// However, if these arguments were not provided, they will be empty even
// though Namespaces and Partitions are actually being used.
// Overriding them ensures that we always set the Namespace and Partition args
// if the cluster is using them. This prevents us from defaulting to the "default"
// when a non-default partition or namespace was inferred from the ACL token.
if svc.Namespace != "" { if svc.Namespace != "" {
// In most cases where namespaces are enabled this will already be set
// correctly because the http client that fetched this will need to have
// had the namespace set on it which is also how we initially populate
// this. However in the case of "default" namespace being accessed because
// there was no namespace argument, args.Namespace will be empty even
// though Namespaces are actually being used and the namespace of the request was
// inferred from the ACL token or defaulted to the "default" namespace.
// Overriding it here ensures that we always set the Namespace arg if the
// cluster is using namespaces regardless.
args.Namespace = svc.Namespace args.Namespace = svc.Namespace
} }
if svc.Partition != "" {
args.Partition = svc.Partition
}
if svc.Datacenter != "" { if svc.Datacenter != "" {
// The agent will definitely have the definitive answer here. // The agent will definitely have the definitive answer here.

View File

@ -90,7 +90,7 @@ func testSetAndResetEnv(t *testing.T, env []string) func() {
// save it as a nil so we know to remove again // save it as a nil so we know to remove again
old[pair[0]] = nil old[pair[0]] = nil
} }
os.Setenv(pair[0], pair[1]) require.NoError(t, os.Setenv(pair[0], pair[1]))
} }
// Return a func that will reset to old values // Return a func that will reset to old values
return func() { return func() {
@ -106,6 +106,7 @@ func testSetAndResetEnv(t *testing.T, env []string) func() {
type generateConfigTestCase struct { type generateConfigTestCase struct {
Name string Name string
TLSServer bool
Flags []string Flags []string
Env []string Env []string
Files map[string]string Files map[string]string
@ -452,9 +453,10 @@ func TestGenerateConfig(t *testing.T) {
WantErr: "Error loading CA File: open some/path: no such file or directory", WantErr: "Error loading CA File: open some/path: no such file or directory",
}, },
{ {
Name: "existing-ca-file", Name: "existing-ca-file",
Flags: []string{"-proxy-id", "test-proxy", "-ca-file", "../../../test/ca/root.cer"}, TLSServer: true,
Env: []string{"CONSUL_HTTP_SSL=1"}, Flags: []string{"-proxy-id", "test-proxy", "-ca-file", "../../../test/ca/root.cer"},
Env: []string{"CONSUL_HTTP_SSL=1"},
WantArgs: BootstrapTplArgs{ WantArgs: BootstrapTplArgs{
EnvoyVersion: defaultEnvoyVersion, EnvoyVersion: defaultEnvoyVersion,
ProxyCluster: "test-proxy", ProxyCluster: "test-proxy",
@ -499,9 +501,10 @@ func TestGenerateConfig(t *testing.T) {
WantErr: "lstat some/path: no such file or directory", WantErr: "lstat some/path: no such file or directory",
}, },
{ {
Name: "existing-ca-path", Name: "existing-ca-path",
Flags: []string{"-proxy-id", "test-proxy", "-ca-path", "../../../test/ca_path/"}, TLSServer: true,
Env: []string{"CONSUL_HTTP_SSL=1"}, Flags: []string{"-proxy-id", "test-proxy", "-ca-path", "../../../test/ca_path/"},
Env: []string{"CONSUL_HTTP_SSL=1"},
WantArgs: BootstrapTplArgs{ WantArgs: BootstrapTplArgs{
EnvoyVersion: defaultEnvoyVersion, EnvoyVersion: defaultEnvoyVersion,
ProxyCluster: "test-proxy", ProxyCluster: "test-proxy",
@ -887,15 +890,21 @@ func TestGenerateConfig(t *testing.T) {
// Run a mock agent API that just always returns the proxy config in the // Run a mock agent API that just always returns the proxy config in the
// test. // test.
srv := httptest.NewServer(testMockAgent(tc)) var srv *httptest.Server
if tc.TLSServer {
srv = httptest.NewTLSServer(testMockAgent(tc))
} else {
srv = httptest.NewServer(testMockAgent(tc))
}
defer srv.Close() defer srv.Close()
client, err := api.NewClient(&api.Config{Address: srv.URL})
require.NoError(err)
testDirPrefix := testDir + string(filepath.Separator) testDirPrefix := testDir + string(filepath.Separator)
myEnv := copyAndReplaceAll(tc.Env, "@@TEMPDIR@@", testDirPrefix) myEnv := copyAndReplaceAll(tc.Env, "@@TEMPDIR@@", testDirPrefix)
defer testSetAndResetEnv(t, myEnv)() defer testSetAndResetEnv(t, myEnv)()
client, err := api.NewClient(&api.Config{Address: srv.URL, TLSConfig: api.TLSConfig{InsecureSkipVerify: true}})
require.NoError(err)
ui := cli.NewMockUi() ui := cli.NewMockUi()
c := New(ui) c := New(ui)
// explicitly set the client to one which can connect to the httptest.Server // explicitly set the client to one which can connect to the httptest.Server
@ -1073,6 +1082,7 @@ func testMockAgentGatewayConfig(namespacesEnabled bool) http.HandlerFunc {
if namespacesEnabled { if namespacesEnabled {
svc[string(kind)].Namespace = namespaceFromQuery(r) svc[string(kind)].Namespace = namespaceFromQuery(r)
svc[string(kind)].Partition = partitionFromQuery(r)
} }
cfgJSON, err := json.Marshal(svc) cfgJSON, err := json.Marshal(svc)
@ -1094,6 +1104,15 @@ func namespaceFromQuery(r *http.Request) string {
return "default" return "default"
} }
func partitionFromQuery(r *http.Request) string {
// Use the partition in the request if there is one, otherwise
// use-default.
if queryAP := r.URL.Query().Get("partition"); queryAP != "" {
return queryAP
}
return "default"
}
func testMockAgentProxyConfig(cfg map[string]interface{}, namespacesEnabled bool) http.HandlerFunc { func testMockAgentProxyConfig(cfg map[string]interface{}, namespacesEnabled bool) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) { return func(w http.ResponseWriter, r *http.Request) {
// Parse the proxy-id from the end of the URL (blindly assuming it's correct // Parse the proxy-id from the end of the URL (blindly assuming it's correct
@ -1115,6 +1134,7 @@ func testMockAgentProxyConfig(cfg map[string]interface{}, namespacesEnabled bool
if namespacesEnabled { if namespacesEnabled {
svc.Namespace = namespaceFromQuery(r) svc.Namespace = namespaceFromQuery(r)
svc.Partition = partitionFromQuery(r)
} }
cfgJSON, err := json.Marshal(svc) cfgJSON, err := json.Marshal(svc)

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -157,6 +158,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -157,6 +158,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -157,6 +158,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -166,6 +167,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -157,6 +158,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -143,6 +144,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "ingress-gateway", "id": "ingress-gateway",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "ingress-gateway", "id": "ingress-gateway",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "my-gateway-123", "id": "my-gateway-123",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "my-gateway", "id": "my-gateway",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "ingress-gateway-1", "id": "ingress-gateway-1",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -230,6 +231,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -144,6 +145,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"

View File

@ -13,6 +13,7 @@
"id": "test-proxy", "id": "test-proxy",
"metadata": { "metadata": {
"namespace": "default", "namespace": "default",
"partition": "default",
"envoy_version": "1.18.4" "envoy_version": "1.18.4"
} }
}, },
@ -168,6 +169,10 @@
"tag_name": "consul.source.namespace", "tag_name": "consul.source.namespace",
"fixed_value": "default" "fixed_value": "default"
}, },
{
"tag_name": "consul.source.partition",
"fixed_value": "default"
},
{ {
"tag_name": "consul.source.datacenter", "tag_name": "consul.source.datacenter",
"fixed_value": "dc1" "fixed_value": "dc1"