Browse Source

learning CI/CD for real

master
Yutsuo 7 years ago
parent
commit
8a669fb537
  1. 21
      .gitlab-ci.yml
  2. 40
      ambiente_git_labbs.txt
  3. 19
      docker-compose.yml
  4. 6
      prometheus.yml

21
.gitlab-ci.yml

@ -0,0 +1,21 @@
stages:
- build
- deploy
build_job:
stage: build
script:
- /sandman/build.sh
except:
- deploy
tags:
- sandman-build
deploy_job:
stage: deploy
script:
- /sandman/deploy.sh
only:
- deploy
tags:
- sandman-deploy

40
ambiente_git_labbs.txt

@ -15,25 +15,17 @@ Onde nomedogrupo no caso de projetos pessoais, será o nome do usuário. E nomed
Recomendamos por motivos de segurança, caso seu projeto utilize algum banco de dados, que seja criada uma rede específica para comunicação do banco de dados com a aplicação que fará uso dela. Dessa forma, utilize a seguinte configuração para criação e utilização dessa rede:
networks:
app-bd-net:
driver: overlay
traefik-net:
external:
name: traefik-net
No swarm já temos criada a rede default chamada traefik-net. Se quer somente colocar um projeto simples via docker-compose basta adicionar as linhas a seguir ao final do seu docker-compose.yml:
networks:
default:
external:
name: traefik-net
Senão, se for utilizar um wordpress por exemplo que utiliza um banco de dados, para utilizar a segurança mencionada mais acima, utilize a rede criada (app-bd-net) para o service do banco de dados e do wordpress e a rede Traefik-net somente para o wordpress. Dessa forma somente o wordpress terá contato com a rede externa traefik-net e o banco de dados somente estará acessível pela rede app-bd-net a qual está só ele e o wordpress.
@ -43,15 +35,10 @@ Senão, se for utilizar um wordpress por exemplo que utiliza um banco de dados,
Algumas informações aqui são necessárias para que o traefik(gerenciador de borda) reconheça e aponte corretamente as requisições para seu container. São elas:
deploy:
labels:
- traefik.docker.network=traefik-net
- traefik.frontend.entryPoints=internal_http,internal_https,external_http,external_https
- traefik.frontend.rule=Host:seudominio.labbs.com.br
- traefik.port=8080(Se tomcat)80(se nginx)
.gitlab-ci.yml
@ -71,57 +58,30 @@ Esses parâmetros serão ignorados no modo swarm com docker-compose versão 3 po
Esse arquivo não é obrigatório no caso de o projeto ser somente de deploy, porém, oferece algumas possibilidades de configurações adicionais ao projeto: port, subdomain, edges, deploy_mode, desired instances, dentre outros.
-#internal port of container, for traefik connection
-#default: 80
port: 80
-#override subdomain in host of container, i.e.: foo.labbs.com.br
-#default: Inverted git repository path
subdomain: foo
-#override host of container
-#default: $SUBDOMAIN.labbs.com.br
host: test.labbs.com.br
-#enable redirect ssl
-#default: true
ssl: true
-#create redirections on edges
-#default:
redirects: teste.labbs.com.br,teste2.labbs.com.br
-#define edges of container
-#default: internal
edges: internal,external(Acesso via internet)
-#define desired instances number of container
-#default: 1
desired_instances: 1
-#define mode of deploy of service. (service or stack)
-#default: service
deploy_mode: stack
-#define name of stack
-#warning: [usage mode in deprecation] old usage of variable enabled stack deploy mode
-#default:
stack: stacktest

19
docker-compose.yml

@ -9,6 +9,7 @@ services:
- 8000:8000
networks:
- network_1
- traefik-net
app:
container_name: app
depends_on:
@ -19,6 +20,7 @@ services:
networks:
- network_1
- network_2
- labbs_overlay
mongo:
container_name: mongo
build: ./mongo
@ -28,6 +30,7 @@ services:
MONGO_INITDB_ROOT_PASSWORD: ruth
networks:
- network_2
- labbs_overlay
ports:
- 27017:27017
prometheus:
@ -37,6 +40,7 @@ services:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
networks:
- network_2
- labbs_overlay
ports:
- 9090:9090
grafana:
@ -51,8 +55,13 @@ networks:
driver: bridge
network_2:
driver: bridge
default:
ipam:
driver: default
config:
- subnet: 192.168.5.0/24
labbs_overlay:
driver: overlay
traefik-net:
external:
name: traefik-net
# default:
# ipam:
# driver: default
# config:
# - subnet: 192.168.5.0/24

6
prometheus.yml

@ -6,10 +6,10 @@ scrape_configs:
static_configs:
- targets: ['app:3001'] # mysqld_exporter address and port
labels:
alias: 'app1-02' # alias name given to this instance
- job_name: 'app1' # Job name
alias: 'app1-01' # alias name given to this instance
- job_name: 'app1-02' # Job name
metrics_path: /metrics2
static_configs:
- targets: ['app:3001'] # mysqld_exporter address and port
labels:
alias: 'app1' # alias name given to this instance
alias: 'app1-02' # alias name given to this instance
Loading…
Cancel
Save