Today we are running into OOM exceptions with normalization. Normalization itself also inherits the destination's resource requirements. After work to bring destination memory usage down, this is no longer ideal, since most destinations use less memory than normalization needs. This PR makes it possible to specify the general resource the normalization pod is provided via env vars. Notes: - Add env vars. Default to the various job main container resources if these are not set. - Instead of using the destination's memory, use the normalization specify env vars.
187 lines
7.9 KiB
YAML
187 lines
7.9 KiB
YAML
version: "3.7"
|
|
#https://github.com/compose-spec/compose-spec/blob/master/spec.md#using-extensions-as-fragments
|
|
x-logging: &default-logging
|
|
options:
|
|
max-size: "100m"
|
|
max-file: "5"
|
|
driver: json-file
|
|
services:
|
|
# hook in case we need to add init behavior
|
|
# every root service (no depends_on) should depend on init
|
|
init:
|
|
image: airbyte/init:${VERSION}
|
|
logging: *default-logging
|
|
container_name: init
|
|
command: /bin/sh -c "./scripts/create_mount_directories.sh /local_parent ${HACK_LOCAL_ROOT_PARENT} ${LOCAL_ROOT}"
|
|
environment:
|
|
- LOCAL_ROOT=${LOCAL_ROOT}
|
|
- HACK_LOCAL_ROOT_PARENT=${HACK_LOCAL_ROOT_PARENT}
|
|
volumes:
|
|
- ${HACK_LOCAL_ROOT_PARENT}:/local_parent
|
|
bootloader:
|
|
image: airbyte/bootloader:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-bootloader
|
|
environment:
|
|
- AIRBYTE_VERSION=${VERSION}
|
|
- CONFIG_DATABASE_PASSWORD=${CONFIG_DATABASE_PASSWORD:-}
|
|
- CONFIG_DATABASE_URL=${CONFIG_DATABASE_URL:-}
|
|
- CONFIG_DATABASE_USER=${CONFIG_DATABASE_USER:-}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- DATABASE_USER=${DATABASE_USER}
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- RUN_DATABASE_MIGRATION_ON_STARTUP=${RUN_DATABASE_MIGRATION_ON_STARTUP}
|
|
db:
|
|
image: airbyte/db:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- CONFIG_DATABASE_PASSWORD=${CONFIG_DATABASE_PASSWORD:-}
|
|
- CONFIG_DATABASE_URL=${CONFIG_DATABASE_URL:-}
|
|
- CONFIG_DATABASE_USER=${CONFIG_DATABASE_USER:-}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- DATABASE_USER=${DATABASE_USER}
|
|
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
|
|
- POSTGRES_USER=${DATABASE_USER}
|
|
volumes:
|
|
- db:/var/lib/postgresql/data
|
|
worker:
|
|
image: airbyte/worker:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-worker
|
|
restart: unless-stopped
|
|
environment:
|
|
- AIRBYTE_VERSION=${VERSION}
|
|
- AUTO_DISABLE_FAILING_CONNECTIONS=${AUTO_DISABLE_FAILING_CONNECTIONS}
|
|
- CONFIG_DATABASE_PASSWORD=${CONFIG_DATABASE_PASSWORD:-}
|
|
- CONFIG_DATABASE_URL=${CONFIG_DATABASE_URL:-}
|
|
- CONFIG_DATABASE_USER=${CONFIG_DATABASE_USER:-}
|
|
- CONFIGS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION=${CONFIGS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION:-}
|
|
- CONFIG_ROOT=${CONFIG_ROOT}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- DATABASE_USER=${DATABASE_USER}
|
|
- DEPLOYMENT_MODE=${DEPLOYMENT_MODE}
|
|
- JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION=${JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION:-}
|
|
- JOB_MAIN_CONTAINER_CPU_LIMIT=${JOB_MAIN_CONTAINER_CPU_LIMIT}
|
|
- JOB_MAIN_CONTAINER_CPU_REQUEST=${JOB_MAIN_CONTAINER_CPU_REQUEST}
|
|
- JOB_MAIN_CONTAINER_MEMORY_LIMIT=${JOB_MAIN_CONTAINER_MEMORY_LIMIT}
|
|
- JOB_MAIN_CONTAINER_MEMORY_REQUEST=${JOB_MAIN_CONTAINER_MEMORY_REQUEST}
|
|
- LOCAL_DOCKER_MOUNT=${LOCAL_DOCKER_MOUNT}
|
|
- LOCAL_ROOT=${LOCAL_ROOT}
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- MAX_CHECK_WORKERS=${MAX_CHECK_WORKERS}
|
|
- MAX_DISCOVER_WORKERS=${MAX_DISCOVER_WORKERS}
|
|
- MAX_SPEC_WORKERS=${MAX_SPEC_WORKERS}
|
|
- MAX_SYNC_WORKERS=${MAX_SYNC_WORKERS}
|
|
- NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_LIMIT=${NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_LIMIT}
|
|
- NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_REQUEST=${NORMALIZATION_JOB_MAIN_CONTAINER_MEMORY_REQUEST}
|
|
- NORMALIZATION_JOB_MAIN_CONTAINER_CPU_LIMIT=${NORMALIZATION_JOB_MAIN_CONTAINER_CPU_LIMIT}
|
|
- NORMALIZATION_JOB_MAIN_CONTAINER_CPU_REQUEST=${NORMALIZATION_JOB_MAIN_CONTAINER_CPU_REQUEST}
|
|
- SECRET_PERSISTENCE=${SECRET_PERSISTENCE}
|
|
- SYNC_JOB_MAX_ATTEMPTS=${SYNC_JOB_MAX_ATTEMPTS}
|
|
- SYNC_JOB_MAX_TIMEOUT_DAYS=${SYNC_JOB_MAX_TIMEOUT_DAYS}
|
|
- TEMPORAL_HOST=${TEMPORAL_HOST}
|
|
- TRACKING_STRATEGY=${TRACKING_STRATEGY}
|
|
- WEBAPP_URL=${WEBAPP_URL}
|
|
- WORKER_ENVIRONMENT=${WORKER_ENVIRONMENT}
|
|
- WORKSPACE_DOCKER_MOUNT=${WORKSPACE_DOCKER_MOUNT}
|
|
- WORKSPACE_ROOT=${WORKSPACE_ROOT}
|
|
- METRIC_CLIENT=${METRIC_CLIENT}
|
|
- OTEL_COLLECTOR_ENDPOINT=${OTEL_COLLECTOR_ENDPOINT}
|
|
- JOB_ERROR_REPORTING_STRATEGY=${JOB_ERROR_REPORTING_STRATEGY}
|
|
- JOB_ERROR_REPORTING_SENTRY_DSN=${JOB_ERROR_REPORTING_SENTRY_DSN}
|
|
- ACTIVITY_MAX_ATTEMPT=${ACTIVITY_MAX_ATTEMPT}
|
|
- ACTIVITY_INITIAL_DELAY_BETWEEN_ATTEMPTS_SECONDS=${ACTIVITY_INITIAL_DELAY_BETWEEN_ATTEMPTS_SECONDS}
|
|
- ACTIVITY_MAX_DELAY_BETWEEN_ATTEMPTS_SECONDS=${ACTIVITY_MAX_DELAY_BETWEEN_ATTEMPTS_SECONDS}
|
|
- WORKFLOW_FAILURE_RESTART_DELAY_SECONDS=${WORKFLOW_FAILURE_RESTART_DELAY_SECONDS}
|
|
- USE_STREAM_CAPABLE_STATE=${USE_STREAM_CAPABLE_STATE}
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- workspace:${WORKSPACE_ROOT}
|
|
- ${LOCAL_ROOT}:${LOCAL_ROOT}
|
|
server:
|
|
image: airbyte/server:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-server
|
|
restart: unless-stopped
|
|
environment:
|
|
- AIRBYTE_ROLE=${AIRBYTE_ROLE:-}
|
|
- AIRBYTE_VERSION=${VERSION}
|
|
- CONFIG_DATABASE_PASSWORD=${CONFIG_DATABASE_PASSWORD:-}
|
|
- CONFIG_DATABASE_URL=${CONFIG_DATABASE_URL:-}
|
|
- CONFIG_DATABASE_USER=${CONFIG_DATABASE_USER:-}
|
|
- CONFIGS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION=${CONFIGS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION:-}
|
|
- CONFIG_ROOT=${CONFIG_ROOT}
|
|
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
|
|
- DATABASE_URL=${DATABASE_URL}
|
|
- DATABASE_USER=${DATABASE_USER}
|
|
- JOB_MAIN_CONTAINER_CPU_LIMIT=${JOB_MAIN_CONTAINER_CPU_LIMIT}
|
|
- JOB_MAIN_CONTAINER_CPU_REQUEST=${JOB_MAIN_CONTAINER_CPU_REQUEST}
|
|
- JOB_MAIN_CONTAINER_MEMORY_LIMIT=${JOB_MAIN_CONTAINER_MEMORY_LIMIT}
|
|
- JOB_MAIN_CONTAINER_MEMORY_REQUEST=${JOB_MAIN_CONTAINER_MEMORY_REQUEST}
|
|
- JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION=${JOBS_DATABASE_MINIMUM_FLYWAY_MIGRATION_VERSION:-}
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- NEW_SCHEDULER=${NEW_SCHEDULER}
|
|
- SECRET_PERSISTENCE=${SECRET_PERSISTENCE}
|
|
- TEMPORAL_HOST=${TEMPORAL_HOST}
|
|
- TRACKING_STRATEGY=${TRACKING_STRATEGY}
|
|
- JOB_ERROR_REPORTING_STRATEGY=${JOB_ERROR_REPORTING_STRATEGY}
|
|
- JOB_ERROR_REPORTING_SENTRY_DSN=${JOB_ERROR_REPORTING_SENTRY_DSN}
|
|
- WEBAPP_URL=${WEBAPP_URL}
|
|
- WORKER_ENVIRONMENT=${WORKER_ENVIRONMENT}
|
|
- WORKSPACE_ROOT=${WORKSPACE_ROOT}
|
|
ports:
|
|
- 8001:8001
|
|
volumes:
|
|
- workspace:${WORKSPACE_ROOT}
|
|
- data:${CONFIG_ROOT}
|
|
- ${LOCAL_ROOT}:${LOCAL_ROOT}
|
|
webapp:
|
|
image: airbyte/webapp:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-webapp
|
|
restart: unless-stopped
|
|
ports:
|
|
- 8000:80
|
|
environment:
|
|
- AIRBYTE_ROLE=${AIRBYTE_ROLE:-}
|
|
- AIRBYTE_VERSION=${VERSION}
|
|
- API_URL=${API_URL:-}
|
|
- FULLSTORY=${FULLSTORY:-}
|
|
- INTERNAL_API_HOST=${INTERNAL_API_HOST}
|
|
- IS_DEMO=${IS_DEMO:-}
|
|
- OPENREPLAY=${OPENREPLAY:-}
|
|
- PAPERCUPS_STORYTIME=${PAPERCUPS_STORYTIME:-}
|
|
- TRACKING_STRATEGY=${TRACKING_STRATEGY}
|
|
airbyte-temporal:
|
|
image: airbyte/temporal:${VERSION}
|
|
logging: *default-logging
|
|
container_name: airbyte-temporal
|
|
restart: unless-stopped
|
|
ports:
|
|
- 7233:7233
|
|
environment:
|
|
- DB=postgresql
|
|
- DB_PORT=${DATABASE_PORT}
|
|
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development.yaml
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- POSTGRES_PWD=${DATABASE_PASSWORD}
|
|
- POSTGRES_SEEDS=${DATABASE_HOST}
|
|
- POSTGRES_USER=${DATABASE_USER}
|
|
volumes:
|
|
- ./temporal/dynamicconfig:/etc/temporal/config/dynamicconfig
|
|
volumes:
|
|
workspace:
|
|
name: ${WORKSPACE_DOCKER_MOUNT}
|
|
# the data volume is only needed for backward compatibility; when users upgrade
|
|
# from an old Airbyte version that relies on file-based configs, the server needs
|
|
# to read this volume to copy their configs to the database
|
|
data:
|
|
name: ${DATA_DOCKER_MOUNT}
|
|
db:
|
|
name: ${DB_DOCKER_MOUNT}
|