You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2022/04/27 11:21:05 UTC
[skywalking] branch master updated: Support receive Kubernetes process from the Rover (#8960)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/master by this push:
new a93667184f Support receive Kubernetes process from the Rover (#8960)
a93667184f is described below
commit a93667184fb6caba5d04e51e312996613bc08d50
Author: mrproliu <74...@qq.com>
AuthorDate: Wed Apr 27 19:20:50 2022 +0800
Support receive Kubernetes process from the Rover (#8960)
---
.github/workflows/skywalking.yaml | 4 +
apm-protocol/apm-network/src/main/proto | 2 +-
docs/en/changes/changes.md | 1 +
.../ebpf/EBPFProfilingMutationService.java | 9 +-
.../ebpf/analyze/EBPFProfilingAnalyzer.java | 4 +-
.../handler/EBPFProcessServiceHandler.java | 47 ++++++++-
.../e2e-v2/cases/profiling/ebpf/docker-compose.yml | 13 +--
test/e2e-v2/cases/rover/process/istio/e2e.yaml | 105 +++++++++++++++++++++
.../rover/process/istio/expected/process.yml} | 36 ++++---
.../process/istio/expected/service-instance.yml} | 20 ++--
.../cases/rover/process/istio/expected/service.yml | 59 ++++++++++++
.../env => cases/rover/process/istio/kind.yaml} | 23 +++--
test/e2e-v2/cases/rover/process/istio/rover.yaml | 92 ++++++++++++++++++
test/e2e-v2/script/env | 2 +-
14 files changed, 365 insertions(+), 52 deletions(-)
diff --git a/.github/workflows/skywalking.yaml b/.github/workflows/skywalking.yaml
index 3f7d4a6bc5..bc29119ef7 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -451,6 +451,10 @@ jobs:
config: test/e2e-v2/cases/vm/prometheus-node-exporter/e2e.yaml
- name: So11y
config: test/e2e-v2/cases/so11y/e2e.yaml
+
+ - name: Rover with Istio Process 1.13.1
+ config: test/e2e-v2/cases/rover/process/istio/e2e.yaml
+ env: ISTIO_VERSION=1.13.1
steps:
- uses: actions/checkout@v3
with:
diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto
index f9066463de..fd2a115f33 160000
--- a/apm-protocol/apm-network/src/main/proto
+++ b/apm-protocol/apm-network/src/main/proto
@@ -1 +1 @@
-Subproject commit f9066463deb7f9d1fbe8110eab3524694b0db298
+Subproject commit fd2a115f33eb55495369c83ee476495d4cb5b686
diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 7f365445a4..139229e277 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -28,6 +28,7 @@
* Fix the problem that some configurations (such as group.id) did not take effect due to the override order when using the kafkaConsumerConfig property to extend the configuration in Kafka Fetcher.
* Remove build time from the OAP version.
* Add data-generator module to run OAP in testing mode, generating mock data for testing.
+* Support receive Kubernetes processes from gRPC protocol.
#### UI
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java
index 2f7430b159..84405fcecc 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/EBPFProfilingMutationService.java
@@ -40,6 +40,7 @@ import org.apache.skywalking.oap.server.library.util.StringUtil;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Comparator;
import java.util.List;
import java.util.concurrent.TimeUnit;
@@ -150,9 +151,13 @@ public class EBPFProfilingMutationService implements Service {
// query exist processes
final List<EBPFProfilingTask> tasks = getProcessProfilingTaskDAO().queryTasks(
- Arrays.asList(request.getServiceId()), request.getTargetType(), calculateStartTime(request), 0);
+ Arrays.asList(request.getServiceId()), request.getTargetType(), request.getStartTime(), 0);
if (CollectionUtils.isNotEmpty(tasks)) {
- return "already have profiling task at this time";
+ final EBPFProfilingTask mostRecentTask = tasks.stream()
+ .min(Comparator.comparingLong(EBPFProfilingTask::getTaskStartTime)).get();
+ if (mostRecentTask.getTaskStartTime() < calculateStartTime(request)) {
+ return "Task's time range overlaps with other tasks";
+ }
}
return null;
}
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/analyze/EBPFProfilingAnalyzer.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/analyze/EBPFProfilingAnalyzer.java
index 41f11635ab..4d768feb8d 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/analyze/EBPFProfilingAnalyzer.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/profiling/ebpf/analyze/EBPFProfilingAnalyzer.java
@@ -118,8 +118,8 @@ public class EBPFProfilingAnalyzer {
}
if (totalDuration > maxAnalyzeTimeRangeInMillisecond) {
- return "time range is out of " +
- TimeUnit.MILLISECONDS.toMinutes(this.maxAnalyzeTimeRangeInMillisecond) + " minute";
+ return "The time range should not be out of " +
+ TimeUnit.MILLISECONDS.toMinutes(this.maxAnalyzeTimeRangeInMillisecond) + " minutes";
}
return null;
}
diff --git a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProcessServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProcessServiceHandler.java
index 526d1d06e4..c4e9a96179 100644
--- a/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProcessServiceHandler.java
+++ b/oap-server/server-receiver-plugin/skywalking-ebpf-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/ebpf/provider/handler/EBPFProcessServiceHandler.java
@@ -23,8 +23,11 @@ import io.grpc.stub.StreamObserver;
import io.vavr.Tuple;
import io.vavr.Tuple2;
import org.apache.skywalking.apm.network.common.v3.Commands;
+import org.apache.skywalking.apm.network.common.v3.KeyStringValuePair;
import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFHostProcessDownstream;
import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFHostProcessMetadata;
+import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFKubernetesProcessDownstream;
+import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFKubernetesProcessMetadata;
import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFProcessDownstream;
import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFProcessEntityMetadata;
import org.apache.skywalking.apm.network.ebpf.profiling.process.v3.EBPFProcessPingPkgList;
@@ -38,7 +41,6 @@ import org.apache.skywalking.oap.server.core.analysis.IDManager;
import org.apache.skywalking.oap.server.core.analysis.Layer;
import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessDetectType;
-import org.apache.skywalking.oap.server.core.analysis.manual.process.ProcessTraffic;
import org.apache.skywalking.oap.server.core.config.NamingControl;
import org.apache.skywalking.oap.server.core.source.Process;
import org.apache.skywalking.oap.server.core.source.ServiceLabel;
@@ -74,6 +76,8 @@ public class EBPFProcessServiceHandler extends EBPFProcessServiceGrpc.EBPFProces
Tuple2<Process, EBPFProcessDownstream> processData = null;
if (ebpfProcessProperties.hasHostProcess()) {
processData = prepareReportHostProcess(ebpfProcessProperties.getHostProcess(), agentId);
+ } else if (ebpfProcessProperties.hasK8SProcess()) {
+ processData = prepareReportKubernetesProcess(ebpfProcessProperties.getK8SProcess(), agentId);
}
if (processData != null) {
@@ -151,9 +155,9 @@ public class EBPFProcessServiceHandler extends EBPFProcessServiceGrpc.EBPFProces
process.setDetectType(ProcessDetectType.VM);
process.setAgentId(agentId);
final JsonObject properties = new JsonObject();
- properties.addProperty(ProcessTraffic.PropertyUtil.HOST_IP, hostProcess.getHostIP());
- properties.addProperty(ProcessTraffic.PropertyUtil.PID, hostProcess.getPid());
- properties.addProperty(ProcessTraffic.PropertyUtil.COMMAND_LINE, hostProcess.getCmd());
+ for (KeyStringValuePair kv : hostProcess.getPropertiesList()) {
+ properties.addProperty(kv.getKey(), kv.getValue());
+ }
process.setProperties(properties);
process.setLabels(hostProcess.getEntity().getLabelsList());
@@ -172,6 +176,41 @@ public class EBPFProcessServiceHandler extends EBPFProcessServiceGrpc.EBPFProces
return Tuple.of(process, downstream);
}
+ private Tuple2<Process, EBPFProcessDownstream> prepareReportKubernetesProcess(EBPFKubernetesProcessMetadata kubernetesProcessMetadata, String agentId) {
+ final Process process = new Process();
+
+ // entity
+ process.setServiceName(namingControl.formatServiceName(kubernetesProcessMetadata.getEntity().getServiceName()));
+ process.setServiceNormal(true);
+ process.setLayer(Layer.valueOf(kubernetesProcessMetadata.getEntity().getLayer()));
+ process.setInstanceName(namingControl.formatInstanceName(kubernetesProcessMetadata.getEntity().getInstanceName()));
+ process.setName(kubernetesProcessMetadata.getEntity().getProcessName());
+
+ // metadata
+ process.setDetectType(ProcessDetectType.KUBERNETES);
+ process.setAgentId(agentId);
+ final JsonObject properties = new JsonObject();
+ for (KeyStringValuePair kv : kubernetesProcessMetadata.getPropertiesList()) {
+ properties.addProperty(kv.getKey(), kv.getValue());
+ }
+ process.setProperties(properties);
+ process.setLabels(kubernetesProcessMetadata.getEntity().getLabelsList());
+
+ // timestamp
+ process.setTimeBucket(
+ TimeBucket.getTimeBucket(System.currentTimeMillis(), DownSampling.Minute));
+
+ process.prepare();
+ final String processId = process.getEntityId();
+ final EBPFProcessDownstream downstream = EBPFProcessDownstream.newBuilder()
+ .setProcessId(processId)
+ .setK8SProcess(EBPFKubernetesProcessDownstream.newBuilder()
+ .setPid(kubernetesProcessMetadata.getPid())
+ .build())
+ .build();
+ return Tuple.of(process, downstream);
+ }
+
/**
* Append service label
*/
diff --git a/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml b/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml
index 6e66c6acb6..cff480fde8 100644
--- a/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml
+++ b/test/e2e-v2/cases/profiling/ebpf/docker-compose.yml
@@ -39,12 +39,13 @@ services:
ROVER_BACKEND_ADDR: oap:11800
ROVER_PROCESS_DISCOVERY_HEARTBEAT_PERIOD: 2s
ROVER_PROCESS_DISCOVERY_VM_ACTIVE: "true"
- ROVER_PROCESS_DISCOVERY_VM_FINDER_MATCH_CMD_REGEX: sqrt
- ROVER_PROCESS_DISCOVERY_VM_FINDER_LAYER: OS_LINUX
- ROVER_PROCESS_DISCOVERY_VM_FINDER_SERVICE_NAME: sqrt
- ROVER_PROCESS_DISCOVERY_VM_FINDER_INSTANCE_NAME: test-instance
- ROVER_PROCESS_DISCOVERY_VM_FINDER_PROCESS_NAME: "{{.Process.ExeName}}"
- ROVER_PROCESS_DISCOVERY_VM_FINDER_PROCESS_LABELS: e2e-label1,e2e-label2
+ ROVER_PROCESS_DISCOVERY_SCAN_MODE: REGEX
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_MATCH_CMD: sqrt
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LAYER: OS_LINUX
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_SERVICE_NAME: sqrt
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_INSTANCE_NAME: test-instance
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_PROCESS_NAME: "{{.Process.ExeName}}"
+ ROVER_PROCESS_DISCOVERY_REGEX_SCANNER_LABELS: e2e-label1,e2e-label2
ROVER_PROFILING_ACTIVE: "true"
ROVER_PROFILING_CHECK_INTERVAL: 2s
ROVER_PROFILING_FLUSH_INTERVAL: 5s
diff --git a/test/e2e-v2/cases/rover/process/istio/e2e.yaml b/test/e2e-v2/cases/rover/process/istio/e2e.yaml
new file mode 100644
index 0000000000..647402453c
--- /dev/null
+++ b/test/e2e-v2/cases/rover/process/istio/e2e.yaml
@@ -0,0 +1,105 @@
+# 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.
+
+# This file is used to show how to write configuration files and can be used to test.
+
+setup:
+ env: kind
+ file: kind.yaml
+ init-system-environment: ../../../../script/env
+ kind:
+ import-images:
+ - skywalking/ui:latest
+ - skywalking/oap:latest
+ expose-ports:
+ - namespace: istio-system
+ resource: service/skywalking-ui
+ port: 80
+ steps:
+ - name: set PATH
+ command: export PATH=/tmp/skywalking-infra-e2e/bin:$PATH
+ - name: install yq
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh yq
+ - name: install swctl
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh swctl
+ - name: install kubectl
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh kubectl
+ - name: install istio
+ command: |
+ bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh istioctl
+ istioctl install -y --set profile=demo
+ kubectl label namespace default istio-injection=enabled
+ - name: Install helm
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh helm
+ - name: Install kubectl
+ command: bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh kubectl
+ - name: Install SkyWalking
+ command: |
+ rm -rf skywalking-kubernetes && git clone https://github.com/apache/skywalking-kubernetes.git
+ cd skywalking-kubernetes
+ git reset --hard $SW_KUBERNETES_COMMIT_SHA
+ cd chart
+ helm dep up skywalking
+ helm -n istio-system install skywalking skywalking \
+ --set fullnameOverride=skywalking \
+ --set elasticsearch.replicas=1 \
+ --set elasticsearch.minimumMasterNodes=1 \
+ --set elasticsearch.imageTag=7.5.1 \
+ --set oap.replicas=1 \
+ --set ui.image.repository=skywalking/ui \
+ --set ui.image.tag=latest \
+ --set oap.image.tag=latest \
+ --set oap.image.repository=skywalking/oap \
+ --set oap.storageType=elasticsearch
+ wait:
+ - namespace: istio-system
+ resource: deployments/skywalking-oap
+ for: condition=available
+ - name: Deploy demo services
+ command: |
+ kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/platform/kube/bookinfo.yaml
+ kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/bookinfo-gateway.yaml
+ kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/destination-rule-all.yaml
+ kubectl apply -f https://raw.githubusercontent.com/istio/istio/$ISTIO_VERSION/samples/bookinfo/networking/virtual-service-all-v1.yaml
+ wait:
+ - namespace: default
+ resource: pod
+ for: condition=Ready
+ - name: Install SkyWalking Rover
+ command: |
+ envsubst < test/e2e-v2/cases/rover/process/istio/rover.yaml | kubectl apply -f -
+ wait:
+ - namespace: default
+ resource: pod
+ for: condition=Ready
+ timeout: 25m
+
+verify:
+ retry:
+ count: 20
+ interval: 3s
+ cases:
+ # service list
+ - query: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql service ls
+ expected: expected/service.yml
+ # service instance list
+ - query: swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql instance list --service-name=default::productpage
+ expected: expected/service-instance.yml
+ # process list
+ - query: |
+ swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql process list --service-name=default::productpage --instance-name=$( \
+ swctl --display yaml --base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql instance list --service-name=default::productpage |yq e '.[0].name' - \
+ )
+ expected: expected/process.yml
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/cases/rover/process/istio/expected/process.yml
similarity index 52%
copy from test/e2e-v2/script/env
copy to test/e2e-v2/cases/rover/process/istio/expected/process.yml
index 6d282bce78..c86d7d2310 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/cases/rover/process/istio/expected/process.yml
@@ -13,15 +13,27 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_AGENT_JAVA_COMMIT=65032a9b485411363b5297fadc970115d22b13b8
-SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
-SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
-SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
-SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
-SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
-SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
-SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
-SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
-SW_ROVER_COMMIT=f7f5ac31aa2288861ca729ed349f0da9e66d4558
-
-SW_CTL_COMMIT=9ad35d097e8966ac9324f1d570b1a2d264b38ca1
+{{- contains . }}
+- id: {{ notEmpty .id }}
+ name: envoy
+ serviceid: {{ b64enc "default::productpage" }}.1
+ servicename: default::productpage
+ instanceid: {{ notEmpty .instanceid }}
+ instancename: {{ notEmpty .instancename }}
+ layer: MESH_DP
+ agentid: {{ notEmpty .agentid }}
+ detecttype: KUBERNETES
+ attributes:
+ {{- contains .attributes }}
+ - name: host_ip
+ value: {{ notEmpty .value }}
+ - name: container_ip
+ value: {{ notEmpty .value }}
+ - name: pid
+ value: {{ notEmpty .value }}
+ - name: command_line
+ value: {{ notEmpty .value }}
+ {{- end }}
+ labels:
+ - mesh-envoy
+{{- end }}
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/cases/rover/process/istio/expected/service-instance.yml
similarity index 52%
copy from test/e2e-v2/script/env
copy to test/e2e-v2/cases/rover/process/istio/expected/service-instance.yml
index 6d282bce78..b8e3c0f53e 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/cases/rover/process/istio/expected/service-instance.yml
@@ -13,15 +13,11 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_AGENT_JAVA_COMMIT=65032a9b485411363b5297fadc970115d22b13b8
-SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
-SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
-SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
-SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
-SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
-SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
-SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
-SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
-SW_ROVER_COMMIT=f7f5ac31aa2288861ca729ed349f0da9e66d4558
-
-SW_CTL_COMMIT=9ad35d097e8966ac9324f1d570b1a2d264b38ca1
+{{- contains . }}
+- id: {{ notEmpty .id }}
+ name: {{ notEmpty .name }}
+ attributes: []
+ language: UNKNOWN
+ instanceuuid: {{ notEmpty .instanceuuid }}
+ layer: MESH_DP
+{{- end }}
diff --git a/test/e2e-v2/cases/rover/process/istio/expected/service.yml b/test/e2e-v2/cases/rover/process/istio/expected/service.yml
new file mode 100644
index 0000000000..5aa540b05a
--- /dev/null
+++ b/test/e2e-v2/cases/rover/process/istio/expected/service.yml
@@ -0,0 +1,59 @@
+# 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.
+
+{{- contains . }}
+- id: {{ b64enc "default::details" }}.1
+ name: default::details
+ group: default
+ shortname: details
+ layers:
+ - MESH_DP
+ normal: true
+- id: {{ b64enc "istio-system::istio-ingressgateway" }}.1
+ name: istio-system::istio-ingressgateway
+ group: istio-system
+ shortname: istio-ingressgateway
+ layers:
+ - MESH_DP
+ normal: true
+- id: {{ b64enc "default::productpage" }}.1
+ name: default::productpage
+ group: default
+ shortname: productpage
+ layers:
+ - MESH_DP
+ normal: true
+- id: {{ b64enc "default::ratings" }}.1
+ name: default::ratings
+ group: default
+ shortname: ratings
+ layers:
+ - MESH_DP
+ normal: true
+- id: {{ b64enc "default::reviews" }}.1
+ name: default::reviews
+ group: default
+ shortname: reviews
+ layers:
+ - MESH_DP
+ normal: true
+- id: {{ b64enc "istio-system::istio-egressgateway" }}.1
+ name: istio-system::istio-egressgateway
+ group: istio-system
+ shortname: istio-egressgateway
+ layers:
+ - MESH_DP
+ normal: true
+{{- end }}
\ No newline at end of file
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/cases/rover/process/istio/kind.yaml
similarity index 52%
copy from test/e2e-v2/script/env
copy to test/e2e-v2/cases/rover/process/istio/kind.yaml
index 6d282bce78..2f9384fc40 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/cases/rover/process/istio/kind.yaml
@@ -13,15 +13,14 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-SW_AGENT_JAVA_COMMIT=65032a9b485411363b5297fadc970115d22b13b8
-SW_AGENT_SATELLITE_COMMIT=1987e1d566ac90f6b58a45fd9bfa27bf8faad635
-SW_AGENT_NGINX_LUA_COMMIT=c3cee4841798a147d83b96a10914d4ac0e11d0aa
-SW_AGENT_NODEJS_COMMIT=2e7560518aff846befd4d6bc815fe5e38c704a11
-SW_AGENT_GO_COMMIT=4af380c2db6243106b0fc650b6003ce3b3eb82a0
-SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
-SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
-SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
-SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
-SW_ROVER_COMMIT=f7f5ac31aa2288861ca729ed349f0da9e66d4558
-
-SW_CTL_COMMIT=9ad35d097e8966ac9324f1d570b1a2d264b38ca1
+# this config file contains all config fields with comments
+# NOTE: this is not a particularly useful config file
+kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+nodes:
+ # the control plane node config
+ - role: control-plane
+ # the three workers
+ - role: worker
+ - role: worker
+ - role: worker
diff --git a/test/e2e-v2/cases/rover/process/istio/rover.yaml b/test/e2e-v2/cases/rover/process/istio/rover.yaml
new file mode 100644
index 0000000000..b064754824
--- /dev/null
+++ b/test/e2e-v2/cases/rover/process/istio/rover.yaml
@@ -0,0 +1,92 @@
+# 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.
+
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+ name: skywalking-rover
+---
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+ name: skywalking-rover
+roleRef:
+ apiGroup: rbac.authorization.k8s.io
+ kind: ClusterRole
+ name: skywalking-rover
+subjects:
+ - kind: ServiceAccount
+ name: skywalking-rover
+ namespace: default
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+ name: skywalking-rover
+rules:
+ - apiGroups: [""]
+ resources: ["pods", "nodes", "services"]
+ verbs: ["get", "watch", "list"]
+---
+
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+ name: skywalking-rover
+spec:
+ selector:
+ matchLabels:
+ name: skywalking-rover
+ template:
+ metadata:
+ labels:
+ name: skywalking-rover
+ spec:
+ serviceAccountName: skywalking-rover
+ serviceAccount: skywalking-rover
+ containers:
+ - name: skywalking-rover
+ # SkyWalking Rover image path
+ image: ghcr.io/apache/skywalking-rover/skywalking-rover:$SW_ROVER_COMMIT
+ securityContext:
+ capabilities:
+ add:
+ - SYS_PTRACE
+ - SYS_ADMIN
+ privileged: true
+ volumeMounts:
+ - name: host
+ mountPath: /host
+ readOnly: true
+ env:
+ - name: ROVER_PROCESS_DISCOVERY_KUBERNETES_ACTIVE
+ value: "true"
+ - name: ROVER_PROCESS_DISCOVERY_KUBERNETES_NODE_NAME
+ valueFrom:
+ fieldRef:
+ fieldPath: spec.nodeName
+ - name: ROVER_BACKEND_ADDR
+ # backend OAP address
+ value: skywalking-oap.istio-system:11800
+ - name: ROVER_PROCESS_DISCOVERY_KUBERNETES_ANALYZER_K8S_SERVICE_ACTIVE
+ value: "false"
+ hostPID: true
+ hostNetwork: true
+ dnsPolicy: ClusterFirstWithHostNet
+ volumes:
+ - name: host
+ hostPath:
+ path: /
+ type: Directory
\ No newline at end of file
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index 6d282bce78..d2868f37af 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -22,6 +22,6 @@ SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
SW_KUBERNETES_COMMIT_SHA=0f3ec68e5a7e1608cec8688716b848ed15e971e5
-SW_ROVER_COMMIT=f7f5ac31aa2288861ca729ed349f0da9e66d4558
+SW_ROVER_COMMIT=de66f0e0d10ba4d40137ec4c5475ae97931b4056
SW_CTL_COMMIT=9ad35d097e8966ac9324f1d570b1a2d264b38ca1