198 lines
5.5 KiB
YAML
198 lines
5.5 KiB
YAML
configs:
|
|
minio_wait_sh:
|
|
file: ./minio-wait.sh
|
|
|
|
services:
|
|
vault-agent-s3:
|
|
image: hashicorp/vault:latest
|
|
command: >
|
|
sh -lc 'vault agent -config=/etc/vault/agent.hcl'
|
|
cap_add: ["IPC_LOCK"]
|
|
environment:
|
|
VAULT_ADDR: "http://vault:8200"
|
|
secrets:
|
|
- source: s3_vault_role_id
|
|
target: /vault/secrets/role_id
|
|
- source: s3_vault_secret_id
|
|
target: /vault/secrets/secret_id
|
|
volumes:
|
|
- ./vault:/etc/vault:ro
|
|
- vault-secrets:/vault/secrets:rw
|
|
networks: [cicd]
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "test -s /vault/secrets/MINIO_ROOT_USER -a -s /vault/secrets/MINIO_ROOT_PASSWORD"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 10
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
|
|
|
|
minio1:
|
|
image: quay.io/minio/minio:latest
|
|
hostname: minio1
|
|
entrypoint: ["/usr/local/bin/minio-wait"]
|
|
command:
|
|
- server
|
|
- --console-address
|
|
- :9001
|
|
- http://minio1:9000/data
|
|
- http://minio2:9000/data
|
|
- http://minio3:9000/data
|
|
- http://minio4:9000/data
|
|
configs:
|
|
- source: minio_wait_sh
|
|
target: /usr/local/bin/minio-wait
|
|
mode: 0755
|
|
environment:
|
|
MINIO_ROOT_USER_FILE: /vault/secrets/MINIO_ROOT_USER
|
|
MINIO_ROOT_PASSWORD_FILE: /vault/secrets/MINIO_ROOT_PASSWORD
|
|
MINIO_SERVER_URL: https://s3.sendico.io
|
|
MINIO_BROWSER_REDIRECT_URL: https://minio.sendico.io
|
|
volumes:
|
|
- minio1_data:/data
|
|
- vault-secrets:/vault/secrets:ro
|
|
networks: [cicd]
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=cicd"
|
|
|
|
# services (чётко укажем порты)
|
|
- "traefik.http.services.s3-minio-api.loadbalancer.server.port=9000"
|
|
- "traefik.http.services.s3-minio-console.loadbalancer.server.port=9001"
|
|
|
|
# router для API
|
|
- "traefik.http.routers.s3-minio-api.rule=Host(`s3.sendico.io`)"
|
|
- "traefik.http.routers.s3-minio-api.entrypoints=websecure"
|
|
- "traefik.http.routers.s3-minio-api.tls=true"
|
|
- "traefik.http.routers.s3-minio-api.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.s3-minio-api.service=s3-minio-api"
|
|
|
|
# router для Console
|
|
- "traefik.http.routers.s3-minio-console.rule=Host(`minio.sendico.io`)"
|
|
- "traefik.http.routers.s3-minio-console.entrypoints=websecure"
|
|
- "traefik.http.routers.s3-minio-console.tls=true"
|
|
- "traefik.http.routers.s3-minio-console.tls.certresolver=letsencrypt"
|
|
- "traefik.http.routers.s3-minio-console.service=s3-minio-console"
|
|
|
|
|
|
minio2:
|
|
image: quay.io/minio/minio:latest
|
|
hostname: minio2
|
|
entrypoint: ["/usr/local/bin/minio-wait"]
|
|
command:
|
|
- server
|
|
- --console-address
|
|
- :9001
|
|
- http://minio1:9000/data
|
|
- http://minio2:9000/data
|
|
- http://minio3:9000/data
|
|
- http://minio4:9000/data
|
|
configs:
|
|
- source: minio_wait_sh
|
|
target: /usr/local/bin/minio-wait
|
|
mode: 0755
|
|
environment:
|
|
MINIO_ROOT_USER_FILE: /vault/secrets/MINIO_ROOT_USER
|
|
MINIO_ROOT_PASSWORD_FILE: /vault/secrets/MINIO_ROOT_PASSWORD
|
|
MINIO_SERVER_URL: https://s3.sendico.io
|
|
MINIO_BROWSER_REDIRECT_URL: https://minio.sendico.io
|
|
volumes:
|
|
- minio2_data:/data
|
|
- vault-secrets:/vault/secrets:ro
|
|
networks: [cicd]
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
labels:
|
|
- "traefik.enable=false"
|
|
|
|
minio3:
|
|
image: quay.io/minio/minio:latest
|
|
hostname: minio3
|
|
entrypoint: ["/usr/local/bin/minio-wait"]
|
|
command:
|
|
- server
|
|
- --console-address
|
|
- :9001
|
|
- http://minio1:9000/data
|
|
- http://minio2:9000/data
|
|
- http://minio3:9000/data
|
|
- http://minio4:9000/data
|
|
configs:
|
|
- source: minio_wait_sh
|
|
target: /usr/local/bin/minio-wait
|
|
mode: 0755
|
|
environment:
|
|
MINIO_ROOT_USER_FILE: /vault/secrets/MINIO_ROOT_USER
|
|
MINIO_ROOT_PASSWORD_FILE: /vault/secrets/MINIO_ROOT_PASSWORD
|
|
MINIO_SERVER_URL: https://s3.sendico.io
|
|
MINIO_BROWSER_REDIRECT_URL: https://minio.sendico.io
|
|
volumes:
|
|
- minio3_data:/data
|
|
- vault-secrets:/vault/secrets:ro
|
|
networks:
|
|
- cicd
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
labels:
|
|
- "traefik.enable=false"
|
|
|
|
minio4:
|
|
image: quay.io/minio/minio:latest
|
|
hostname: minio4
|
|
entrypoint: ["/usr/local/bin/minio-wait"]
|
|
command:
|
|
- server
|
|
- --console-address
|
|
- :9001
|
|
- http://minio1:9000/data
|
|
- http://minio2:9000/data
|
|
- http://minio3:9000/data
|
|
- http://minio4:9000/data
|
|
configs:
|
|
- source: minio_wait_sh
|
|
target: /usr/local/bin/minio-wait
|
|
mode: 0755
|
|
environment:
|
|
MINIO_ROOT_USER_FILE: /vault/secrets/MINIO_ROOT_USER
|
|
MINIO_ROOT_PASSWORD_FILE: /vault/secrets/MINIO_ROOT_PASSWORD
|
|
MINIO_SERVER_URL: https://s3.sendico.io
|
|
MINIO_BROWSER_REDIRECT_URL: https://minio.sendico.io
|
|
volumes:
|
|
- minio4_data:/data
|
|
- vault-secrets:/vault/secrets:ro
|
|
networks:
|
|
- cicd
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
labels:
|
|
- "traefik.enable=false"
|
|
|
|
networks:
|
|
cicd:
|
|
external: true
|
|
|
|
volumes:
|
|
vault-secrets:
|
|
driver: local
|
|
driver_opts:
|
|
type: tmpfs
|
|
device: tmpfs
|
|
o: size=16m,uid=1000,gid=1000,mode=0750
|
|
minio1_data:
|
|
minio2_data:
|
|
minio3_data:
|
|
minio4_data:
|
|
|
|
secrets:
|
|
s3_vault_role_id:
|
|
external: true
|
|
s3_vault_secret_id:
|
|
external: true |