diff options
| author | KubeEdge Bot <48982446+kubeedge-bot@users.noreply.github.com> | 2019-06-24 09:34:18 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-24 09:34:18 +0530 |
| commit | 281caa397f8564bb228faa6cfcbb9a00d4c093a8 (patch) | |
| tree | 84b4a2396e0f323009bfa4b552b34e9725fd2f23 | |
| parent | Merge pull request #768 from gpinaik/terminate-reissue (diff) | |
| parent | add edgemesh end to end test guide (diff) | |
| download | kubeedge-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.md | 116 | ||||
| -rw-r--r-- | docs/images/edgemesh/endtoend-test-flow.jpg | bin | 0 -> 18905 bytes | |||
| -rw-r--r-- | docs/images/edgemesh/model.jpg | bin | 0 -> 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 + +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 + +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 Binary files differnew file mode 100644 index 000000000..5b3245641 --- /dev/null +++ b/docs/images/edgemesh/endtoend-test-flow.jpg diff --git a/docs/images/edgemesh/model.jpg b/docs/images/edgemesh/model.jpg Binary files differnew file mode 100644 index 000000000..e6535e8f6 --- /dev/null +++ b/docs/images/edgemesh/model.jpg |
