updates to deploy testing and certbot commands

This commit is contained in:
2020-06-05 08:02:45 -04:00
parent 857bf699de
commit 7175a4fb2d
14 changed files with 132 additions and 41 deletions

View File

@@ -0,0 +1,24 @@
-----BEGIN CERTIFICATE-----
MIIEGjCCAwKgAwIBAgIUZ2R4JeFPIi3G1leHHfJGlf6IWQYwDQYJKoZIhvcNAQEL
BQAwfDELMAkGA1UEBhMCQ0ExDzANBgNVBAgMBlF1ZWJlYzERMA8GA1UEBwwITW9u
dHJlYWwxGDAWBgNVBAoMD1hhaSBDb3Jwb3JhdGlvbjEUMBIGA1UECwwLRGV2ZWxv
cG1lbnQxGTAXBgNVBAMMEHd3dy54YWktY29ycC5uZXQwHhcNMjAwNjA0MDIwOTM2
WhcNMjEwNjA0MDIwOTM2WjB8MQswCQYDVQQGEwJDQTEPMA0GA1UECAwGUXVlYmVj
MREwDwYDVQQHDAhNb250cmVhbDEYMBYGA1UECgwPWGFpIENvcnBvcmF0aW9uMRQw
EgYDVQQLDAtEZXZlbG9wbWVudDEZMBcGA1UEAwwQd3d3LnhhaS1jb3JwLm5ldDCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALzYwesOX5FAc9IbsRfzRkVs
Nzja1Zk6uBt4kQsAGfdwMvaOMzNrTdeltzckqf+ivxsdc5ZfYXR/xlWJXbD199/2
PWtRjTQjADxfMvEzRiKNUXxKNMFr4I0vTIGwxduGIYr1H+xjXB7YdcxyIk/LkzOZ
GsUNrmtEKf+RUyjPnDjduCrajm22ndhdTxC1PIYcJkdNbAtE8qTtqAtPnJauUmYF
FtKiWnD4Wddt8h5ftHCcLVuz3IIwOO8QrptaK2JA1eRPdSCN1RGtouHyJjd9T3We
nQRPTFrEljuX6DxotqLldGf8HJaPp0LLTw/Zju9WV6aZh6awRbB+hcTA8qw+P9kC
AwEAAaOBkzCBkDCBjQYDVR0RBIGFMIGCggx4YWktY29ycC5uZXSCEHd3dy54YWkt
Y29ycC5uZXSCEGFiYy54YWktY29ycC5uZXSCEWRrdWkueGFpLWNvcnAubmV0ghBn
aXQueGFpLWNvcnAubmV0ghRqZW5raW5zLnhhaS1jb3JwLm5ldIITeGFpYm94Lnhh
aS1jb3JwLm5ldDANBgkqhkiG9w0BAQsFAAOCAQEAWrG470Bp1rVK7084hrGt2EQU
A9vIh2mHFANUG+wtL6cDSbmBMhq3BTxzHaol5lqS4MHHJZ9jWnLcsvUWaKHh8H1Z
TBwuk/kYwfaUpUVASq9EloEhAnphzIJsJGgDPyB4n82+5TF2WftDINHGd2xOyJvE
1C0i9fAgaspPzUVI3LXMMSl1CeKeGi4iZa8Anbo8LLpCqREAEalWqMS1uDxq7YcF
ngDde5BToPETQREA/nLeY0S/agHkLdlBd+uMBmtRDj9tnww0ThYmQNbKvSgBqvX4
R/Bu9qu7gVW2mYNQpFrEI4GuT6iC9iLl4i8SdItX12ekEYhGHGSaU++5TzJbqQ==
-----END CERTIFICATE-----

View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC82MHrDl+RQHPS
G7EX80ZFbDc42tWZOrgbeJELABn3cDL2jjMza03Xpbc3JKn/or8bHXOWX2F0f8ZV
iV2w9fff9j1rUY00IwA8XzLxM0YijVF8SjTBa+CNL0yBsMXbhiGK9R/sY1we2HXM
ciJPy5MzmRrFDa5rRCn/kVMoz5w43bgq2o5ttp3YXU8QtTyGHCZHTWwLRPKk7agL
T5yWrlJmBRbSolpw+FnXbfIeX7RwnC1bs9yCMDjvEK6bWitiQNXkT3UgjdURraLh
8iY3fU91np0ET0xaxJY7l+g8aLai5XRn/ByWj6dCy08P2Y7vVlemmYemsEWwfoXE
wPKsPj/ZAgMBAAECggEBAJ1XzFpYY2/WT6njwK2/1/DHtUr9qbI9pl/dGJwdvYTY
St36pNZWtUjTnc+oEKwZoTiqVUAYwE4cl9d02Ec06Q4FUC82h3vFHdEvUHZ+zhTD
wfzYpxPxGesIWapE6tV48EGi8rI2Ju7cU2nAPq5VY5Q+IHvGZmihJoz1PGBoejU1
uG1zWYMjonVMngrotoL89lJSd2lnOq1+uXGlXH5+pOiNxrPKLn9zV+9gNXzyRDo2
ZiRQ9Bbrkuyxov6L8F1BH0hhp159YelB9fBH2L1m9CgvX0ObBFMkGDiqOCyOtXPF
PVY2errlRfnVH3Sc8fCFkjiqjfxxj652SbTKejyoegECgYEA3mXyMT3cwAHMQCwu
YKJ8mDpSYIU3pH74S7R9+3MxMJ4tYnSVyuF7dWk3e2zSIMZOydL4tYL/0vAZeFSC
ZLTYcYcQqbuA+WksgtaRVqWUaJBNamvjBIWYyecVImh7FGOhRma4dA+efsHxu79g
KIiX5cF35WLAhGWpkPInO5rMNjECgYEA2WEV3Tjdr0nPNZn9F1tiOcvA2H8tCQoQ
252K9RQiS1KfWstzfISyNeaDjdRg/rTPfzN7tVWRYaANlgecsJlo7vGA9P0ZAhvR
hiBayUgi149HmTyKUtSprDPLNmPrrIy98Gc58JILPWYJe91de7eEKnQe9V2TBRXF
ElNlh400MikCgYA5lJuINEQbUlvXoZjAXFF1+GOrqdImPNl8gFa9660osUt+2kCO
LqMQWxWKVzpwUefESWMrW6dwrclqZjb8a/Y+LoIZ7/oMmTZ1CajHjkdGa1Yf357/
ZLeSTsoiBnsXZFQ1LhNDuWeH2h8ERSBYXkU1r0mjklXV8ZxdctTFkeadgQKBgQCj
0Wt1vP4rtHcIkRTPvlmG7stVHHpm/oP3zYFD8rlphEl9ViehJitbPW3Uu8GhEcfx
t226GVMnfEPg1bm6yNHwiGXDut1W3noHF2jzmX5QbrTpgVtI0uVPVfUF90VLUwFt
I43hg14fFj99bjSeII3kpIAUL0G1qlNK3Th9b+dvCQKBgC6at6Vg6PT+U7SObRWq
vADazLSb9hACfzxg30L0XEzOH71lmI1cyjpDlaRWzPe+BcTmh/5/31BEAyv948EM
lxzaJNUm32adGfxWusTSpZ+Meqf7cWz95ndXk56DR1YPDPD9KPGcHNGgbjmQA3ji
EMxMX9XMtV7aioijPd5zfKuS
-----END PRIVATE KEY-----

View File

@@ -1,13 +1,15 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
#set -x set -x
LETSENCRYPT_IMAGE=dkregistry.xai-corp.net:5000/xaicorp/acme-certbot LETSENCRYPT_IMAGE=dkregistry.xai-corp.net:5000/xaicorp/acme-certbot
LETSENCRYPT_MOUNT=/opt/shared/letsencrypt-2-staging LETSENCRYPT_MOUNT=/opt/shared/letsencrypt-2-staging
CERT_NAME=xai-corp.net
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'} export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
export LETSENCRYPT_MOUNT export LETSENCRYPT_MOUNT
export LETSENCRYPT_IMAGE export LETSENCRYPT_IMAGE
export CERT_NAME
run() { run() {
docker-compose \ docker-compose \
@@ -22,10 +24,4 @@ run_help() {
} }
while getopts h name run $@
do
case $name in
h) run_help $@;;
*) run $@;;
esac
done

View File

@@ -1,9 +1,10 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
#set -x set -x
LETSENCRYPT_IMAGE=dkregistry.xai-corp.net:5000/xaicorp/acme-certbot LETSENCRYPT_IMAGE=dkregistry.xai-corp.net:5000/xaicorp/acme-certbot
LETSENCRYPT_MOUNT=/opt/shared/letsencrypt-2-staging LETSENCRYPT_MOUNT=/opt/shared/letsencrypt-2-staging
CERT_NAME=xai-corp.net
LOG=$(mktemp) LOG=$(mktemp)
@@ -25,11 +26,12 @@ update() {
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'} export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
export LETSENCRYPT_MOUNT export LETSENCRYPT_MOUNT
export LETSENCRYPT_IMAGE export LETSENCRYPT_IMAGE
export CERT_NAME
# shellcheck disable=SC2086 # shellcheck disable=SC2086
docker-compose \ docker-compose \
-f docker-compose.tools.yml \ -f docker-compose.tools.yml \
run renew ${OPTIONS} run --name sslproxy_renew renew ${OPTIONS}
} }
function trap_exit() { function trap_exit() {
@@ -58,12 +60,12 @@ print_usage() {
###### ######
ENVIRONMENT=dev ENVIRONMENT=dev
OPTIONS='' OPTIONS="--cert-name ${CERT_NAME}"
while getopts de: name while getopts de: name
do do
case $name in case $name in
d) d)
OPTIONS="$OPTIONS --dryrun" OPTIONS="$OPTIONS --dry-run"
;; ;;
e) e)
if [ $OPTARG == 'prod' ]; then if [ $OPTARG == 'prod' ]; then

View File

@@ -1,9 +1,9 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -e set -e
set -x #set -x
LOCAL_IMAGE=sslproxy LOCAL_IMAGE=sslproxy
#TAG=2.2.${BUILD_NUMBER:-dev} TAG=2.2.${BUILD_NUMBER:-dev}
TAG=2.1 TAG=2.1
REMOTE_IMAGE=dkregistry.xai-corp.net:5000/${LOCAL_IMAGE}:${TAG} REMOTE_IMAGE=dkregistry.xai-corp.net:5000/${LOCAL_IMAGE}:${TAG}
APP_NAME=sslproxy_app APP_NAME=sslproxy_app
@@ -18,19 +18,40 @@ export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
### ###
function deploy() { function deploy() {
docker pull "$REMOTE_IMAGE"
docker stack deploy \ docker stack deploy \
--with-registry-auth \ --with-registry-auth \
--prune \
-c docker-compose.prod.yml \ -c docker-compose.prod.yml \
sslproxy sslproxy
(cd ../ && chmod +x ./scaleout.sh && ./scaleout.sh sslproxy_app 30) docker stack ps sslproxy
sleep 2
docker service ps --filter "desired-state=Running" sslproxy_app
wait_for_completed
}
wait_for_completed() {
#states supported: "rollback_completed", "updating", "completed"
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
while [ "completed" != "$state" ]; do
echo "$state"
sleep 3
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
done
} }
function deploy_test() { function deploy_test() {
docker ps | grep sslproxy_app docker ps | grep sslproxy_app
curl -If https://git.xai-corp.net/ # assertOK https abcapi.xai-corp.net
assertOK https dkui.xai-corp.net
assertOK https git.xai-corp.net
assertOK https jenkins.xai-corp.net
assertOK https xaibox.xai-corp.net
# curl -If https://git.xai-corp.net/
# curl -If -H "Host: not.xai-corp.net" https://dkhost # curl -If -H "Host: not.xai-corp.net" https://dkhost
} }
@@ -48,11 +69,21 @@ dc() {
$@ $@
} }
function assertOK() {
proto=$1
domain=$2
set -e
echo -e "\033[94m${proto}://${domain}\033[39m"
curl --no-progress-meter -IskH "Host: ${domain}" "${proto}://dkhost.xai-corp.net" \
| tee "$LOG" | grep -P "200 OK|302 Found|403 Forbidden"
}
function trap_exit() { function trap_exit() {
code=$? code=$?
docker service ls | grep "${APP_NAME}" docker service ls | grep "${APP_NAME}"
if [ $code -gt 0 ]; then if [ $code -gt 0 ]; then
echo echo
cat "$LOG"
rm "$LOG" rm "$LOG"
echo -e "\033[31mFailed to deploy ${REMOTE_IMAGE} \033[39m" echo -e "\033[31mFailed to deploy ${REMOTE_IMAGE} \033[39m"
exit $code exit $code

View File

@@ -3,5 +3,9 @@ set -e
export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'} export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
docker exec $@ #docker exec $@
#docker network inspect ingress #docker network inspect ingress
#docker service $@
docker $@

View File

@@ -18,12 +18,26 @@ export DOCKER_HOST=${DOCKER_HOST:-'dkhost:2376'}
### ###
function rollback() { function rollback() {
docker service inspect ${APP_NAME} # docker service inspect ${APP_NAME}
docker service update --rollback "${APP_NAME}" docker service update --rollback "${APP_NAME}"
docker service scale "${APP_NAME}=2"
wait_for_completed
# docker service scale "${APP_NAME}=2"
}
wait_for_completed() {
#states supported: "rollback_completed", "updating", "completed"
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
while [ "rollback_completed" != "$state" ]; do
echo "$state"
sleep 3
state=$(docker service inspect sslproxy_app | jq -r .[0].UpdateStatus.State)
done
} }
function rollback_test() { function rollback_test() {
docker service ps --filter "desired-state=Running" sslproxy_app
docker ps | grep "${APP_NAME}" docker ps | grep "${APP_NAME}"
curl -If https://git.xai-corp.net/ curl -If https://git.xai-corp.net/

View File

@@ -22,4 +22,5 @@ services:
- jenkins_app - jenkins_app
- sslproxy_renew - sslproxy_renew
- xaibox_app - xaibox_app
- xaibox.xai-corp.net

View File

@@ -20,8 +20,8 @@ services:
- "80:80" # required for letsencrypt - "80:80" # required for letsencrypt
# healthcheck: # healthcheck:
# test: ["CMD", "wget", "--spider", "--header", "'Host: dkui.xai-corp.net'", "https://localhost/"] # test: ["CMD", "wget", "--spider", "'Host: dkui.xai-corp.net'", "https://localhost/"]
# interval: 1m30s # interval: 10s
# timeout: 5s # timeout: 5s
# retries: 3 # retries: 3
# start_period: 10s # start_period: 10s

View File

@@ -4,19 +4,16 @@ version: '3.4'
services: services:
renew: renew:
container_name: certbot
image: ${LETSENCRYPT_IMAGE} image: ${LETSENCRYPT_IMAGE}
volumes: volumes:
- ${LETSENCRYPT_MOUNT}:/etc/letsencrypt:ro - ${LETSENCRYPT_MOUNT}:/etc/letsencrypt
ports: ports:
- 80:80 - 80:80
command: entrypoint:
- certbot
- certonly - certonly
- -n
- --standalone - --standalone
- --test-cert
- --dryrun
networks:
- prod_ui
certificates: certificates:
image: ${LETSENCRYPT_IMAGE} image: ${LETSENCRYPT_IMAGE}
@@ -36,10 +33,3 @@ services:
- ${LETSENCRYPT_MOUNT}:/etc/letsencrypt - ${LETSENCRYPT_MOUNT}:/etc/letsencrypt
ports: ports:
- 80:80 - 80:80
networks:
prod_ui:
external:
name: prod_ui

View File

@@ -9,7 +9,7 @@ server {
# this is the internal Docker DNS, cache only for 30s # this is the internal Docker DNS, cache only for 30s
resolver 127.0.0.11 valid=5s; resolver 127.0.0.11 valid=5s;
set $backend http://gitea_app:10080; set $backend http://gitea_app:3000;
#set $backend http://dkhost.xai-corp.net:10080; #set $backend http://dkhost.xai-corp.net:10080;
ssl_certificate /etc/letsencrypt/live/xai-corp.net/fullchain.pem; ssl_certificate /etc/letsencrypt/live/xai-corp.net/fullchain.pem;

View File

@@ -1,12 +1,12 @@
# proxy for unsecured traffic for letsencrypt verification # proxy for unsecured traffic for letsencrypt verification
server { server {
listen 80 default_server; listen 80 default_server;
resolver 127.0.0.11 valid=30s; resolver 127.0.0.11 valid=2s;
#server_name _ #server_name _
#server_name xai-corp.net #server_name xai-corp.net
set $backend http://sslproxy_renew:80; set $backend http://sslproxy_renew;
client_max_body_size 200m; client_max_body_size 200m;

View File

@@ -19,7 +19,7 @@ server {
# this is the internal Docker DNS, cache only for 30s # this is the internal Docker DNS, cache only for 30s
resolver 127.0.0.11 valid=5s; resolver 127.0.0.11 valid=5s;
set $backend http://xaibox_app; set $backend http://xaibox.xai-corp.net:8083;
#Strict-Transport-Security: max-age=15768000 #Strict-Transport-Security: max-age=15768000
add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always; add_header Strict-Transport-Security "max-age=15552000; includeSubDomains" always;

View File

@@ -30,8 +30,9 @@ http {
server { server {
listen 80 default_server; listen 80 default_server;
listen 10080 default_server; listen 3000 default_server;
listen 8080 default_server; listen 8080 default_server;
listen 8083 default_server;
listen 9000 default_server; listen 9000 default_server;
return 418; return 418;