[#48] Add S3 Lifecycler

Signed-off-by: Pavel Pogodaev <p.pogodaev@yadro.com>
This commit is contained in:
Pavel Pogodaev 2024-11-05 14:26:32 +03:00 committed by Alex Vanin
parent 13bec4ff0d
commit fe05390238
8 changed files with 78 additions and 0 deletions

1
.env
View file

@ -6,4 +6,5 @@ AIO_VERSION=1.7.0-nightly.2
FROSTFS_CORE_TAG=0.44.0-rc.7 FROSTFS_CORE_TAG=0.44.0-rc.7
FROSTFS_HTTP_GATE_TAG=0.31.0-rc.4 FROSTFS_HTTP_GATE_TAG=0.31.0-rc.4
FROSTFS_S3_GATE_TAG=0.31.0-rc.4 FROSTFS_S3_GATE_TAG=0.31.0-rc.4
FROSTFS_S3_LIFECYCLER_TAG=0.1.3
NEOGO_TAG=0.106.0 NEOGO_TAG=0.106.0

View file

@ -5,6 +5,7 @@ ARG NEOGO_HUB_IMAGE=nspccdev/neo-go
ARG FROSTFS_CORE_TAG=dev ARG FROSTFS_CORE_TAG=dev
ARG FROSTFS_HTTP_GATE_TAG=dev ARG FROSTFS_HTTP_GATE_TAG=dev
ARG FROSTFS_S3_GATE_TAG=dev ARG FROSTFS_S3_GATE_TAG=dev
ARG FROSTFS_S3_LIFECYCLER_TAG=dev
ARG NEOGO_TAG=dev ARG NEOGO_TAG=dev
FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go
@ -14,6 +15,7 @@ FROM ${FROSTFS_FORGEJO_IMAGE}-ir:${FROSTFS_CORE_TAG} AS frostfs-ir
FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage
FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw
FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw
FROM ${FROSTFS_HUB_IMAGE}-s3-lifecycler:${FROSTFS_S3_LIFECYCLER_TAG} AS frostfs-s3-lifecycler
# Executable image # Executable image
FROM alpine AS frostfs-aio FROM alpine AS frostfs-aio
@ -35,6 +37,7 @@ COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node
COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw
COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate
COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw
COPY --from=frostfs-s3-lifecycler /bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler
COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml
COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml
@ -53,6 +56,7 @@ COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json
COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt
COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key
COPY ./s3-gw/user-wallet.json /config/user-wallet.json COPY ./s3-gw/user-wallet.json /config/user-wallet.json
COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml
COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml
COPY ./sn/wallet.json /config/wallet-sn.json COPY ./sn/wallet.json /config/wallet-sn.json
COPY ./sn/config.yaml /config/config-sn.yaml COPY ./sn/config.yaml /config/config-sn.yaml

View file

@ -5,6 +5,7 @@ ARG NEOGO_HUB_IMAGE=nspccdev/neo-go
ARG FROSTFS_CORE_TAG=dev ARG FROSTFS_CORE_TAG=dev
ARG FROSTFS_HTTP_GATE_TAG=dev ARG FROSTFS_HTTP_GATE_TAG=dev
ARG FROSTFS_S3_GATE_TAG=dev ARG FROSTFS_S3_GATE_TAG=dev
ARG FROSTFS_S3_LIFECYCLER_TAG=dev
ARG NEOGO_TAG=dev ARG NEOGO_TAG=dev
FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go FROM ${NEOGO_HUB_IMAGE}:${NEOGO_TAG} AS neo-go
@ -13,6 +14,7 @@ FROM ${FROSTFS_FORGEJO_IMAGE}-cli:${FROSTFS_CORE_TAG} AS frostfs-cli
FROM ${FROSTFS_FORGEJO_IMAGE}-ir:${FROSTFS_CORE_TAG} AS frostfs-ir FROM ${FROSTFS_FORGEJO_IMAGE}-ir:${FROSTFS_CORE_TAG} AS frostfs-ir
FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage FROM ${FROSTFS_FORGEJO_IMAGE}-storage:${FROSTFS_CORE_TAG} AS frostfs-storage
FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw FROM ${FROSTFS_HUB_IMAGE}-s3-gw:${FROSTFS_S3_GATE_TAG} AS frostfs-s3-gw
FROM ${FROSTFS_HUB_IMAGE}-s3-lifecycler:${FROSTFS_S3_LIFECYCLER_TAG} AS frostfs-s3-lifecycler
FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw FROM ${FROSTFS_HUB_IMAGE}-http-gw:${FROSTFS_HTTP_GATE_TAG} AS frostfs-http-gw
# Executable image # Executable image
@ -35,6 +37,7 @@ COPY --from=frostfs-storage /bin/frostfs-node /usr/bin/frostfs-node
COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw COPY --from=frostfs-s3-gw /bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw
COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY --from=frostfs-s3-gw /bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate
COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw COPY --from=frostfs-http-gw /bin/frostfs-http-gw /usr/bin/frostfs-http-gw
COPY --from=frostfs-s3-lifecycler /bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler
COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml
COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml
@ -53,6 +56,7 @@ COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json
COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt
COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key
COPY ./s3-gw/user-wallet.json /config/user-wallet.json COPY ./s3-gw/user-wallet.json /config/user-wallet.json
COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml
COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml
COPY ./sn/wallet.json /config/wallet-sn.json COPY ./sn/wallet.json /config/wallet-sn.json
COPY ./sn/config.yaml /config/config-sn.yaml COPY ./sn/config.yaml /config/config-sn.yaml

View file

@ -19,6 +19,7 @@ COPY ./bin/frostfs-s3-gw /usr/bin/frostfs-s3-gw
COPY ./bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate COPY ./bin/frostfs-s3-authmate /usr/bin/frostfs-s3-authmate
COPY ./bin/frostfs-http-gw /usr/bin/frostfs-http-gw COPY ./bin/frostfs-http-gw /usr/bin/frostfs-http-gw
COPY ./bin/issue-creds.sh /usr/bin/issue-creds.sh COPY ./bin/issue-creds.sh /usr/bin/issue-creds.sh
COPY ./bin/frostfs-s3-lifecycler /usr/bin/frostfs-s3-lifecycler
COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml COPY ./adm/frostfs-adm.yml /config/frostfs-adm.yml
COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml COPY ./ir/cli-cfg.yaml /config/cli-cfg-ir.yaml
@ -37,6 +38,7 @@ COPY ./s3-gw/s3-gw-wallet.json /config/s3-gw-wallet.json
COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt COPY ./s3-gw/s3-gw-tls.crt /config/s3-gw-tls.crt
COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key COPY ./s3-gw/s3-gw-tls.key /config/s3-gw-tls.key
COPY ./s3-gw/user-wallet.json /config/user-wallet.json COPY ./s3-gw/user-wallet.json /config/user-wallet.json
COPY ./s3-lifecycler/s3-lc-config.yaml /config/s3-lc-config.yaml
COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml COPY ./sn/cli-cfg.yaml /config/cli-cfg-sn.yaml
COPY ./sn/wallet.json /config/wallet-sn.json COPY ./sn/wallet.json /config/wallet-sn.json
COPY ./sn/config.yaml /config/config-sn.yaml COPY ./sn/config.yaml /config/config-sn.yaml

View file

@ -34,6 +34,7 @@ image-aio:
--build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \ --build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \
--build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \ --build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \
--build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \ --build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \
--build-arg FROSTFS_S3_LIFECYCLER_TAG=$(FROSTFS_S3_LIFECYCLER_TAG) \
--build-arg NEOGO_TAG=$(NEOGO_TAG) \ --build-arg NEOGO_TAG=$(NEOGO_TAG) \
-t $(AIO_IMAGE):$(AIO_VERSION) . -t $(AIO_IMAGE):$(AIO_VERSION) .
@ -46,6 +47,7 @@ image-aio-local:
--build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \ --build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \
--build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \ --build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \
--build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \ --build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \
--build-arg FROSTFS_S3_LIFECYCLER_TAG=$(FROSTFS_S3_LIFECYCLER_TAG) \
--build-arg NEOGO_TAG=$(NEOGO_TAG) \ --build-arg NEOGO_TAG=$(NEOGO_TAG) \
-t $(AIO_IMAGE):$(AIO_VERSION) . -t $(AIO_IMAGE):$(AIO_VERSION) .
@ -58,6 +60,7 @@ image-aio-custom:
--build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \ --build-arg FROSTFS_CORE_TAG=$(FROSTFS_CORE_TAG) \
--build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \ --build-arg FROSTFS_HTTP_GATE_TAG=$(FROSTFS_HTTP_GATE_TAG) \
--build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \ --build-arg FROSTFS_S3_GATE_TAG=$(FROSTFS_S3_GATE_TAG) \
--build-arg FROSTFS_S3_LIFECYCLER_TAG=$(FROSTFS_S3_LIFECYCLER_TAG) \
--build-arg NEOGO_TAG=$(NEOGO_TAG) \ --build-arg NEOGO_TAG=$(NEOGO_TAG) \
-t $(AIO_IMAGE):$(AIO_VERSION) . -t $(AIO_IMAGE):$(AIO_VERSION) .

View file

@ -11,6 +11,7 @@ files for:
- frostfs-s3-gw - frostfs-s3-gw
- frostfs-s3-authmate - frostfs-s3-authmate
- frostfs-http-gw - frostfs-http-gw
- frostfs-s3-lifecycler
Entrypoint script starts blockchain, inner ring, storage, s3, and http gateway Entrypoint script starts blockchain, inner ring, storage, s3, and http gateway
services and configures it in the initial start. services and configures it in the initial start.
@ -117,6 +118,7 @@ Put all the needed pre-built binaries to the `frostfs-aio/bin/`:
- frostfs-s3-gw - frostfs-s3-gw
- frostfs-s3-authmate - frostfs-s3-authmate
- frostfs-http-gw - frostfs-http-gw
- frostfs-s3-lifecycler
Make sure they all have the `x` right for the execution enabled. Make sure they all have the `x` right for the execution enabled.
Build frostfs-aio image using pre-built local binaries for all the services. Build frostfs-aio image using pre-built local binaries for all the services.

View file

@ -66,6 +66,7 @@ runServices() {
done done
/usr/bin/frostfs-s3-gw --config /config/s3-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-s3-gw & /usr/bin/frostfs-s3-gw --config /config/s3-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-s3-gw &
/usr/bin/frostfs-s3-lifecycler --config /config/s3-lc-config.yaml |& tee -a ${LOG_DIR}/frostfs-s3-lifecycler &
/usr/bin/frostfs-http-gw --config /config/http-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-http-gw & /usr/bin/frostfs-http-gw --config /config/http-gw-config.yaml |& tee -a ${LOG_DIR}/frostfs-http-gw &
} }

View file

@ -0,0 +1,61 @@
# Wallet address, path to the wallet must be set as cli parameter or environment variable
wallet:
path: /wallets/wallet1.json # Path to wallet
address: NhCHDEtGgSph1v6PmjFC1gtzJWNKtNSadk # Account address. If omitted default one will be used.
passphrase: "" # Passphrase to decrypt wallet. If you're using a wallet without a password, place '' here.
logger:
level: debug # Log level.
destination: stdout # Logging destination.
sampling:
enabled: false
initial: 100
thereafter: 100
interval: 1s
morph:
rpc_endpoint:
- address: ws://localhost:30333/ws
priority: 1
reconnect_clients_interval: 30s
dial_timeout: 5s
contract:
netmap: netmap.frostfs
frostfsid: frostfsid.frostfs
container: container.frostfs
credential:
use: wallets
source:
wallets:
- path: /wallets/wallet1.json
address: NhCHDEtGgSph1v6PmjFC1gtzJWNKtNSadk
passphrase: ""
- path: /wallets/wallet2.json
address: NivQRezLwGP8xFPr87DD5XaYGUKK3BMsTa
passphrase: ""
- path: /wallets/wallet3.json
address: NR8qvrREk1eCeQJce9zBaDyPE3PHGZfT6t
passphrase: ""
- path: /config/user-wallet.json
address: NWeByJPgNC97F83hTUnSbnZSBKaFvk5HNw
passphrase: ""
lifecycle:
job_fetcher_buffer: 1000
executor_pool_size: 100
frostfs:
stream_timeout: 10s
connect_timeout: 10s
healthcheck_timeout: 15s
rebalance_interval: 60s
pool_error_threshold: 100
tree_pool_max_attempts: 4
peers:
0:
address: localhost:8080
priority: 1
weight: 1