summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com>2019-06-24 09:34:18 +0530
committerGitHub <noreply@github.com>2019-06-24 09:34:18 +0530
commit281caa397f8564bb228faa6cfcbb9a00d4c093a8 (patch)
tree84b4a2396e0f323009bfa4b552b34e9725fd2f23
parentMerge pull request #768 from gpinaik/terminate-reissue (diff)
parentadd edgemesh end to end test guide (diff)
downloadkubeedge-281caa397f8564bb228faa6cfcbb9a00d4c093a8.tar.gz
Merge pull request #758 from anyushun/edgemesh-end2end-test-doc
add edgemesh end to end test guide
-rw-r--r--docs/guides/edgemesh_test_env_guide.md116
-rw-r--r--docs/images/edgemesh/endtoend-test-flow.jpgbin0 -> 18905 bytes
-rw-r--r--docs/images/edgemesh/model.jpgbin0 -> 31828 bytes
3 files changed, 116 insertions, 0 deletions
diff --git a/docs/guides/edgemesh_test_env_guide.md b/docs/guides/edgemesh_test_env_guide.md
new file mode 100644
index 000000000..32a02e92e
--- /dev/null
+++ b/docs/guides/edgemesh_test_env_guide.md
@@ -0,0 +1,116 @@
+# Edgemesh end to end test guide
+## model
+![model](../images/edgemesh/model.jpg)
+1. a headless service(a service with selector but ClusterIP is None)
+2. one or more pods' labels match the headless service's selector
+3. so when request a server: ```<service_name>.<service_namespace>.svc.<cluster>```:
+ 1. get the service's name and namespace from domain name
+ 2. query the backend pods from metaManager by service's namespace and name
+ 3. load balance return the real backend container's hostIP and hostPort
+
+## flow from client to server
+![flow](../images/edgemesh/endtoend-test-flow.jpg)
+1. client request to server's domain name
+2. DNS request hijacked to edgemesh by iptables, return a fake ip
+3. request hijacked to edgemesh by iptables
+4. edgemesh resolve request, get domain name, protocol, request and so on
+5. edgemesh load balance:
+ 1. get the service name and namespace from the domain name
+ 2. query backend pod of the service from metaManager
+ 3. choose a backend based on strategy
+6. edgemesh transport request to server wait server response and then response to client
+
+## how to test end to end
+- create a headless service(**no need specify port**):
+```yaml
+apiVersion: v1
+kind: Service
+metadata:
+ name: test-headless
+ namespace: default
+spec:
+ clusterIP: None
+ selector:
+ app: whatapp
+```
+- create server deployment:
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: test-deployment
+ labels:
+ app: whatapp
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: whatapp
+ template:
+ metadata:
+ labels:
+ app: whatapp
+ spec:
+ nodeSelector:
+ name: ${label of the node server run}
+ containers:
+ - name: whatapp
+ image: docker.io/cloudnativelabs/whats-my-ip:latest
+ ports:
+ - containerPort: 8080
+ hostPort: 8080
+ initContainers:
+ - args:
+ - -p
+ - "8080"
+ - -i
+ - "192.168.1.2/24,156.43.2.1/26"
+ - -t
+ - "12345,5432,8080"
+ - -c
+ - "9292"
+ name: init1
+ image: docker.io/ytsobd/edgemesh_init:v1.0
+ securityContext:
+ privileged: true
+```
+- create client deployment:
+```yaml
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: client-deployment
+ labels:
+ app: whatapp
+spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: client
+ template:
+ metadata:
+ labels:
+ app: client
+ spec:
+ nodeSelector:
+ name: ${label of the node server run}
+ containers:
+ - name: whatapp
+ image: docker.io/cloudnativelabs/whats-my-ip:latest
+ initContainers:
+ - args:
+ - -p
+ - "8080"
+ - -i
+ - "192.168.1.2/24,156.43.2.1/26"
+ - -t
+ - "12345,5432,8080"
+ - -c
+ - "9292"
+ name: init1
+ image: docker.io/ytsobd/edgemesh_init:v1.0
+ securityContext:
+ privileged: true
+```
+**note: -p: whitelist, only port in whitelist can go out from client to edgemesh then to server**
+- client request server: exec into client container and then run command: ```curl http://test-headless.default.svc.cluster:8080```, will get the response from server like: ```HOSTNAME:test-app-686c6dbf98-6hrdq IP:10.11.0.4``` \ No newline at end of file
diff --git a/docs/images/edgemesh/endtoend-test-flow.jpg b/docs/images/edgemesh/endtoend-test-flow.jpg
new file mode 100644
index 000000000..5b3245641
--- /dev/null
+++ b/docs/images/edgemesh/endtoend-test-flow.jpg
Binary files differ
diff --git a/docs/images/edgemesh/model.jpg b/docs/images/edgemesh/model.jpg
new file mode 100644
index 000000000..e6535e8f6
--- /dev/null
+++ b/docs/images/edgemesh/model.jpg
Binary files differ