Unify the service name rule in `metadata-service-mapping.yml` of `mx-… (#6131)
This commit is contained in:
parent
4ae4f0e76a
commit
afc44d4a3d
|
|
@ -18,9 +18,8 @@ name: CI AND IT
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
MAVEN_OPTS: -XX:+TieredCompilation -XX:TieredStopAtLevel=1 -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:-UseGCOverheadLimit
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@ name: E2E
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@ name: E2E
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
@ -69,8 +68,9 @@ jobs:
|
|||
run: |
|
||||
git clone https://github.com/apache/skywalking-kubernetes.git
|
||||
cd skywalking-kubernetes
|
||||
git reset --hard dd749f25913830c47a97430618cefc4167612e75
|
||||
git reset --hard 2fdcdc3bb39496bf49626755e8f60c998be5f587
|
||||
cd chart
|
||||
mkdir -p skywalking/files/conf.d/oap/ && cp ../../test/e2e/e2e-test/src/test/resources/metadata-service-mapping.yaml skywalking/files/conf.d/oap/metadata-service-mapping.yaml
|
||||
helm dep up skywalking
|
||||
helm -n istio-system install skywalking skywalking \
|
||||
--set fullnameOverride=skywalking \
|
||||
|
|
@ -78,6 +78,7 @@ jobs:
|
|||
--set elasticsearch.minimumMasterNodes=1 \
|
||||
--set elasticsearch.imageTag=7.5.1 \
|
||||
--set oap.env.SW_ENVOY_METRIC_ALS_HTTP_ANALYSIS=${{ matrix.analyzer }} \
|
||||
--set oap.env.K8S_SERVICE_NAME_RULE='e2e::${service.metadata.name}' \
|
||||
--set oap.envoy.als.enabled=true \
|
||||
--set oap.replicas=1 \
|
||||
--set ui.image.repository=skywalking/ui \
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@ name: E2E
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -14,16 +14,15 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
name: E2E-NodeJS
|
||||
name: E2E
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -18,9 +18,8 @@ name: E2E
|
|||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -21,9 +21,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -22,9 +22,8 @@ on:
|
|||
paths:
|
||||
- '**'
|
||||
- '!**.md'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
schedule:
|
||||
- cron: '0 2 * * *'
|
||||
|
||||
env:
|
||||
SKIP_TEST: true
|
||||
|
|
|
|||
|
|
@ -18,18 +18,22 @@
|
|||
|
||||
package org.apache.skywalking.oap.server.receiver.envoy.als.mx;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.protobuf.Any;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.protobuf.BytesValue;
|
||||
import com.google.protobuf.Struct;
|
||||
import com.google.protobuf.Value;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.util.Optional;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.skywalking.oap.server.receiver.envoy.als.ServiceMetaInfo;
|
||||
import Wasm.Common.FlatNode;
|
||||
import Wasm.Common.KeyVal;
|
||||
|
||||
import static com.google.common.base.Strings.nullToEmpty;
|
||||
import static java.util.Objects.nonNull;
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
|
|
@ -58,8 +62,8 @@ public class ServiceMetaInfoAdapter extends ServiceMetaInfo {
|
|||
}
|
||||
}
|
||||
|
||||
setServiceName(Optional.ofNullable(flatNode.labelsByKey("app")).map(KeyVal::value).orElse("-"));
|
||||
setServiceInstanceName(flatNode.name());
|
||||
final Struct metadata = requireNonNull(extractStructFromNodeFlatBuffer(flatNode));
|
||||
FieldsHelper.SINGLETON.inflate(metadata, this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,6 +76,47 @@ public class ServiceMetaInfoAdapter extends ServiceMetaInfo {
|
|||
this(any.getValue());
|
||||
}
|
||||
|
||||
/**
|
||||
* This method does the reverse conversion of https://github.com/istio/proxy/blob/938a9485a4286f0ce824b76df221a9bb6c8a6989/extensions/common/proto_util.cc#L112. It extracts the metadata from the
|
||||
* {@link FlatNode flat buffer node} so that we can reuse the logic of {@link FieldsHelper}.
|
||||
*
|
||||
* @param node the flat buffer node where to extract the metadata
|
||||
* @return the metadata {@link Struct}
|
||||
*/
|
||||
protected Struct extractStructFromNodeFlatBuffer(final FlatNode node) {
|
||||
final Struct.Builder builder = Struct.newBuilder();
|
||||
|
||||
builder.putFields("NAME", Value.newBuilder().setStringValue(nullToEmpty(node.name())).build());
|
||||
builder.putFields("NAMESPACE", Value.newBuilder().setStringValue(nullToEmpty(node.namespace())).build());
|
||||
builder.putFields("OWNER", Value.newBuilder().setStringValue(nullToEmpty(node.owner())).build());
|
||||
builder.putFields("WORKLOAD_NAME", Value.newBuilder().setStringValue(nullToEmpty(node.workloadName())).build());
|
||||
builder.putFields("ISTIO_VERSION", Value.newBuilder().setStringValue(nullToEmpty(node.istioVersion())).build());
|
||||
builder.putFields("MESH_ID", Value.newBuilder().setStringValue(nullToEmpty(node.meshId())).build());
|
||||
builder.putFields("CLUSTER_ID", Value.newBuilder().setStringValue(nullToEmpty(node.clusterId())).build());
|
||||
|
||||
final Struct.Builder labels = Struct.newBuilder();
|
||||
for (int i = 0; i < node.labelsLength(); i++) {
|
||||
final KeyVal label = node.labels(i);
|
||||
labels.putFields(nullToEmpty(label.key()), Value.newBuilder().setStringValue(nullToEmpty(label.value())).build());
|
||||
}
|
||||
builder.putFields("LABELS", Value.newBuilder().setStructValue(labels).build());
|
||||
|
||||
final Struct.Builder platformMetadata = Struct.newBuilder();
|
||||
for (int i = 0; i < node.platformMetadataLength(); i++) {
|
||||
final KeyVal platformMd = node.platformMetadata(i);
|
||||
platformMetadata.putFields(nullToEmpty(platformMd.key()), Value.newBuilder().setStringValue(nullToEmpty(platformMd.value())).build());
|
||||
}
|
||||
builder.putFields("PLATFORM_METADATA", Value.newBuilder().setStructValue(platformMetadata).build());
|
||||
|
||||
final List<String> appContainers = new ArrayList<>();
|
||||
for (int i = 0; i < node.appContainersLength(); i++) {
|
||||
appContainers.add(node.appContainers(i));
|
||||
}
|
||||
builder.putFields("APP_CONTAINERS", Value.newBuilder().setStringValue(Joiner.on(",").join(appContainers)).build());
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* The same functionality with {@link ServiceMetaInfoAdapter#ServiceMetaInfoAdapter(com.google.protobuf.ByteString)}.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -76,10 +76,10 @@ public class ALSE2E extends SkyWalkingTestAdapter {
|
|||
|
||||
private final Map<Predicate<Service>, String> serviceEndpointExpectedDataFiles =
|
||||
ImmutableMap.<Predicate<Service>, String>builder()
|
||||
.put(service -> service.getLabel().startsWith("ratings"), "expected/als/endpoints-ratings.yml")
|
||||
.put(service -> service.getLabel().startsWith("details"), "expected/als/endpoints-details.yml")
|
||||
.put(service -> service.getLabel().startsWith("reviews"), "expected/als/endpoints-reviews.yml")
|
||||
.put(service -> service.getLabel().startsWith("productpage"), "expected/als/endpoints-productpage.yml")
|
||||
.put(service -> service.getLabel().contains("ratings"), "expected/als/endpoints-ratings.yml")
|
||||
.put(service -> service.getLabel().contains("details"), "expected/als/endpoints-details.yml")
|
||||
.put(service -> service.getLabel().contains("reviews"), "expected/als/endpoints-reviews.yml")
|
||||
.put(service -> service.getLabel().contains("productpage"), "expected/als/endpoints-productpage.yml")
|
||||
.build();
|
||||
|
||||
@BeforeAll
|
||||
|
|
@ -154,7 +154,7 @@ public class ALSE2E extends SkyWalkingTestAdapter {
|
|||
LOGGER.info("instances: {}", instances);
|
||||
|
||||
String file = "expected/als/instances.yml";
|
||||
if (service.getLabel().equals("reviews")) {
|
||||
if (service.getLabel().equals("e2e::reviews")) {
|
||||
file = "expected/als/instances-reviews.yml";
|
||||
}
|
||||
load(file).as(InstancesMatcher.class).verify(instances);
|
||||
|
|
|
|||
|
|
@ -15,12 +15,12 @@
|
|||
|
||||
services:
|
||||
- key: not null
|
||||
label: re(ratings.*)
|
||||
label: e2e::ratings
|
||||
- key: not null
|
||||
label: re(reviews.*)
|
||||
label: e2e::reviews
|
||||
- key: not null
|
||||
label: re(productpage.*)
|
||||
label: e2e::productpage
|
||||
- key: not null
|
||||
label: re(details.*)
|
||||
label: e2e::details
|
||||
- key: not null
|
||||
label: re(istio-ingressgateway.*)
|
||||
label: e2e::istio-ingressgateway
|
||||
|
|
|
|||
|
|
@ -15,22 +15,22 @@
|
|||
|
||||
nodes:
|
||||
- id: not null
|
||||
name: ratings
|
||||
name: e2e::ratings
|
||||
type: http
|
||||
isReal: true
|
||||
- id: not null
|
||||
name: reviews
|
||||
name: e2e::reviews
|
||||
type: http
|
||||
isReal: true
|
||||
- id: not null
|
||||
name: productpage
|
||||
name: e2e::productpage
|
||||
isReal: true
|
||||
- id: not null
|
||||
name: details
|
||||
name: e2e::details
|
||||
type: http
|
||||
isReal: true
|
||||
- id: not null
|
||||
name: istio-ingressgateway
|
||||
name: e2e::istio-ingressgateway
|
||||
type: http
|
||||
isReal: true
|
||||
- id: not null
|
||||
|
|
@ -39,30 +39,30 @@ nodes:
|
|||
calls:
|
||||
- id: not null
|
||||
source: VU5LTk9XTg==.1
|
||||
target: aXN0aW8taW5ncmVzc2dhdGV3YXk=.1
|
||||
target: ZTJlOjppc3Rpby1pbmdyZXNzZ2F0ZXdheQ==.1
|
||||
detectPoints:
|
||||
- SERVER
|
||||
- id: not null
|
||||
source: aXN0aW8taW5ncmVzc2dhdGV3YXk=.1
|
||||
target: cHJvZHVjdHBhZ2U=.1
|
||||
source: ZTJlOjppc3Rpby1pbmdyZXNzZ2F0ZXdheQ==.1
|
||||
target: ZTJlOjpwcm9kdWN0cGFnZQ==.1
|
||||
detectPoints:
|
||||
- CLIENT
|
||||
- SERVER
|
||||
- id: not null
|
||||
source: cHJvZHVjdHBhZ2U=.1
|
||||
target: cmV2aWV3cw==.1
|
||||
source: ZTJlOjpwcm9kdWN0cGFnZQ==.1
|
||||
target: ZTJlOjpyZXZpZXdz.1
|
||||
detectPoints:
|
||||
- CLIENT
|
||||
- SERVER
|
||||
- id: not null
|
||||
source: cHJvZHVjdHBhZ2U=.1
|
||||
target: ZGV0YWlscw==.1
|
||||
source: ZTJlOjpwcm9kdWN0cGFnZQ==.1
|
||||
target: ZTJlOjpkZXRhaWxz.1
|
||||
detectPoints:
|
||||
- CLIENT
|
||||
- SERVER
|
||||
- id: not null
|
||||
source: cmV2aWV3cw==.1
|
||||
target: cmF0aW5ncw==.1
|
||||
source: ZTJlOjpyZXZpZXdz.1
|
||||
target: ZTJlOjpyYXRpbmdz.1
|
||||
detectPoints:
|
||||
- CLIENT
|
||||
- SERVER
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
# Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
# contributor license agreements. See the NOTICE file distributed with
|
||||
# this work for additional information regarding copyright ownership.
|
||||
# The ASF licenses this file to You under the Apache License, Version 2.0
|
||||
# (the "License"); you may not use this file except in compliance with
|
||||
# the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
serviceName: e2e::${LABELS.app}
|
||||
serviceInstanceName: ${NAME}
|
||||
Loading…
Reference in New Issue