dkregistry xai cli, and UI
This commit is contained in:
0
dockerfiles/services/dkregistry/cli/.bash_cli
Normal file
0
dockerfiles/services/dkregistry/cli/.bash_cli
Normal file
101
dockerfiles/services/dkregistry/cli/deploy
Executable file
101
dockerfiles/services/dkregistry/cli/deploy
Executable file
@@ -0,0 +1,101 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
STACK_NAME=dkregistry
|
||||||
|
SERVICE_NAME=registry
|
||||||
|
APP_NAME=${STACK_NAME}_${SERVICE_NAME}
|
||||||
|
|
||||||
|
LOG=$(mktemp)
|
||||||
|
|
||||||
|
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
|
||||||
|
|
||||||
|
###
|
||||||
|
function deploy() {
|
||||||
|
docker stack deploy \
|
||||||
|
--with-registry-auth \
|
||||||
|
-c docker-compose.yml \
|
||||||
|
${STACK_NAME}
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
docker stack ps ${STACK_NAME}
|
||||||
|
|
||||||
|
# wait_for_completed
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_completed() {
|
||||||
|
#states supported: "rollback_completed", "updating", "completed"
|
||||||
|
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
|
||||||
|
while [ "completed" != "$state" ]; do
|
||||||
|
echo "$state"
|
||||||
|
sleep 3
|
||||||
|
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
|
||||||
|
done
|
||||||
|
sleep 5
|
||||||
|
}
|
||||||
|
|
||||||
|
function deploy_test() {
|
||||||
|
docker ps | grep ${APP_NAME}
|
||||||
|
|
||||||
|
assertOK https dkregistry.xai-corp.net
|
||||||
|
}
|
||||||
|
|
||||||
|
function deploy_save() {
|
||||||
|
echo "No image to save"
|
||||||
|
}
|
||||||
|
|
||||||
|
dc() {
|
||||||
|
# shellcheck disable=SC2068
|
||||||
|
docker-compose \
|
||||||
|
-f docker-compose.yml \
|
||||||
|
$@
|
||||||
|
}
|
||||||
|
|
||||||
|
function assertOK() {
|
||||||
|
proto=$1
|
||||||
|
domain=$2
|
||||||
|
set -e
|
||||||
|
echo -e "\033[94m${proto}://${domain}\033[39m"
|
||||||
|
curl -IskH "Host: ${domain}" "${proto}://dkhost.xai-corp.net:5000" |
|
||||||
|
tee "$LOG" | grep -P "HTTP\/2 200|200 OK|302 Found|403 Forbidden"
|
||||||
|
}
|
||||||
|
|
||||||
|
function trap_exit() {
|
||||||
|
code=$?
|
||||||
|
docker service ls | grep "${APP_NAME}" || echo "service not found"
|
||||||
|
if [ $code -gt 0 ]; then
|
||||||
|
echo
|
||||||
|
cat "$LOG"
|
||||||
|
rm "$LOG"
|
||||||
|
echo -e "\033[31mFailed to deploy ${REMOTE_IMAGE} \033[39m"
|
||||||
|
exit $code
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm "$LOG"
|
||||||
|
echo -e "\033[32mSuccess:\033[39m ${REMOTE_IMAGE} successfully deployed"
|
||||||
|
}
|
||||||
|
trap trap_exit EXIT
|
||||||
|
|
||||||
|
print_usage() {
|
||||||
|
printf "Usage: %s: [-b] [-t] [-s] \n" "$0"
|
||||||
|
echo -d deploy
|
||||||
|
echo -t smoke tests
|
||||||
|
echo -s tag as latest
|
||||||
|
echo -h help
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
######
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
deploy && deploy_test && deploy_save
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
while getopts tdhs name; do
|
||||||
|
case $name in
|
||||||
|
d) deploy ;;
|
||||||
|
t) deploy_test ;;
|
||||||
|
s) deploy_save ;;
|
||||||
|
*) print_usage ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
4
dockerfiles/services/dkregistry/cli/deploy.help
Normal file
4
dockerfiles/services/dkregistry/cli/deploy.help
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
xai deploy [-dt]
|
||||||
|
|
||||||
|
-d deploy
|
||||||
|
-t test deployment
|
||||||
1
dockerfiles/services/dkregistry/cli/deploy.usage
Normal file
1
dockerfiles/services/dkregistry/cli/deploy.usage
Normal file
@@ -0,0 +1 @@
|
|||||||
|
xai deploy [-dt]
|
||||||
15
dockerfiles/services/dkregistry/cli/exec
Executable file
15
dockerfiles/services/dkregistry/cli/exec
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
set -x
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
dc() {
|
||||||
|
# shellcheck disable=SC2068
|
||||||
|
docker-compose \
|
||||||
|
-f docker-compose.yml \
|
||||||
|
$@
|
||||||
|
}
|
||||||
|
|
||||||
|
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
|
||||||
|
dc exec dkregistry_registry.1 /bin/bash
|
||||||
90
dockerfiles/services/dkregistry/cli/rollback
Executable file
90
dockerfiles/services/dkregistry/cli/rollback
Executable file
@@ -0,0 +1,90 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -e
|
||||||
|
#set -x
|
||||||
|
|
||||||
|
NC_VERSION=${NC_VERSION:-18}
|
||||||
|
LOCAL_IMAGE=xaicorp/nextcloud
|
||||||
|
TAG=${NC_VERSION}.0-${BUILD_NUMBER:-dev}
|
||||||
|
REMOTE_IMAGE=dkregistry.xai-corp.net:5000/${LOCAL_IMAGE}:${TAG}
|
||||||
|
STACK_NAME=xaibox
|
||||||
|
SERVICE_NAME=app
|
||||||
|
APP_NAME=${STACK_NAME}_${SERVICE_NAME}
|
||||||
|
|
||||||
|
LOG=$(mktemp)
|
||||||
|
|
||||||
|
#export LOCAL_IMAGE
|
||||||
|
export REMOTE_IMAGE
|
||||||
|
#export TAG
|
||||||
|
|
||||||
|
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
function rollback() {
|
||||||
|
# docker service inspect ${APP_NAME}
|
||||||
|
docker service update --rollback "${APP_NAME}"
|
||||||
|
|
||||||
|
wait_for_completed
|
||||||
|
# docker service scale "${APP_NAME}=2"
|
||||||
|
}
|
||||||
|
|
||||||
|
wait_for_completed() {
|
||||||
|
#states supported: "rollback_completed", "updating", "completed"
|
||||||
|
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
|
||||||
|
while [ "rollback_completed" != "$state" ]; do
|
||||||
|
echo "$state"
|
||||||
|
sleep 3
|
||||||
|
state=$(docker service inspect ${APP_NAME} | jq -r .[0].UpdateStatus.State)
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function rollback_test() {
|
||||||
|
docker service ps --filter "desired-state=Healthy" ${APP_NAME}
|
||||||
|
|
||||||
|
docker ps | grep "${APP_NAME}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function rollback_save() {
|
||||||
|
echo TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function trap_exit() {
|
||||||
|
code=$?
|
||||||
|
docker service ls | grep ${APP_NAME}
|
||||||
|
if [ $code -gt 0 ]; then
|
||||||
|
echo
|
||||||
|
rm "$LOG"
|
||||||
|
echo -e "\033[31mFailed rolling back ${APP_NAME} \033[39m"
|
||||||
|
exit $code
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm "$LOG"
|
||||||
|
echo -e "\033[32mSuccess:\033[39m ${APP_NAME} successfully rolled back"
|
||||||
|
}
|
||||||
|
trap trap_exit EXIT
|
||||||
|
|
||||||
|
print_usage() {
|
||||||
|
printf "Usage: %s: [-b] [-t] [-s] \n" "$0"
|
||||||
|
echo -r rollback
|
||||||
|
echo -t smoke tests
|
||||||
|
echo -s tag as latest
|
||||||
|
echo -h help
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
######
|
||||||
|
if [ -z "$1" ]; then
|
||||||
|
rollback && rollback_test && rollback_save
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
while getopts tdhs name
|
||||||
|
do
|
||||||
|
case $name in
|
||||||
|
d) rollback;;
|
||||||
|
t) rollback_test;;
|
||||||
|
s) rollback_save;;
|
||||||
|
*) print_usage;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
3
dockerfiles/services/dkregistry/cli/rollback.help
Normal file
3
dockerfiles/services/dkregistry/cli/rollback.help
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
ARGS - The arguments you wish to provide to this command
|
||||||
|
|
||||||
|
TODO: Fill out the help information for this command.
|
||||||
1
dockerfiles/services/dkregistry/cli/rollback.usage
Normal file
1
dockerfiles/services/dkregistry/cli/rollback.usage
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ARGS...
|
||||||
26
dockerfiles/services/dkregistry/config.yml
Normal file
26
dockerfiles/services/dkregistry/config.yml
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
version: 0.1
|
||||||
|
log:
|
||||||
|
fields:
|
||||||
|
service: registry
|
||||||
|
storage:
|
||||||
|
delete:
|
||||||
|
enabled: true
|
||||||
|
cache:
|
||||||
|
blobdescriptor: inmemory
|
||||||
|
filesystem:
|
||||||
|
rootdirectory: /var/lib/registry
|
||||||
|
http:
|
||||||
|
addr: :5000
|
||||||
|
headers:
|
||||||
|
X-Content-Type-Options: [nosniff]
|
||||||
|
Access-Control-Allow-Origin: [ 'http://localhost' ]
|
||||||
|
Access-Control-Allow-Methods: [ 'HEAD', 'GET', 'OPTIONS', 'DELETE' ]
|
||||||
|
Access-Control-Allow-Headers: [ 'Authorization', 'Accept' ]
|
||||||
|
Access-Control-Max-Age: [ 1728000 ]
|
||||||
|
Access-Control-Allow-Credentials: [ true ]
|
||||||
|
Access-Control-Expose-Headers: [ 'Docker-Content-Digest' ]
|
||||||
|
health:
|
||||||
|
storagedriver:
|
||||||
|
enabled: true
|
||||||
|
interval: 10s
|
||||||
|
threshold: 3
|
||||||
@@ -28,6 +28,7 @@ services:
|
|||||||
- /opt/shared/letsencrypt-2:/certs
|
- /opt/shared/letsencrypt-2:/certs
|
||||||
- /opt/shared/letsencrypt-2:/etc/letsencrypt
|
- /opt/shared/letsencrypt-2:/etc/letsencrypt
|
||||||
- /opt/shared/dkregistry/auth:/auth
|
- /opt/shared/dkregistry/auth:/auth
|
||||||
|
- /opt/shared/dkregistry/config/config.yml:/etc/docker/registry/config.yml
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
mode: replicated
|
mode: replicated
|
||||||
@@ -52,29 +53,29 @@ services:
|
|||||||
fluentd-async-connect: 'true'
|
fluentd-async-connect: 'true'
|
||||||
tag: dkregistry
|
tag: dkregistry
|
||||||
|
|
||||||
# registry-ui:
|
|
||||||
# image: hyper/docker-registry-web
|
ui:
|
||||||
# ports:
|
image: joxit/docker-registry-ui:latest
|
||||||
# - 8087:8080
|
ports:
|
||||||
# environment:
|
- 8087:80
|
||||||
# REGISTRY_URL: https://dkregistry.xai-corp.net:5000/v2
|
environment:
|
||||||
# REGISTRY_NAME: dkregistry
|
- REGISTRY_TITLE=Xai Corp. Private Docker Registry
|
||||||
# REGISTRY_READONLY: 'false'
|
- REGISTRY_URL=https://dkregistry.xai-corp.net:5000
|
||||||
# REGISTRY_AUTH_ENABLED: 'true'
|
- SINGLE_REGISTRY=true
|
||||||
# REGISTRY_BASIC_AUTH: $apr1$2vrW.sPv$aIZ6xnQcvde6.kX7KvWm5/
|
- DELETE_IMAGES=true
|
||||||
#
|
|
||||||
# deploy:
|
deploy:
|
||||||
# mode: replicated
|
mode: replicated
|
||||||
# replicas: 1
|
replicas: 1
|
||||||
# restart_policy:
|
restart_policy:
|
||||||
# condition: any
|
condition: any
|
||||||
# delay: "1s"
|
delay: "1s"
|
||||||
# max_attempts: 1
|
max_attempts: 1
|
||||||
# update_config:
|
update_config:
|
||||||
# parallelism: 1
|
parallelism: 1
|
||||||
# delay: 2s
|
delay: 2s
|
||||||
# order: start-first
|
order: start-first
|
||||||
# resources:
|
resources:
|
||||||
# limits:
|
limits:
|
||||||
# cpus: '2'
|
cpus: '2'
|
||||||
# memory: 2048M
|
memory: 2048M
|
||||||
|
|||||||
Reference in New Issue
Block a user