Commit 7ba806d6 authored by Pedro Eduardo Trujillo's avatar Pedro Eduardo Trujillo
Browse files

Reorganiza deploy, adapta dev a Swarm y limita

parent fa1c46c4
Loading
Loading
Loading
Loading
+34 −34
Original line number Diff line number Diff line
image: docker:stable

stages:
  - package
  - test-package
  - deploy

services:
  - docker:dind

variables:
  DOCKER_DRIVER: overlay2

docker-build-commit-non-master-branches:
  stage: package
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
    PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/elasticsearch-xpack
    PARENT_IMAGE_TAG: latest
  services:
    - docker:dind
  only:
    - branches
  except:
@@ -25,13 +29,9 @@ docker-build-commit-non-master-branches:

docker-build-commit-master-branch:
  stage: package
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
    PARENT_IMAGE_NAME: registry.gitlab.com/redmic-project/docker/elasticsearch-xpack
    PARENT_IMAGE_TAG: latest
  services:
    - docker:dind
  only:
    - master
  script:
@@ -43,11 +43,6 @@ docker-build-commit-master-branch:

docker-tag-already-built-image:
  stage: package
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
  services:
    - docker:dind
  only:
    - tags
  script:
@@ -57,12 +52,7 @@ docker-tag-already-built-image:

container-scanning:
  stage: test-package
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
  allow_failure: true
  services:
    - docker:stable-dind
  only:
    - branches
  script:
@@ -85,19 +75,17 @@ deploy-dev:
  stage: deploy
  image: registry.gitlab.com/redmic-project/docker/docker-deploy:latest
  variables:
    DOCKER_DRIVER: overlay2
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    SERVICE: ${CI_PROJECT_NAME}-1
    STACK: elastic
    SERVICES_TO_CHECK: elastic_${CI_PROJECT_NAME}-1
    IMAGE_NAME: ${CI_REGISTRY_IMAGE}
    IMAGE_TAG: ${CI_COMMIT_SHA}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    COMPOSE_FILE: docker-compose.${CI_PROJECT_NAME}-1.tmpl.yml:docker-compose.${CI_PROJECT_NAME}-1.dev.yml
    OLD_ELASTIC_ADMIN_PASS: ${DEV_OLD_ELASTIC_ADMIN_PASS}
    ELASTIC_ADMIN_PASS: ${DEV_ELASTIC_ADMIN_PASS}
    ELASTIC_USER: ${DEV_ELASTIC_USER}
    ELASTIC_USER_PASS: ${DEV_ELASTIC_USER_PASS}
    ELASTIC_USER_ROLE: ${DEV_ELASTIC_USER_ROLE}
  services:
    - docker:dind
  script:
    - create-nets.sh elastic-net
    - >
@@ -114,19 +102,17 @@ deploy-supporting-branch:
  stage: deploy
  image: registry.gitlab.com/redmic-project/docker/docker-deploy
  variables:
    DOCKER_DRIVER: overlay2
    SSH_REMOTE: ${DEV_SSH_REMOTE}
    SERVICE: ${CI_PROJECT_NAME}-1
    STACK: elastic
    SERVICES_TO_CHECK: elastic_${CI_PROJECT_NAME}-1
    IMAGE_NAME: ${CI_REGISTRY_IMAGE}
    IMAGE_TAG: ${CI_COMMIT_SHA}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.dev.yml
    COMPOSE_FILE: docker-compose.${CI_PROJECT_NAME}-1.tmpl.yml:docker-compose.${CI_PROJECT_NAME}-1.dev.yml
    OLD_ELASTIC_ADMIN_PASS: ${DEV_OLD_ELASTIC_ADMIN_PASS}
    ELASTIC_ADMIN_PASS: ${DEV_ELASTIC_ADMIN_PASS}
    ELASTIC_USER: ${DEV_ELASTIC_USER}
    ELASTIC_USER_PASS: ${DEV_ELASTIC_USER_PASS}
    ELASTIC_USER_ROLE: ${DEV_ELASTIC_USER_ROLE}
  services:
    - docker:dind
  script:
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
@@ -145,24 +131,38 @@ deploy-pro:
  stage: deploy
  image: registry.gitlab.com/redmic-project/docker/docker-deploy:latest
  variables:
    DOCKER_DRIVER: overlay2
    STATUS_CHECK_DELAY: '90'
    STATUS_CHECK_INTERVAL: '10'
    SSH_REMOTE: ${PRO_SSH_REMOTE}
    SERVICE: elastic
    SERVICES_TO_CHECK: elastic_${CI_PROJECT_NAME}-1 elastic_${CI_PROJECT_NAME}-2 elastic_${CI_PROJECT_NAME}-3
    STACK: elastic
    IMAGE_NAME: ${CI_REGISTRY_IMAGE}
    IMAGE_TAG: ${CI_COMMIT_SHA}
    COMPOSE_FILE: docker-compose.tmpl.yml:docker-compose.prod.yml
    OLD_ELASTIC_ADMIN_PASS: ${PRO_OLD_ELASTIC_ADMIN_PASS}
    ELASTIC_ADMIN_PASS: ${PRO_ELASTIC_ADMIN_PASS}
    ELASTIC_USER: ${PRO_ELASTIC_USER}
    ELASTIC_USER_PASS: ${PRO_ELASTIC_USER_PASS}
    ELASTIC_USER_ROLE: ${PRO_ELASTIC_USER_ROLE}
  services:
    - docker:dind
  script:
    - create-nets.sh elastic-net
    - >
      export SERVICES_TO_CHECK=elastic_${CI_PROJECT_NAME}-1
        COMPOSE_FILE=docker-compose.${CI_PROJECT_NAME}-1.tmpl.yml:docker-compose.${CI_PROJECT_NAME}-1.prod.yml
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      AWS_REGION=${AWS_REGION} OLD_ELASTIC_ADMIN_PASS=${OLD_ELASTIC_ADMIN_PASS}
      ELASTIC_ADMIN_PASS=${ELASTIC_ADMIN_PASS} ELASTIC_USER=${ELASTIC_USER}
      ELASTIC_USER_PASS=${ELASTIC_USER_PASS} ELASTIC_USER_ROLE=${ELASTIC_USER_ROLE}
    - >
      export SERVICES_TO_CHECK=elastic_${CI_PROJECT_NAME}-2
        COMPOSE_FILE=docker-compose.${CI_PROJECT_NAME}-2.tmpl.yml:docker-compose.${CI_PROJECT_NAME}-2.prod.yml
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      AWS_REGION=${AWS_REGION} OLD_ELASTIC_ADMIN_PASS=${OLD_ELASTIC_ADMIN_PASS}
      ELASTIC_ADMIN_PASS=${ELASTIC_ADMIN_PASS} ELASTIC_USER=${ELASTIC_USER}
      ELASTIC_USER_PASS=${ELASTIC_USER_PASS} ELASTIC_USER_ROLE=${ELASTIC_USER_ROLE}
    - >
      export SERVICES_TO_CHECK=elastic_${CI_PROJECT_NAME}-3
        COMPOSE_FILE=docker-compose.${CI_PROJECT_NAME}-3.tmpl.yml:docker-compose.${CI_PROJECT_NAME}-3.prod.yml
    - >
      deploy.sh IMAGE_NAME=${IMAGE_NAME} IMAGE_TAG=${IMAGE_TAG} COMPOSE_FILE=${COMPOSE_FILE}
      AWS_REGION=${AWS_REGION} OLD_ELASTIC_ADMIN_PASS=${OLD_ELASTIC_ADMIN_PASS}
+0 −0

File moved.

+34 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  elasticsearch-1:
    environment:
      - ES_JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.policy=file:///usr/share/elasticsearch/config/grovy-classes_whitelist.policy
      - ES_CLUSTER_NAME=elasticsearch_dev
      - ES_NODE_NAME=node-1
      - ES_DISCOVERY_ZEN_MINIMUM_MASTER_NODES=1
      - ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS=elasticsearch-1
    ports:
      - target: ${PORT1}
        published: ${PORT1}
        mode: host
      - target: ${PORT2}
        published: ${PORT2}
        mode: host
    deploy:
      mode: replicated
      replicas: 1
      restart_policy:
        condition: on-failure
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '1'
          memory: 1G
        reservations:
          memory: 820M

volumes:
  elasticsearch-vol:
    name: elasticsearch-vol
+36 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ version: '3.5'
services:
  elasticsearch-1:
    environment:
      - ES_JAVA_OPTS=-Xms1g -Xmx1g -Djava.security.policy=file:///usr/share/elasticsearch/config/grovy-classes_whitelist.policy
      - ES_CLUSTER_NAME=redmic
      - ES_NODE_NAME={{.Service.Name}}
      - ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS=['elasticsearch-1', 'elasticsearch-2', 'elasticsearch-3']
@@ -18,64 +19,18 @@ services:
        condition: on-failure
        delay: 1m
        window: 3m

  elasticsearch-2:
    environment:
      - ES_CLUSTER_NAME=redmic
      - ES_NODE_NAME={{.Service.Name}}
      - ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS=['elasticsearch-1', 'elasticsearch-2', 'elasticsearch-3']
      - USER_MANAGEMENT_DELAY=200
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == worker
          - engine.labels.availability_zone == ${AWS_REGION}b
      restart_policy:
        condition: on-failure
        delay: 1m
        window: 3m

  elasticsearch-3:
    environment:
      - ES_CLUSTER_NAME=redmic
      - ES_NODE_NAME={{.Service.Name}}
      - ES_DISCOVERY_ZEN_PING_UNICAST_HOSTS=['elasticsearch-1', 'elasticsearch-2', 'elasticsearch-3']
      - USER_MANAGEMENT_DELAY=200
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints:
          - node.role == worker
          - engine.labels.availability_zone == ${AWS_REGION}c
      restart_policy:
        condition: on-failure
        delay: 1m
        window: 3m
      resources:
        limits:
          cpus: '1'
          memory: 2G
        reservations:
          memory: 1639M

volumes:
  elasticsearch-1-vol:
  elasticsearch-vol:
    name: "elasticsearch-1-vol"
    driver: "cloudstor:aws"
    driver_opts:
      backing: relocatable
      size: 25
      ebstype: gp2

  elasticsearch-2-vol:
    name: "elasticsearch-2-vol"
    driver: "cloudstor:aws"
    driver_opts:
      backing: relocatable
      size: 25
      ebstype: gp2

  elasticsearch-3-vol:
    name: "elasticsearch-3-vol"
    driver: "cloudstor:aws"
    driver_opts:
      backing: relocatable
      size: 25
      ebstype: gp2
+30 −0
Original line number Diff line number Diff line
version: '3.5'

services:
  elasticsearch-1:
    image: ${IMAGE_NAME}:${IMAGE_TAG:-latest}
    networks:
      elastic-net:
        aliases:
          - es-1
    volumes:
      - elasticsearch-vol:/usr/share/elasticsearch/data
    environment:
      - ES_BOOTSTRAP_MEMORY_LOCK=true
      - ES_PLUGINS
      - OLD_ELASTIC_ADMIN_PASS
      - ELASTIC_ADMIN_PASS
      - ELASTIC_USER
      - ELASTIC_USER_PASS
      - ELASTIC_USER_ROLE
    healthcheck:
      test: >
        status=$$(curl --write-out %{http_code} --silent --output /dev/null -u "${ELASTIC_USER}:${ELASTIC_USER_PASS}" localhost:${PORT1}/_cluster/health);
        [ "$${status}" -eq "200" ] || [ "$${status}" -eq "401" ]
      timeout: 10s
      retries: 3
      start_period: 2m

networks:
  elastic-net:
    external: true
Loading