-
-
Notifications
You must be signed in to change notification settings - Fork 125
/
docker-compose.yml
128 lines (116 loc) · 4 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
version: '3.4'
services:
host-password:
image: lscr.io/linuxserver/openssh-server:latest
environment:
- PASSWORD_ACCESS=true
- USER_PASSWORD=pass
- USER_NAME=user
labels:
- sshpiper.username=pass
- sshpiper.container_username=user
- sshpiper.port=2222
- sshpiper.network=e2e_default
volumes:
- shared:/shared
- sshconfig_password:/config
networks:
- default
- netdistract
host-publickey:
image: lscr.io/linuxserver/openssh-server:latest
environment:
- USER_NAME=user
labels:
- sshpiper.container_username=user
- sshpiper.port=2222
- sshpiper.authorized_keys=c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSU5SR1RIMzI1ckRVcDEydHBsd3VrSG1SOHl0YkM5VFBaODg2Z0NzdHluUDEgdGVzdEB0ZXN0Cg==
- sshpiper.private_key=LS0tLS1CRUdJTiBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0KYjNCbGJuTnphQzFyWlhrdGRqRUFBQUFBQkc1dmJtVUFBQUFFYm05dVpRQUFBQUFBQUFBQkFBQUFNd0FBQUF0emMyZ3RaVwpReU5UVXhPUUFBQUNEVVJreDk5dWF3MUtkZHJhWmNMcEI1a2ZNcld3dlV6MmZQT29BckxjcHo5UUFBQUpDK2owK1N2bzlQCmtnQUFBQXR6YzJndFpXUXlOVFV4T1FBQUFDRFVSa3g5OXVhdzFLZGRyYVpjTHBCNWtmTXJXd3ZVejJmUE9vQXJMY3B6OVEKQUFBRURjUWdkaDJ6MnIvNmJscTB6aUoxbDZzNklBWDhDKzlRSGZBSDkzMWNITk85UkdUSDMyNXJEVXAxMnRwbHd1a0htUgo4eXRiQzlUUFo4ODZnQ3N0eW5QMUFBQUFEV0p2YkdsaGJrQjFZblZ1ZEhVPQotLS0tLUVORCBPUEVOU1NIIFBSSVZBVEUgS0VZLS0tLS0K
volumes:
- shared:/shared
- sshconfig_publickey:/config
host-capublickey:
build: ./cahost
labels:
- sshpiper.port=2222
- sshpiper.network=e2e_default
volumes:
- shared:/shared
networks:
- default
host-k8s-proxy:
build: ./kubetools
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ../plugin/kubernetes/crd.yaml:/kubernetes/crd.yaml:ro
- ./k8sworkload.yaml:/kubernetes/workload.yaml:ro
- kubeconfig:/root/.kube
# networks:
# - kind
# - default
command:
- bash
- -cx
- |
(kind get kubeconfig -q -n sshpipertest || kind create cluster -n sshpipertest)
docker network connect kind $$(hostname) # self contain
docker network connect e2e_default sshpipertest-control-plane
kind export kubeconfig -n sshpipertest --internal
kubectl wait --for=condition=ready pod -n kube-system --all --timeout=2m
kubectl delete -f /kubernetes/crd.yaml --force --ignore-not-found
kubectl delete -f /kubernetes/workload.yaml --force --ignore-not-found
set -e
kind load docker-image -n sshpipertest sshpiper-test-image
kubectl wait --for=delete pod --all --timeout=2m # ensure no leftover
kubectl apply -f /kubernetes/crd.yaml
kubectl apply -f /kubernetes/workload.yaml
kubectl wait deployment --all --for condition=Available=True
kubectl port-forward service/sshpiper --pod-running-timeout=2m --address 0.0.0.0 2222:2222 &
kubectl logs -f deployment/sshpiper-deployment
privileged: true
depends_on:
- host-publickey
- host-password
- piper-imageonly
testrunner:
environment:
- SSHPIPERD_LOG_LEVEL=trace
- SSHPIPERD_E2E_TEST=1
- SSHPIPERD_DEBUG=${SSHPIPERD_DEBUG}
- DOCKER_API_VERSION=1.40
build:
context: ../
target: testrunner
args:
- BUILDTAGS=e2e
volumes:
- ..:/src
- shared:/shared
- sshconfig_publickey:/sshconfig_publickey
- sshconfig_password:/sshconfig_password
- /var/run/docker.sock:/var/run/docker.sock
- kubeconfig:/root/.kube:ro
command: ["./e2eentry.sh"]
privileged: true
working_dir: /src/e2e
depends_on:
- host-publickey
- host-password
- host-capublickey
- host-k8s-proxy
# ensure sshpiperd image works
piper-imageonly:
environment:
- SSHPIPERD_LOG_LEVEL=trace
build: ../
image: sshpiper-test-image
volumes:
shared:
driver_opts:
type: tmpfs
device: tmpfs
sshconfig_publickey:
sshconfig_password:
kubeconfig:
networks:
netdistract: