Commit 12111d55 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Merge branch 'dev' into 'master'

introduce volúmenes nfs y generación de parámetros DH

See merge request redmic-project/gateway/certificates-manager!15
parents 2bbfd498 98d71c87
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ variables:
.deploy:
  variables:
    STACK: ${PROJECT_PARENT_NAME}
    SERVICES_TO_CHECK: ${PROJECT_PARENT_NAME}_${CI_PROJECT_NAME}

.scheduled-run:
  variables:
+7 −4
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@ Las siguientes ejecuciones en las que no sea necesario renovar todavía, simplem

La programación de renovación se realiza en GitLab, con una tarea de CI/CD que se ejecuta semanalmente. Es importante haber desplegado antes el servicio, para luego poder relanzarlo todas las semanas.

También genera los parámetros Diffie-Hellman cuando no los tiene disponibles, para dejarlos a disposición del servidor web. Hay que tener paciencia porque es un proceso pesado.

## Uso

Requiere la definición de las siguientes variables de entorno:
@@ -27,12 +29,13 @@ También se pueden definir opcionalmente las siguientes variables de entorno:

| Variable | Descripción | Valor por defecto |
|:-:|:-:|:-:|
| SERVER_SERVICE | Nombre del servicio (*Docker Swarm*, `<stack>_<service-name>`) del servidor web. | `nginx-proxy_nginx-proxy` |
| DH_NUMBITS | Complejidad de los parámetros DH generados para el servidor web. Reducir el tamaño acelerará los cálculos. | `4096` |
| SERVER_SERVICE | Nombre del servicio (*Docker Swarm*, `<stack>_<service-name>`) del servidor web. | `gateway_nginx-proxy-https` |
| PUSHGATEWAY_HOST | Dirección del servicio Pushgateway al que se enviarán las métricas Prometheus de monitorización. | `pushgateway:9091` |
| DHPARAMS_VOL_NAME | Nombre del volumen Docker donde se almacenan los parámetros DH generados, si no existen ya allí (se montará sobre `/dhparams`). | `dhparams-vol` |
| CERTBOT_CONFIG_VOL_NAME | Nombre del volumen Docker donde se almacena la configuración de certbot y los certificados (se montará sobre `/etc/letsencrypt`). | `certbot-config-vol` |
| CERTBOT_WORK_VOL_NAME | Nombre del volumen Docker donde se almacenan ficheros internos de certbot (se montará sobre `/var/lib/letsencrypt`). | `certbot-work-vol` |
| CERTBOT_LOGS_VOL_NAME | Nombre del volumen donde se guardan los logs de certbot, por si hace falta consultarlos (se montará sobre `/var/log/letsencrypt`). | `certbot-logs-vol` |
| ACME_VOL_NAME | Nombre del volumen donde almacenar los ficheros usados para verificar (responder a los *challenges*) el dominio a certificar. También debe ser montado por el servidor web, para que exponga los ficheros en la ruta `/.well-known/acme-challenge/`. No será necesario si la validación se realiza mediante registros DNS (aún no disponible). | `acme-vol` |
| PUSHGATEWAY_HOST | Dirección del servicio Pushgateway al que se enviarán las métricas Prometheus de monitorización. | `pushgateway:9091` |
| ACME_VOL_NAME | Nombre del volumen Docker donde almacenar los ficheros usados para verificar (responder a los *challenges*) el dominio a certificar. También debe ser montado por el servidor web, para que exponga los ficheros en la ruta `/.well-known/acme-challenge/`. No será necesario si la validación se realiza mediante registros DNS (aún no disponible). | `acme-vol` |

## Métricas

+5 −2
Original line number Diff line number Diff line
DH_NUMBITS=4096
SERVER_SERVICE=gateway_nginx-proxy-https
PUSHGATEWAY_HOST=pushgateway:9091

DHPARAMS_VOL_NAME=dhparams-vol
CERTBOT_CONFIG_VOL_NAME=certbot-config-vol
CERTBOT_WORK_VOL_NAME=certbot-work-vol
CERTBOT_LOGS_VOL_NAME=certbot-logs-vol
ACME_VOL_NAME=acme-vol
PUSHGATEWAY_HOST=pushgateway:9091

AWS_REGION=eu-west-1
+16 −7
Original line number Diff line number Diff line
version: '3.5'

services:
  certificates-manager:
    deploy:
      placement:
        constraints:
          - node.hostname == ${PLACEMENT_CONSTRAINTS_NODE_HOSTNAME:-hostname}
          - node.labels.${PLACEMENT_CONSTRAINTS_NODE_LABELS_NAME:-gateway} == ${PLACEMENT_CONSTRAINTS_NODE_LABELS_VALUE:-true}
volumes:
  dhparams-vol:
    name: ${DHPARAMS_VOL_NAME}
    driver: local
    driver_opts:
      type: ${DHPARAMS_VOL_TYPE:-nfs4}
      o: addr=${DHPARAMS_VOL_ADDR:-127.0.0.1},${DHPARAMS_VOL_OPTIONS:-rw,nolock,noatime,tcp,rsize=8192,wsize=8192,timeo=14}
      device: ${DHPARAMS_VOL_DEVICE:-:/dhparams-vol/}

  config-vol:
    name: ${CERTBOT_CONFIG_VOL_NAME}
    driver: local
    driver_opts:
      type: ${CERTBOT_CONFIG_VOL_TYPE:-nfs4}
      o: addr=${CERTBOT_CONFIG_VOL_ADDR:-127.0.0.1},${CERTBOT_CONFIG_VOL_OPTIONS:-rw,nolock,noatime,tcp,rsize=8192,wsize=8192,timeo=14}
      device: ${CERTBOT_CONFIG_VOL_DEVICE:-:/certbot-config-vol/}
+7 −0
Original line number Diff line number Diff line
@@ -6,3 +6,10 @@ services:
      placement:
        constraints:
          - engine.labels.availability_zone == ${AWS_REGION}a

volumes:
  dhparams-vol:
    name: ${DHPARAMS_VOL_NAME}

  config-vol:
    name: ${CERTBOT_CONFIG_VOL_NAME}
Loading