adding swarm tools and deployment notes
This commit is contained in:
parent
0256b04f04
commit
d7519eee7b
5
.gitignore
vendored
5
.gitignore
vendored
@ -113,8 +113,3 @@ venv.bak/
|
|||||||
# Added config to hide hash of changed password
|
# Added config to hide hash of changed password
|
||||||
src/jupyter_notebook_config.json
|
src/jupyter_notebook_config.json
|
||||||
.idea
|
.idea
|
||||||
Deployment-notes.md
|
|
||||||
add-to-swarm-with-defaults.sh
|
|
||||||
add-to-swarm.sh
|
|
||||||
remove-from-swarm.sh
|
|
||||||
docker-compose-swarm.yml
|
|
||||||
|
37
Deployment-notes.md
Normal file
37
Deployment-notes.md
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# Deployment Notes
|
||||||
|
|
||||||
|
## Push image with tag to Dockerhub
|
||||||
|
|
||||||
|
Based on [this](https://ropenscilabs.github.io/r-docker-tutorial/04-Dockerhub.html) tutorial
|
||||||
|
with the tag `v1.0_cuda-10.1_ubuntu-18.04`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# on il048:
|
||||||
|
cd ~/Documents/projects/GPU-Jupyter/gpu-jupyter
|
||||||
|
git pull
|
||||||
|
bash generate_Dockerfile.sh
|
||||||
|
bash start-local -p 1234
|
||||||
|
docker image ls
|
||||||
|
docker tag [IMAGE ID] cschranz/gpu-jupyter:v1.0_cuda-10.1_ubuntu-18.04
|
||||||
|
docker push cschranz/gpu-jupyter:v1.0_cuda-10.1_ubuntu-18.04
|
||||||
|
docker save cschranz/gpu-jupyter > ../gpu-jupyter_tag-v1.0_cuda-10.1_ubuntu-18.04.tar
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, the new tag is available on [Dockerhub](https://hub.docker.com/repository/docker/cschranz/gpu-jupyter/tags).
|
||||||
|
|
||||||
|
|
||||||
|
## Deployment in the swarm
|
||||||
|
|
||||||
|
The GPU-Jupyter instance for deployment, that has swarm files and changed pw is
|
||||||
|
in `/home/iotdev/Documents/projects/dtz/src/gpu-jupyter`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# on il048:
|
||||||
|
cd /home/iotdev/Documents/projects/dtz/src/gpu-jupyter
|
||||||
|
git pull
|
||||||
|
bash generate_Dockerfile.sh
|
||||||
|
bash add-to-swarm-with-defaults.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Then, the service will be available with data stored in `data`
|
||||||
|
on [192.168.48.48:8848](http://192.168.48.48:8848) with our password.
|
4
add-to-swarm-with-defaults.sh
Executable file
4
add-to-swarm-with-defaults.sh
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
cd $(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
||||||
|
|
||||||
|
./add-to-swarm.sh -p 8848 -n elk_datastack -r 5001
|
58
add-to-swarm.sh
Executable file
58
add-to-swarm.sh
Executable file
@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
cd $(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
||||||
|
|
||||||
|
# Fetching port and network as input
|
||||||
|
PORT=8888
|
||||||
|
REGISTRY=5000
|
||||||
|
while [[ "$#" -gt 0 ]]; do case $1 in
|
||||||
|
-p|--port) PORT="$2"; shift;;
|
||||||
|
-r|--registry) REGISTRY="$2"; shift;;
|
||||||
|
-n|--network) NETWORK="$2"; shift;;
|
||||||
|
# -u|--uglify) uglify=1;;
|
||||||
|
*) echo "Unknown parameter passed: $1"; exit 1;;
|
||||||
|
esac; shift; done
|
||||||
|
|
||||||
|
# Check if arguments are valid
|
||||||
|
if [[ $PORT != [0-9][0-9][0-9][0-9]* ]]; then
|
||||||
|
echo "Given port is not valid."
|
||||||
|
echo "Usage: $0 -p [port] -n [docker-network] -r [registry-port] # ports must be an integer with 4 or more digits."
|
||||||
|
exit 21
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $REGISTRY != [0-9][0-9][0-9][0-9]* ]]; then
|
||||||
|
echo "Given registry port is not valid."
|
||||||
|
echo "Usage: $0 -p [port] -n [docker-network] -r [registry-port] # ports must be an integer with 4 or more digits."
|
||||||
|
exit 21
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $NETWORK == "" ]]; then
|
||||||
|
echo "No docker network was provided to which this gpu-jupyter should be added to."
|
||||||
|
echo "Usage: $0 -p [port] -n [docker-network] -r [registry-port] # ports must be an integer with 4 or more digits."
|
||||||
|
exit 22
|
||||||
|
fi
|
||||||
|
result=$(docker network ls)
|
||||||
|
if [[ "$result" != *" $NETWORK "* ]]; then
|
||||||
|
echo "Could not find network $NETWORK. Please provide a valid docker network."
|
||||||
|
echo "Please select a network:"
|
||||||
|
docker network ls
|
||||||
|
exit 23
|
||||||
|
fi
|
||||||
|
|
||||||
|
# starting in swarm
|
||||||
|
export HOSTNAME=$(hostname)
|
||||||
|
export JUPYTER_PORT=$PORT
|
||||||
|
export REGISTRY_PORT=$REGISTRY
|
||||||
|
export JUPYTER_NETWORK=$NETWORK
|
||||||
|
echo "Adding gpu-jupyter to the swarm on the node $HOSTNAME in the network $NETWORK on port $PORT and registry to port $REGISTRY."
|
||||||
|
|
||||||
|
# substitute the blueprint docker-compose-swarm with the environment variables and stack deploy it.
|
||||||
|
envsubst < docker-compose-swarm.yml > .docker-compose-swarm.yml.envsubst
|
||||||
|
docker-compose -f .docker-compose-swarm.yml.envsubst build
|
||||||
|
docker-compose -f .docker-compose-swarm.yml.envsubst push
|
||||||
|
docker stack deploy --compose-file .docker-compose-swarm.yml.envsubst gpu
|
||||||
|
rm .docker-compose-swarm.yml.envsubst
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Added gpu-jupyter to docker swarm $NETWORK on port $JUPYTER_PORT."
|
||||||
|
echo "See 'docker service ps gpu_gpu-jupyter' for status info."
|
||||||
|
echo "See 'docker service logs -f gpu_gpu-jupyter' for logs."
|
32
docker-compose-swarm.yml
Normal file
32
docker-compose-swarm.yml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
version: "3.4"
|
||||||
|
services:
|
||||||
|
gpu-jupyter:
|
||||||
|
image: 127.0.0.1:$REGISTRY_PORT/gpu-jupyter
|
||||||
|
build: .build
|
||||||
|
ports:
|
||||||
|
- $JUPYTER_PORT:8888
|
||||||
|
volumes:
|
||||||
|
- ./data:/home/jovyan/work
|
||||||
|
environment:
|
||||||
|
GRANT_SUDO: "yes"
|
||||||
|
JUPYTER_ENABLE_LAB: "yes"
|
||||||
|
# enable sudo permissions
|
||||||
|
user:
|
||||||
|
"root"
|
||||||
|
networks:
|
||||||
|
- default
|
||||||
|
- $JUPYTER_NETWORK
|
||||||
|
deploy:
|
||||||
|
placement:
|
||||||
|
constraints: [node.hostname == $HOSTNAME]
|
||||||
|
replicas: 1
|
||||||
|
update_config:
|
||||||
|
parallelism: 2
|
||||||
|
delay: 10s
|
||||||
|
restart_policy:
|
||||||
|
condition: on-failure
|
||||||
|
|
||||||
|
networks:
|
||||||
|
$JUPYTER_NETWORK:
|
||||||
|
external:
|
||||||
|
name: $JUPYTER_NETWORK
|
5
remove-from-swarm.sh
Executable file
5
remove-from-swarm.sh
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
cd $(cd -P -- "$(dirname -- "$0")" && pwd -P)
|
||||||
|
|
||||||
|
echo "Removing gpu-jupyter from docker swarm."
|
||||||
|
docker stack rm gpu
|
Loading…
Reference in New Issue
Block a user