Skip to content

Commit

Permalink
Merge pull request #778 from TrekkieCoder/main
Browse files Browse the repository at this point in the history
gh-87 Added cicd for end-to-end https proxy LB scenario
  • Loading branch information
UltraInstinct14 authored Aug 28, 2024
2 parents 8adc910 + 2517df7 commit 1cbf12e
Show file tree
Hide file tree
Showing 6 changed files with 137 additions and 0 deletions.
6 changes: 6 additions & 0 deletions .github/workflows/advanced-lb-sanity.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,3 +119,9 @@ jobs:
./validation.sh
./rmconfig.sh
cd -
- run: |
cd cicd/e2ehttpsproxy/
./config.sh
./validation.sh
./rmconfig.sh
cd -
17 changes: 17 additions & 0 deletions cicd/common/tcp_https_server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// tcp_https_server.js

var certdir = "./"
if (process.argv[3]) {
certdir = process.argv[3]
}
const https = require('https');
const fs = require('fs');

https.createServer({
cert: fs.readFileSync(certdir + '/server.crt'),
key: fs.readFileSync(certdir + '/server.key')
}, (req, res) => {
res.writeHead(200);
res.end(process.argv[2]);
}).listen(8080);
console.log("Server listening on https://localhost:8080/");
53 changes: 53 additions & 0 deletions cicd/e2ehttpsproxy/config.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash

source ../common.sh

echo "#########################################"
echo "Spawning all hosts"
echo "#########################################"

spawn_docker_host --dock-type loxilb --dock-name llb1 --extra-args "--proxyonlymode"
spawn_docker_host --dock-type host --dock-name l3h1
spawn_docker_host --dock-type host --dock-name l3ep1
spawn_docker_host --dock-type host --dock-name l3ep2
spawn_docker_host --dock-type host --dock-name l3ep3

echo "#########################################"
echo "Connecting and configuring hosts"
echo "#########################################"


connect_docker_hosts l3h1 llb1
connect_docker_hosts l3ep1 llb1
connect_docker_hosts l3ep2 llb1
connect_docker_hosts l3ep3 llb1

sleep 5

#L3 config
config_docker_host --host1 l3h1 --host2 llb1 --ptype phy --addr 10.10.10.1/24 --gw 10.10.10.254
config_docker_host --host1 l3ep1 --host2 llb1 --ptype phy --addr 31.31.31.1/24 --gw 31.31.31.254
config_docker_host --host1 l3ep2 --host2 llb1 --ptype phy --addr 32.32.32.1/24 --gw 32.32.32.254
config_docker_host --host1 l3ep3 --host2 llb1 --ptype phy --addr 33.33.33.1/24 --gw 33.33.33.254
config_docker_host --host1 llb1 --host2 l3h1 --ptype phy --addr 10.10.10.254/24
config_docker_host --host1 llb1 --host2 l3ep1 --ptype phy --addr 31.31.31.254/24
config_docker_host --host1 llb1 --host2 l3ep2 --ptype phy --addr 32.32.32.254/24
config_docker_host --host1 llb1 --host2 l3ep3 --ptype phy --addr 33.33.33.254/24

$dexec llb1 ip addr add 10.10.10.3/32 dev lo

#Prepare certificates
rm -fr 10.10.10.254
rm -fr loxilb.io
rm -fr minica*.pem
./minica -ip-addresses 10.10.10.254
./minica -domains loxilb.io
mv loxilb.io/cert.pem loxilb.io/server.crt
mv loxilb.io/key.pem loxilb.io/server.key

docker cp minica.pem llb1:/opt/loxilb/cert/rootCA.crt
docker cp 10.10.10.254/cert.pem llb1:/opt/loxilb/cert/server.crt
docker cp 10.10.10.254/key.pem llb1:/opt/loxilb/cert/server.key

sleep 5
create_lb_rule llb1 10.10.10.254 --tcp=2020:8080 --endpoints=31.31.31.1:1,32.32.32.1:1,33.33.33.1:1 --mode=fullproxy --security=e2ehttps --host=loxilb.io
Binary file added cicd/e2ehttpsproxy/minica
Binary file not shown.
18 changes: 18 additions & 0 deletions cicd/e2ehttpsproxy/rmconfig.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

source ../common.sh

disconnect_docker_hosts l3h1 llb1
disconnect_docker_hosts l3ep1 llb1
disconnect_docker_hosts l3ep2 llb1
disconnect_docker_hosts l3ep3 llb1

delete_docker_host llb1
delete_docker_host l3h1
delete_docker_host l3ep1
delete_docker_host l3ep2
delete_docker_host l3ep3

echo "#########################################"
echo "Deleted testbed"
echo "#########################################"
43 changes: 43 additions & 0 deletions cicd/e2ehttpsproxy/validation.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#!/bin/bash
source ../common.sh
echo SCENARIO-e2ehttps-tcplb
$hexec l3ep1 node ../common/tcp_https_server.js server1 loxilb.io &
$hexec l3ep2 node ../common/tcp_https_server.js server2 loxilb.io &
$hexec l3ep3 node ../common/tcp_https_server.js server3 loxilb.io &

sleep 5
code=0
servIP=( "10.10.10.254" )
servArr=( "server1" "server2" "server3" )
ep=( "31.31.31.1" "32.32.32.1" "33.33.33.1" )
j=0
waitCount=0

for k in {0..0}
do
echo "Testing Service IP: ${servIP[k]}"
lcode=0
for i in {1..4}
do
for j in {0..2}
do
res=$($hexec l3h1 curl --max-time 10 -H "Application/json" -H "Content-type: application/json" -H "HOST: loxilb.io" --insecure -s https://${servIP[k]}:2020)
echo $res
if [[ $res != "${servArr[j]}" ]]
then
lcode=1
fi
sleep 1
done
done
if [[ $lcode == 0 ]]
then
echo SCENARIO-e2ehttps-tcplb with ${servIP[k]} [OK]
else
echo SCENARIO-e2ehttps-tcplb with ${servIP[k]} [FAILED]
code=1
fi
done

sudo killall -9 node 2>&1 > /dev/null
exit $code

0 comments on commit 1cbf12e

Please sign in to comment.