[proxy] Add tls support

Caveats:
* TLS files must be present on the target server (and readable)
* TLS file paths cannot contain spaces
* TLS file paths must be absolute (i.e. cannot be relative)
* Bash argument parsing is terrible
This commit is contained in:
Paul Bellamy committed 2015-06-05 13:23:14 +01:00
1 parent 8514172e57
commit c31358259f
9 files changed
+290 -21

No files matched your search

+51 -1
View File
@@ -746,6 +746,53 @@ get_ipam_cidr() {
fi
}
######################################################################
# weave proxy helpers
######################################################################
# TODO: Handle relative paths for args
# TODO: Handle args with spaces
proxy_args() {
PROXY_VOLUMES=""
PROXY_ARGS=""
while [ $# -gt 0 ]; do
case "$1" in
--tlscacert)
shift
PROXY_VOLUMES="$PROXY_VOLUMES -v $1:/home/weave/tls/ca.pem"
PROXY_ARGS="$PROXY_ARGS --tlscacert /home/weave/tls/ca.pem"
;;
--tlscacert=*)
PROXY_VOLUMES="$PROXY_VOLUMES -v ${1#*=}:/home/weave/tls/ca.pem"
PROXY_ARGS="$PROXY_ARGS --tlscacert /home/weave/tls/ca.pem"
;;
--tlscert)
shift
PROXY_VOLUMES="$PROXY_VOLUMES -v $1:/home/weave/tls/cert.pem"
PROXY_ARGS="$PROXY_ARGS --tlscert /home/weave/tls/cert.pem"
;;
--tlscert=*)
PROXY_VOLUMES="$PROXY_VOLUMES -v ${1#*=}:/home/weave/tls/cert.pem"
PROXY_ARGS="$PROXY_ARGS --tlscert /home/weave/tls/cert.pem"
;;
--tlskey)
shift
PROXY_VOLUMES="$PROXY_VOLUMES -v $1:/home/weave/tls/key.pem"
PROXY_ARGS="$PROXY_ARGS --tlskey /home/weave/tls/key.pem"
;;
--tlskey=*)
PROXY_VOLUMES="$PROXY_VOLUMES -v ${1#*=}:/home/weave/tls/key.pem"
PROXY_ARGS="$PROXY_ARGS --tlskey /home/weave/tls/key.pem"
;;
*)
PROXY_ARGS="$PROXY_ARGS $1"
;;
esac
shift
done
}
##########################################################################################
[ $(id -u) = 0 ] || {
@@ -880,12 +927,15 @@ case "$COMMAND" in
# Set WEAVEPROXY_DOCKER_ARGS in the environment in order to supply
# additional parameters, such as resource limits, to docker
# when launching the weaveproxy container.
proxy_args "$@"
PROXY_CONTAINER=$(docker run --privileged -d --name=$PROXY_CONTAINER_NAME --net=host \
-p $PROXY_PORT:$PROXY_PORT/tcp \
-v /var/run/docker.sock:/var/run/docker.sock -v /proc:/hostproc \
-e PROCFS=/hostproc \
$PROXY_VOLUMES \
--entrypoint=/home/weave/weaveproxy \
$WEAVEPROXY_DOCKER_ARGS $EXEC_IMAGE "$@")
$WEAVEPROXY_DOCKER_ARGS $EXEC_IMAGE $PROXY_ARGS)
wait_for_status_ip $PROXY_CONTAINER_NAME 127.0.0.1 $PROXY_PORT
echo $PROXY_CONTAINER
;;