You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2018/08/13 14:34:11 UTC

[incubator-servicecomb-saga] branch master updated: [SCB-823] Refer to public images, add testing facilities (#250)

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

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-servicecomb-saga.git


The following commit(s) were added to refs/heads/master by this push:
     new eac55be  [SCB-823] Refer to public images, add testing facilities (#250)
eac55be is described below

commit eac55be231aa74cb265563cb4e7ae13f8e95a689
Author: crystaldust <ju...@gmail.com>
AuthorDate: Mon Aug 13 22:34:09 2018 +0800

    [SCB-823] Refer to public images, add testing facilities (#250)
    
    * Add jmeter-collector in base folder.
    The collector receives tar.gz file, which contains the jmeter dashboard,
    decompress it into a formatted path and display the results in a web page.
    
    * Refer images from dockerhub
    
    * Upload spring-demo jmeter test results to jmeter-collector.
    - Remove the hostPath volume mounts since the test result is now
    uploaded to jmeter-collector service.
    - Set container user's HOME as working dir for WRITE permission under
    most scenarios
    
    * Update the README on k8s operations.
---
 saga-demo/saga-k8s-resources/README.md             | 11 ++++-----
 saga-demo/saga-k8s-resources/base/alpha.yaml       |  2 +-
 .../car.yaml => base/jmeter-collector.yaml}        | 28 ++++++++++------------
 .../saga-k8s-resources/spring-demo/booking.yaml    |  2 +-
 saga-demo/saga-k8s-resources/spring-demo/car.yaml  |  2 +-
 .../saga-k8s-resources/spring-demo/hotel.yaml      |  2 +-
 .../spring-demo/test/jmeter.yaml                   | 23 ++++++++----------
 7 files changed, 31 insertions(+), 39 deletions(-)

diff --git a/saga-demo/saga-k8s-resources/README.md b/saga-demo/saga-k8s-resources/README.md
index a10588c..894bd88 100644
--- a/saga-demo/saga-k8s-resources/README.md
+++ b/saga-demo/saga-k8s-resources/README.md
@@ -27,6 +27,8 @@ service "alpha-server" created
 deployment "alphaserver" created
 service "postgresql" created
 deployment "database" created
+service "jmeter-collector" created
+deployment "jmeter-collector" created
 
 $ kubectl apply -f ./spring-demo
 service "booking" created
@@ -60,13 +62,8 @@ configmap "springdemo-jmeter-script" created
 deployment "spring-demo-jmeter" created
 
 $ kubectl get pods -n servicecomb | grep jmeter
+jmeter-collector-75c4c96dbb-2bjtc     1/1       Running   0          47s
 spring-demo-jmeter-6cfb679f58-sckkx   1/1       Running   0          12s
 ```
 
-The jmeter deployment will keep testing the demo and generate the test result. For now the the result file is stored in the Kubernetes nodes under the path `/saga-jmeter-result/{demo_name}.jtl`. You can generate the HTML dashboard with the command:
-
-```bash
-$ jmeter -g /saga-jmeter-result/{demo_name}.jtl -o output/
-```
-
-We will try to provide more services to automate the dashboard generation in the future.
+The jmeter deployment will keep testing the demo and generate the test result. After each test, the result and its corresponding dashboard will be uploaded to the jmeter-collector service, which provides a simple web page to browser the test outputs. So make sure you config the jmeter-collector to be accessible, like a [NodePort](https://kubernetes.io/docs/concepts/services-networking/service/#nodeport) in a private cluster or [LoadBalancer](https://kubernetes.io/docs/concepts/services-n [...]
diff --git a/saga-demo/saga-k8s-resources/base/alpha.yaml b/saga-demo/saga-k8s-resources/base/alpha.yaml
index 47c0d5d..408c13b 100644
--- a/saga-demo/saga-k8s-resources/base/alpha.yaml
+++ b/saga-demo/saga-k8s-resources/base/alpha.yaml
@@ -44,7 +44,7 @@ spec:
     spec:
       containers:
       - name: alphaserver
-        image: alpha-server:0.3.0-SNAPSHOT
+        image: saga/alpha-server:0.3.0-SNAPSHOT
         imagePullPolicy: IfNotPresent
         # ports:
         # - containerPort: 8080
diff --git a/saga-demo/saga-k8s-resources/spring-demo/car.yaml b/saga-demo/saga-k8s-resources/base/jmeter-collector.yaml
similarity index 79%
copy from saga-demo/saga-k8s-resources/spring-demo/car.yaml
copy to saga-demo/saga-k8s-resources/base/jmeter-collector.yaml
index 064ead2..4492fa4 100644
--- a/saga-demo/saga-k8s-resources/spring-demo/car.yaml
+++ b/saga-demo/saga-k8s-resources/base/jmeter-collector.yaml
@@ -18,38 +18,36 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: car
+  name: jmeter-collector
   namespace: servicecomb
   labels:
-    app: car
+    app: jmeter-collector
 spec:
   ports:
-  - port: 8082
-    targetPort: 8080
-    name: car
+  - port: 80
+    targetPort: 8883
+    name: http-jmeter-collector
+  # externalIPs: ["YOUR_NODE_IP"]
+  # type: NodePort
   selector:
-    app: car
+    app: jmeter-collector
 ---
 apiVersion: extensions/v1beta1
 kind: Deployment
 metadata:
-  name: car
+  name: jmeter-collector
   namespace: servicecomb
 spec:
   replicas: 1
   template:
     metadata:
       labels:
-        app: car
+        app: jmeter-collector
         version: v1
     spec:
       containers:
-      - name: car
-        image: car:0.3.0-SNAPSHOT
+      - name: jmeter-collector
+        image: saga/jmeter-collector:v1
         imagePullPolicy: IfNotPresent
-        env:
-        - name: JAVA_OPTS
-          value: -Dalpha.cluster.address=alpha-server.servicecomb:8080
-        ports:
-        - containerPort: 8080
 ---
+
diff --git a/saga-demo/saga-k8s-resources/spring-demo/booking.yaml b/saga-demo/saga-k8s-resources/spring-demo/booking.yaml
index 93fc151..10f7c80 100644
--- a/saga-demo/saga-k8s-resources/spring-demo/booking.yaml
+++ b/saga-demo/saga-k8s-resources/spring-demo/booking.yaml
@@ -45,7 +45,7 @@ spec:
     spec:
       containers:
       - name: booking
-        image: booking:0.3.0-SNAPSHOT
+        image: saga/booking:0.3.0-SNAPSHOT
         imagePullPolicy: IfNotPresent
         env:
         - name: JAVA_OPTS
diff --git a/saga-demo/saga-k8s-resources/spring-demo/car.yaml b/saga-demo/saga-k8s-resources/spring-demo/car.yaml
index 064ead2..52a7451 100644
--- a/saga-demo/saga-k8s-resources/spring-demo/car.yaml
+++ b/saga-demo/saga-k8s-resources/spring-demo/car.yaml
@@ -45,7 +45,7 @@ spec:
     spec:
       containers:
       - name: car
-        image: car:0.3.0-SNAPSHOT
+        image: saga/car:0.3.0-SNAPSHOT
         imagePullPolicy: IfNotPresent
         env:
         - name: JAVA_OPTS
diff --git a/saga-demo/saga-k8s-resources/spring-demo/hotel.yaml b/saga-demo/saga-k8s-resources/spring-demo/hotel.yaml
index ef1b052..87f3808 100644
--- a/saga-demo/saga-k8s-resources/spring-demo/hotel.yaml
+++ b/saga-demo/saga-k8s-resources/spring-demo/hotel.yaml
@@ -45,7 +45,7 @@ spec:
     spec:
       containers:
       - name: hotel
-        image: hotel:0.3.0-SNAPSHOT
+        image: saga/hotel:0.3.0-SNAPSHOT
         imagePullPolicy: IfNotPresent
         env:
         - name: JAVA_OPTS
diff --git a/saga-demo/saga-k8s-resources/spring-demo/test/jmeter.yaml b/saga-demo/saga-k8s-resources/spring-demo/test/jmeter.yaml
index b631253..8283d22 100644
--- a/saga-demo/saga-k8s-resources/spring-demo/test/jmeter.yaml
+++ b/saga-demo/saga-k8s-resources/spring-demo/test/jmeter.yaml
@@ -28,27 +28,24 @@ spec:
         version: v1
     spec:
       containers:
-      - name: jmeter
-        image: justb4/jmeter
+      - name: spring-demo-jmeter
+        image: saga/jmeter:v1
         imagePullPolicy: IfNotPresent
         # TODO ReplicaSet, ReplicationController, Deployment, Daemonset only allow restartPolicy to be 'Always'
         # Maybe we should provide a custom test scheduler to scale up pods and let them exit naturally.
         # restartPolicy: Never
-        args: ["-n", "-t", "/tmp/saga.jmx", "-l", "/tmp/jmeter-result/spring-demo.jtl"]
+        args: ["-n", "-t", "/tmp/saga.jmx", "-l", "/root/spring-demo.jtl", "-e", "-o", "/root/dashboard"]
+        env:
+        - name: REPORT_PATH
+          value: /root/spring-demo.jtl
+        - name: REPORT_UPLOAD_SERVER
+          value: jmeter-collector.servicecomb
+        - name: TESTNAME
+          value: spring-demo
         volumeMounts:
         - name: jmeter-script
           mountPath: /tmp/
-        - name: result-dir
-          mountPath: /tmp/jmeter-result
-        lifecycle:
-          preStop:
-            exec:
-              command: ["echo", "jmeter finished"]
       volumes:
         - name: jmeter-script
           configMap:
             name: springdemo-jmeter-script
-        - name: result-dir
-          hostPath:
-            type: DirectoryOrCreate
-            path: /saga-jmeter-result/