DTR Backend with S3-compatible Storage (Minio)
預設情況下,推送到 DTR 保存的所有 images 都是在 DTR 當前主機的磁碟內。如果這個 DTR 出現任何嚴重問題無法運作,則外界無法對此 DTR 節點做存取 images。
爲了使得 DTR 在叢集中保持高可用性的狀態,必須設定更多的 DTR replicas,同時必須爲所有的 DTR 節點設定後端存儲。
我們可以利用 minio 作爲 DTR 後端存儲機制。minio 是一個分散式,容器化,同時兼容 S3 API 的資料庫。在爲 DTR 設定 minio 之前,下面先說明如何佈署 minio 在容器平台上。
建立 secrets 保存密碼存息,這是一個良好的實踐。
# 以 docker swarm 保管密碼訊息
$ echo "accesskey-example" | docker secret create access_key -
$ echo "secretkey-example" | docker secret create secret_key -
編寫如下 docker-compose.yml 文件
# docker-compose.yml
version: '3.3'
services:
minio1:
image: minio/minio:edge
hostname: minio1
environment:
MINIO_REGION: 'my_region'
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
placement:
constraints:
- node.labels.minio1==true
volumes:
- minio1-data:/export
ports:
- "9001:9000"
networks:
- minio_distributed
command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export
secrets:
- secret_key
- access_key
minio2:
image: minio/minio:edge
hostname: minio2
environment:
MINIO_REGION: 'my_region'
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
placement:
constraints:
- node.labels.minio2==true
volumes:
- minio2-data:/export
ports:
- "9002:9000"
networks:
- minio_distributed
command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export
secrets:
- secret_key
- access_key
minio3:
image: minio/minio:edge
hostname: minio3
environment:
MINIO_REGION: 'my_region'
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
placement:
constraints:
- node.labels.minio3==true
volumes:
- minio3-data:/export
ports:
- "9003:9000"
networks:
- minio_distributed
command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export
secrets:
- secret_key
- access_key
minio4:
image: minio/minio:edge
hostname: minio4
environment:
MINIO_REGION: 'my_region'
deploy:
restart_policy:
delay: 10s
max_attempts: 10
window: 60s
placement:
constraints:
- node.labels.minio4==true
volumes:
- minio4-data:/export
ports:
- "9004:9000"
networks:
- minio_distributed
command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export
secrets:
- secret_key
- access_key
volumes:
minio1-data:
minio2-data:
minio3-data:
minio4-data:
networks:
minio_distributed:
driver: overlay
secrets:
secret_key:
external: true
access_key:
external: true
完成上述文件後,通過命令
docker stack deploy -c docker-compose.yml minio-backend
將 minio 布署在平臺上。透過瀏覽器打開 http://[node-ip]:9004 即可看到 minio 登入畫面。
登入的帳號密碼就是上述用 secrets 的內容。
接下來就是設定 DTR 後端調用 S3 minio.
留言
張貼留言