This is an automated email from the ASF dual-hosted git repository.

liuhan 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 e96b75f186 Support E2E Testing Cilium Services (#12412)
e96b75f186 is described below

commit e96b75f1869cbc6407ecb2cfaa05b4d84f9cfeff
Author: mrproliu <[email protected]>
AuthorDate: Thu Jul 4 04:28:04 2024 +0000

    Support E2E Testing Cilium Services (#12412)
---
 .github/workflows/skywalking.yaml                  |   5 +-
 .../fetcher/cilium/nodes/CiliumNodeManager.java    |   1 +
 .../cilium_service/cilium-endpoint.json            |   6 +-
 .../cilium-service-instance-relation.json          |   6 +-
 .../cilium_service/cilium-service-instance.json    |   6 +-
 .../cilium_service/cilium-service-relation.json    |   6 +-
 .../cilium_service/cilium-service.json             |   6 +-
 .../e2e-v2/cases/cilium/cilium-network-policy.yaml | 161 +++++++++++++++++++++
 test/e2e-v2/cases/cilium/e2e.yaml                  | 152 +++++++++++++++++++
 .../cases/cilium/expected/dependency-services.yml  |  70 +++++++++
 .../cases/cilium/expected/metrics-has-value.yml    |  31 ++++
 .../expected/service-endpoint-productpage.yml      |  19 +++
 .../cases/cilium/expected/service-instance.yml     |  22 +++
 test/e2e-v2/cases/cilium/expected/service.yml      |  45 ++++++
 test/e2e-v2/cases/cilium/kind.yaml                 |  23 +++
 test/e2e-v2/cases/cilium/traffic-gen.yaml          |  40 +++++
 test/e2e-v2/cases/cilium/values.yaml               |  40 +++++
 test/e2e-v2/script/env                             |   2 +-
 .../prepare/setup-e2e-shell/install-cilium.sh      |  34 +++++
 19 files changed, 648 insertions(+), 27 deletions(-)

diff --git a/.github/workflows/skywalking.yaml 
b/.github/workflows/skywalking.yaml
index 943730c75a..bc0cfe9b15 100644
--- a/.github/workflows/skywalking.yaml
+++ b/.github/workflows/skywalking.yaml
@@ -685,6 +685,9 @@ jobs:
 
           - name: OTLP Trace
             config:  test/e2e-v2/cases/otlp-traces/e2e.yaml
+
+          - name: Cilium Service
+            config: test/e2e-v2/cases/cilium/e2e.yaml
     steps:
       - uses: actions/checkout@v3
         with:
@@ -720,7 +723,7 @@ jobs:
         if: matrix.test.docker != null
         run: docker build -t ${{ matrix.test.docker.name }} -f ${{ 
matrix.test.docker.base }}/${{ matrix.test.docker.file }} ${{ 
matrix.test.docker.base }}
       - name: ${{ matrix.test.name }}
-        uses: 
apache/skywalking-infra-e2e@0a5b398fc9668ccb848b16e6da4f09180955dc3e
+        uses: 
apache/skywalking-infra-e2e@7f6b0da20f170b181a79cf89ef7d47848ac34138
         with:
           e2e-file: $GITHUB_WORKSPACE/${{ matrix.test.config }}
       - if: ${{ failure() }}
diff --git 
a/oap-server/server-fetcher-plugin/cilium-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/cilium/nodes/CiliumNodeManager.java
 
b/oap-server/server-fetcher-plugin/cilium-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/cilium/nodes/CiliumNodeManager.java
index e5068fd2bb..f73159239c 100644
--- 
a/oap-server/server-fetcher-plugin/cilium-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/cilium/nodes/CiliumNodeManager.java
+++ 
b/oap-server/server-fetcher-plugin/cilium-fetcher-plugin/src/main/java/org/apache/skywalking/oap/server/fetcher/cilium/nodes/CiliumNodeManager.java
@@ -221,6 +221,7 @@ public class CiliumNodeManager implements ClusterWatcher {
             }
         });
 
+        newNodes.sort(Comparator.comparing(CiliumNode::getAddress));
         this.usingNodes = ImmutableList.copyOf(newNodes);
     }
 
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-endpoint.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-endpoint.json
index fa20e1aa97..0ded5f6fe7 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-endpoint.json
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-endpoint.json
@@ -81,7 +81,6 @@
                                     "type": "Widget",
                                     "expressions": [
                                         
"cilium_endpoint_protocol_http_status_1xx_cpm",
-                                        
"cilium_endpoint_protocol_http_status_2xx_cpm",
                                         
"cilium_endpoint_protocol_http_status_3xx_cpm",
                                         
"cilium_endpoint_protocol_http_status_4xx_cpm",
                                         
"cilium_endpoint_protocol_http_status_5xx_cpm"
@@ -98,9 +97,6 @@
                                         {
                                             "label": "1xx"
                                         },
-                                        {
-                                            "label": "2xx"
-                                        },
                                         {
                                             "label": "3xx"
                                         },
@@ -112,7 +108,7 @@
                                         }
                                     ],
                                     "widget": {
-                                        "title": "HTTP Response Code(Count per 
min)"
+                                        "title": "HTTP Non-2xx Response 
Code(Count per min)"
                                     }
                                 },
                                 {
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance-relation.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance-relation.json
index f37596df95..a961611083 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance-relation.json
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance-relation.json
@@ -304,7 +304,6 @@
                                     "type": "Widget",
                                     "expressions": [
                                         
"cilium_service_instance_relation_protocol_http_status_1xx_cpm",
-                                        
"cilium_service_instance_relation_protocol_http_status_2xx_cpm",
                                         
"cilium_service_instance_relation_protocol_http_status_3xx_cpm",
                                         
"cilium_service_instance_relation_protocol_http_status_4xx_cpm",
                                         
"cilium_service_instance_relation_protocol_http_status_5xx_cpm"
@@ -318,15 +317,12 @@
                                         "showYAxis": true
                                     },
                                     "widget": {
-                                        "title": "HTTP Response Status Server 
Side(Count Per Min)"
+                                        "title": "HTTP Non-2xx Response Status 
Server Side(Count Per Min)"
                                     },
                                     "metricConfig": [
                                         {
                                             "label": "1xx"
                                         },
-                                        {
-                                            "label": "2xx"
-                                        },
                                         {
                                             "label": "3xx"
                                         },
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance.json
index 40fc936210..131e81152d 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance.json
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-instance.json
@@ -188,7 +188,6 @@
                                     "type": "Widget",
                                     "expressions": [
                                         
"cilium_service_instance_protocol_http_status_1xx_cpm",
-                                        
"cilium_service_instance_protocol_http_status_2xx_cpm",
                                         
"cilium_service_instance_protocol_http_status_3xx_cpm",
                                         
"cilium_service_instance_protocol_http_status_4xx_cpm",
                                         
"cilium_service_instance_protocol_http_status_5xx_cpm"
@@ -205,9 +204,6 @@
                                         {
                                             "label": "1xx"
                                         },
-                                        {
-                                            "label": "2xx"
-                                        },
                                         {
                                             "label": "3xx"
                                         },
@@ -219,7 +215,7 @@
                                         }
                                     ],
                                     "widget": {
-                                        "title": "HTTP Response Code(Count per 
min)"
+                                        "title": "HTTP Non-2xx Response 
Code(Count per min)"
                                     }
                                 },
                                 {
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-relation.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-relation.json
index 485720c275..e177b65344 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-relation.json
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service-relation.json
@@ -304,7 +304,6 @@
                                     "type": "Widget",
                                     "expressions": [
                                         
"cilium_service_relation_protocol_http_status_1xx_cpm",
-                                        
"cilium_service_relation_protocol_http_status_2xx_cpm",
                                         
"cilium_service_relation_protocol_http_status_3xx_cpm",
                                         
"cilium_service_relation_protocol_http_status_4xx_cpm",
                                         
"cilium_service_relation_protocol_http_status_5xx_cpm"
@@ -318,15 +317,12 @@
                                         "showYAxis": true
                                     },
                                     "widget": {
-                                        "title": "HTTP Response Status Server 
Side(Count Per Min)"
+                                        "title": "HTTP Non-2xx Response Status 
Server Side(Count Per Min)"
                                     },
                                     "metricConfig": [
                                         {
                                             "label": "1xx"
                                         },
-                                        {
-                                            "label": "2xx"
-                                        },
                                         {
                                             "label": "3xx"
                                         },
diff --git 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service.json
 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service.json
index 7de44eced5..330751d945 100644
--- 
a/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service.json
+++ 
b/oap-server/server-starter/src/main/resources/ui-initialized-templates/cilium_service/cilium-service.json
@@ -188,7 +188,6 @@
                                     "type": "Widget",
                                     "expressions": [
                                         
"cilium_service_protocol_http_status_1xx_cpm",
-                                        
"cilium_service_protocol_http_status_2xx_cpm",
                                         
"cilium_service_protocol_http_status_3xx_cpm",
                                         
"cilium_service_protocol_http_status_4xx_cpm",
                                         
"cilium_service_protocol_http_status_5xx_cpm"
@@ -205,9 +204,6 @@
                                         {
                                             "label": "1xx"
                                         },
-                                        {
-                                            "label": "2xx"
-                                        },
                                         {
                                             "label": "3xx"
                                         },
@@ -219,7 +215,7 @@
                                         }
                                     ],
                                     "widget": {
-                                        "title": "HTTP Response Code(Count per 
min)"
+                                        "title": "HTTP Non-2xx Response 
Code(Count per min)"
                                     }
                                 },
                                 {
diff --git a/test/e2e-v2/cases/cilium/cilium-network-policy.yaml 
b/test/e2e-v2/cases/cilium/cilium-network-policy.yaml
new file mode 100644
index 0000000000..70c4ec5f33
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/cilium-network-policy.yaml
@@ -0,0 +1,161 @@
+# 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: "cilium.io/v2"
+kind: CiliumNetworkPolicy
+metadata:
+    name: "rule3"
+spec:
+    description: "L7 policy to restrict access to specific HTTP call"
+    endpointSelector:
+        matchLabels:
+            app: productpage
+    ingress:
+        - fromEndpoints:
+              - matchLabels:
+                    "k8s:app": details
+              - matchLabels:
+                    "k8s:app": reviews
+              - matchLabels:
+                    "k8s:app": trafficgenerator
+    egress:
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:io.kubernetes.pod.namespace": kube-system
+                    "k8s:k8s-app": kube-dns
+          toPorts:
+              - ports:
+                    - port: "53"
+                      protocol: ANY
+                rules:
+                    dns:
+                        - matchPattern: "*"
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:app": trafficgenerator
+              - matchLabels:
+                    "k8s:app": details
+              - matchLabels:
+                    "k8s:app": reviews
+          toPorts:
+              - ports:
+                    - port: "9080"
+                      protocol: TCP
+                rules:
+                    http:
+                        - method: ""
+                          path: ""
+
+---
+
+apiVersion: "cilium.io/v2"
+kind: CiliumNetworkPolicy
+metadata:
+    name: "rule5"
+spec:
+    description: "L7 policy to restrict access to specific HTTP call"
+    endpointSelector:
+        matchLabels:
+            app: reviews
+    ingress:
+        - fromEndpoints:
+              - matchLabels:
+                    "k8s:app": productpage
+              - matchLabels:
+                    "k8s:app": ratings
+              - matchLabels:
+                    "k8s:io.kubernetes.pod.namespace": kube-system
+                    "k8s:k8s-app": kube-dns
+        - toPorts:
+              - ports:
+                    - port: "9080"
+                      protocol: TCP
+                rules:
+                    http:
+                        - method: ""
+                          path: ""
+    egress:
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:io.kubernetes.pod.namespace": kube-system
+                    "k8s:k8s-app": kube-dns
+          toPorts:
+              - ports:
+                    - port: "53"
+                      protocol: ANY
+                rules:
+                    dns:
+                        - matchPattern: "*"
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:app": productpage
+              - matchLabels:
+                    "k8s:app": ratings
+          toPorts:
+              - ports:
+                    - port: "9080"
+                      protocol: TCP
+                rules:
+                    http:
+                        - method: ""
+                          path: ""
+
+---
+
+apiVersion: "cilium.io/v2"
+kind: CiliumNetworkPolicy
+metadata:
+    name: "rule4"
+spec:
+    description: "L7 policy to restrict access to specific HTTP call"
+    endpointSelector:
+        matchLabels:
+            app: trafficgenerator
+    ingress:
+        - fromEndpoints:
+              - matchLabels:
+                    "k8s:app": productpage
+        - toPorts:
+              - ports:
+                    - port: "9080"
+                      protocol: TCP
+                rules:
+                    http:
+                        - method: ""
+                          path: ""
+    egress:
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:io.kubernetes.pod.namespace": kube-system
+                    "k8s:k8s-app": kube-dns
+          toPorts:
+              - ports:
+                    - port: "53"
+                      protocol: ANY
+                rules:
+                    dns:
+                        - matchPattern: "*"
+        - toEndpoints:
+              - matchLabels:
+                    "k8s:app": productpage
+          toPorts:
+              - ports:
+                    - port: "9080"
+                      protocol: TCP
+                rules:
+                    http:
+                        - method: ""
+                          path: ""
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cilium/e2e.yaml 
b/test/e2e-v2/cases/cilium/e2e.yaml
new file mode 100644
index 0000000000..26cc434bc6
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/e2e.yaml
@@ -0,0 +1,152 @@
+# 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
+  timeout: 10m
+  kind:
+    no-wait: true
+    import-images:
+      - skywalking/ui:latest
+      - skywalking/oap:latest
+    expose-ports:
+      - namespace: kube-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 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 cilium
+      command: |
+        bash test/e2e-v2/script/prepare/setup-e2e-shell/install.sh cilium
+        cilium install --wait
+        cilium status --wait
+    - name: Install SkyWalking
+      command: |
+        helm -n kube-system install skywalking \
+          oci://ghcr.io/apache/skywalking-helm/skywalking-helm \
+          --version "0.0.0-${SW_KUBERNETES_COMMIT_SHA}" \
+          --set fullnameOverride=skywalking \
+          --set elasticsearch.replicas=1 \
+          --set elasticsearch.minimumMasterNodes=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 \
+          -f test/e2e-v2/cases/cilium/values.yaml
+      wait:
+        - namespace: kube-system
+          resource: deployments/skywalking-oap
+          for: condition=available
+    - name: Deploy demo services
+      command: |
+        kubectl apply -f 
https://raw.githubusercontent.com/istio/istio/1.18.0/samples/bookinfo/platform/kube/bookinfo.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+    - name: Generate traffic
+      path: traffic-gen.yaml
+      wait:
+        - namespace: default
+          resource: pod
+          for: condition=Ready
+    - name: Apply Cilium Network Policy
+      path: cilium-network-policy.yaml
+
+verify:
+  retry:
+    count: 10
+    interval: 10s
+  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=productpage.default
+      expected: expected/service-instance.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=reviews.default
+      expected: expected/service-instance.yml
+    # service endpoint list
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 endpoint list --service-name=productpage.default
+      expected: expected/service-endpoint-productpage.yml
+
+    # dependency service
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 dependency global --layer=CILIUM_SERVICE
+      expected: expected/dependency-services.yml
+
+    # service metrics
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_l4_read_pkg_cpm 
--service-name='productpage.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_l4_write_pkg_cpm 
--service-name='productpage.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_protocol_http_call_cpm 
--service-name='productpage.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_protocol_http_status_2xx_cpm 
--service-name='productpage.default'
+      expected: expected/metrics-has-value.yml
+
+    # service instance metrics
+    - query: |
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_instance_l4_read_pkg_cpm 
--service-name='productpage.default' --instance-name=$(
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=productpage.default | yq e '.[0].name' -
+        )
+      expected: expected/metrics-has-value.yml
+    - query: |
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_instance_l4_write_pkg_cpm 
--service-name='productpage.default' --instance-name=$(
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=productpage.default | yq e '.[0].name' -
+        )
+      expected: expected/metrics-has-value.yml
+    - query: |
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_instance_protocol_http_call_cpm 
--service-name='productpage.default' --instance-name=$(
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=productpage.default | yq e '.[0].name' -
+        )
+      expected: expected/metrics-has-value.yml
+    - query: |
+        swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_instance_protocol_http_status_2xx_cpm 
--service-name='productpage.default' --instance-name=$(
+          swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 instance list --service-name=productpage.default | yq e '.[0].name' -
+        )
+      expected: expected/metrics-has-value.yml
+
+    # service endpoint metrics
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_endpoint_protocol_http_call_cpm 
--service-name='productpage.default' --endpoint-name="GET:/productpage"
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_endpoint_protocol_http_status_2xx_cpm 
--service-name='productpage.default' --endpoint-name="GET:/productpage"
+      expected: expected/metrics-has-value.yml
+
+    # service relation metrics
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_relation_server_l4_read_pkg_cpm  
--service-name='productpage.default' --dest-service-name='details.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_relation_server_l4_write_pkg_cpm  
--service-name='productpage.default' --dest-service-name='details.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec 
--expression=cilium_service_relation_server_protocol_http_call_cpm  
--service-name='productpage.default' --dest-service-name='details.default'
+      expected: expected/metrics-has-value.yml
+    - query: swctl --display yaml 
--base-url=http://${service_skywalking_ui_host}:${service_skywalking_ui_80}/graphql
 metrics exec --expression=cilium_service_relation_protocol_http_status_2xx_cpm 
 --service-name='productpage.default' --dest-service-name='details.default'
+      expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/cilium/expected/dependency-services.yml 
b/test/e2e-v2/cases/cilium/expected/dependency-services.yml
new file mode 100644
index 0000000000..ab14539a5f
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/expected/dependency-services.yml
@@ -0,0 +1,70 @@
+# 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.
+
+nodes:
+{{- contains .nodes }}
+- id: {{ b64enc "productpage.default"}}.1
+  name: productpage.default
+  type: http
+  isreal: true
+- id: {{ b64enc "details.default"}}.1
+  name: details.default
+  type: http
+  isreal: true
+- id: {{ b64enc "ratings.default" }}.1
+  name: ratings.default
+  type: http
+  isreal: true
+- id: {{ b64enc "reviews.default" }}.1
+  name: reviews.default
+  type: http
+  isreal: true
+{{- end }}
+calls:
+{{- contains .calls }}
+- source: {{ b64enc "productpage.default"}}.1
+  sourcecomponents: []
+  target: {{ b64enc "reviews.default"}}.1
+  targetcomponents:
+  {{- contains .targetcomponents }}
+  - http
+  - tcp
+  {{- end }}
+  id: {{ b64enc "productpage.default"}}.1-{{ b64enc "reviews.default"}}.1
+  detectpoints:
+    - SERVER
+- source: {{ b64enc "reviews.default" }}.1
+  sourcecomponents: []
+  target: {{ b64enc "ratings.default"}}.1
+  targetcomponents:
+  {{- contains .targetcomponents }}
+    - http
+    - tcp
+  {{- end }}
+  id: {{ b64enc "reviews.default" }}.1-{{ b64enc "ratings.default"}}.1
+  detectpoints:
+    - SERVER
+- source: {{ b64enc "productpage.default" }}.1
+  sourcecomponents: []
+  target: {{ b64enc "details.default"}}.1
+  targetcomponents:
+  {{- contains .targetcomponents }}
+  - http
+  - tcp
+  {{- end }}
+  id: {{ b64enc "productpage.default" }}.1-{{ b64enc "details.default"}}.1
+  detectpoints:
+    - SERVER
+{{- end }}
diff --git a/test/e2e-v2/cases/cilium/expected/metrics-has-value.yml 
b/test/e2e-v2/cases/cilium/expected/metrics-has-value.yml
new file mode 100644
index 0000000000..dc71f56632
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/expected/metrics-has-value.yml
@@ -0,0 +1,31 @@
+# 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.
+
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/cilium/expected/service-endpoint-productpage.yml 
b/test/e2e-v2/cases/cilium/expected/service-endpoint-productpage.yml
new file mode 100644
index 0000000000..f5788fe089
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/expected/service-endpoint-productpage.yml
@@ -0,0 +1,19 @@
+# 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 "productpage.default" }}.1_{{ b64enc "GET:/productpage" }}
+  name: GET:/productpage
+{{- end }}
diff --git a/test/e2e-v2/cases/cilium/expected/service-instance.yml 
b/test/e2e-v2/cases/cilium/expected/service-instance.yml
new file mode 100644
index 0000000000..658cdbd553
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/expected/service-instance.yml
@@ -0,0 +1,22 @@
+# 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: {{ notEmpty .id }}
+  name: {{ notEmpty .name }}
+  attributes: []
+  language: UNKNOWN
+  instanceuuid: {{ notEmpty .instanceuuid }}
+{{- end }}
diff --git a/test/e2e-v2/cases/cilium/expected/service.yml 
b/test/e2e-v2/cases/cilium/expected/service.yml
new file mode 100644
index 0000000000..f077bf3b93
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/expected/service.yml
@@ -0,0 +1,45 @@
+# 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 "details.default" }}.1
+  name: details.default
+  group: ""
+  shortname: details.default
+  layers:
+    - CILIUM_SERVICE
+  normal: true
+- id: {{ b64enc "reviews.default" }}.1
+  name: reviews.default
+  group: ""
+  shortname: reviews.default
+  layers:
+    - CILIUM_SERVICE
+  normal: true
+- id: {{ b64enc "productpage.default" }}.1
+  name: productpage.default
+  group: ""
+  shortname: productpage.default
+  layers:
+    - CILIUM_SERVICE
+  normal: true
+- id: {{ b64enc "ratings.default" }}.1
+  name: ratings.default
+  group: ""
+  shortname: ratings.default
+  layers:
+    - CILIUM_SERVICE
+  normal: true
+{{- end }}
diff --git a/test/e2e-v2/cases/cilium/kind.yaml 
b/test/e2e-v2/cases/cilium/kind.yaml
new file mode 100644
index 0000000000..03add7f302
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/kind.yaml
@@ -0,0 +1,23 @@
+# 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.
+
+kind: Cluster
+apiVersion: kind.x-k8s.io/v1alpha4
+nodes:
+  - role: control-plane
+  - role: worker
+  - role: worker
+networking:
+  disableDefaultCNI: true
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cilium/traffic-gen.yaml 
b/test/e2e-v2/cases/cilium/traffic-gen.yaml
new file mode 100644
index 0000000000..4e3b050216
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/traffic-gen.yaml
@@ -0,0 +1,40 @@
+# 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: apps/v1
+kind: Deployment
+metadata:
+  name: trafficgenerator
+  labels:
+    app: trafficgenerator
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: trafficgenerator
+  template:
+    metadata:
+      annotations:
+        sidecar.istio.io/inject: "false"
+      labels:
+        app: trafficgenerator
+    spec:
+      containers:
+        - name: trafficgenerator
+          image: elswork/wrk
+          command: ["wrk", "-t1", "-c1", "-d20m", 
"http://productpage:9080/productpage";]
+          resources:
+            requests:
+              cpu: 0.1
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cilium/values.yaml 
b/test/e2e-v2/cases/cilium/values.yaml
new file mode 100644
index 0000000000..4a6d75d48a
--- /dev/null
+++ b/test/e2e-v2/cases/cilium/values.yaml
@@ -0,0 +1,40 @@
+# 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.
+
+oap:
+  secretMounts:
+    - name: cilium-tls
+      secretName: hubble-server-certs
+      path: /etc/config/cilium-tls
+  env:
+    SW_CILIUM_FETCHER_CONVERT_CLIENT_AS_SERVER_TRAFFIC: "true"
+    SW_CILIUM_FETCHER: default
+    SW_CILIUM_FETCHER_PEER_PORT: 443
+    SW_CILIUM_FETCHER_SSL_CONNECTION: "true"
+    SW_CILIUM_FETCHER_PRIVATE_KEY_FILE_PATH: /etc/config/cilium-tls/tls.key
+    SW_CILIUM_FETCHER_CERT_CHAIN_FILE_PATH: /etc/config/cilium-tls/tls.crt
+    SW_CILIUM_FETCHER_CA_FILE_PATH: /etc/config/cilium-tls/ca.crt
+
+elasticsearch:
+  esConfig:
+    elasticsearch.yml: |
+      cluster.routing.allocation.disk.threshold_enabled: false
+  volumeClaimTemplate:
+    accessModes: [ "ReadWriteOnce" ]
+    resources:
+      requests:
+        storage: 2Gi
+  persistence:
+    enabled: true
diff --git a/test/e2e-v2/script/env b/test/e2e-v2/script/env
index e906d727c7..c0cbb4aeed 100644
--- a/test/e2e-v2/script/env
+++ b/test/e2e-v2/script/env
@@ -21,7 +21,7 @@ SW_AGENT_GO_COMMIT=774a6d56baba1187eb03bf1861af542c923b3dff
 SW_AGENT_PYTHON_COMMIT=c76a6ec51a478ac91abb20ec8f22a99b8d4d6a58
 SW_AGENT_CLIENT_JS_COMMIT=af0565a67d382b683c1dbd94c379b7080db61449
 SW_AGENT_CLIENT_JS_TEST_COMMIT=4f1eb1dcdbde3ec4a38534bf01dded4ab5d2f016
-SW_KUBERNETES_COMMIT_SHA=1741f5a0959b85faaf0a2fc6bbd7b550ec330280
+SW_KUBERNETES_COMMIT_SHA=1335f15bf821a40a7cd71448fa805f0be265afcc
 SW_ROVER_COMMIT=6bbd39aa701984482330d9dfb4dbaaff0527d55c
 SW_BANYANDB_COMMIT=e7210733022566cd0cee7ea2dc12cfb2f30fa8f3
 SW_AGENT_PHP_COMMIT=3192c553002707d344bd6774cfab5bc61f67a1d3
diff --git a/test/e2e-v2/script/prepare/setup-e2e-shell/install-cilium.sh 
b/test/e2e-v2/script/prepare/setup-e2e-shell/install-cilium.sh
new file mode 100644
index 0000000000..142008e84f
--- /dev/null
+++ b/test/e2e-v2/script/prepare/setup-e2e-shell/install-cilium.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+
+# ----------------------------------------------------------------------------
+# 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.
+# ----------------------------------------------------------------------------
+
+BASE_DIR=$1
+BIN_DIR=$2
+
+if ! command -v cilium &> /dev/null; then
+  mkdir -p $BASE_DIR/cilium && cd $BASE_DIR/cilium
+  CILIUM_CLI_VERSION="v0.16.11"
+  CLI_ARCH=amd64
+  if [ "$(uname -m)" = "aarch64" ]; then CLI_ARCH=arm64; fi
+  curl -L --fail --remote-name-all 
https://github.com/cilium/cilium-cli/releases/download/${CILIUM_CLI_VERSION}/cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
+  sha256sum --check cilium-linux-${CLI_ARCH}.tar.gz.sha256sum
+  sudo tar xzvfC cilium-linux-${CLI_ARCH}.tar.gz $BIN_DIR
+  rm cilium-linux-${CLI_ARCH}.tar.gz{,.sha256sum}
+fi
\ No newline at end of file


Reply via email to