본문 바로가기
WIKI 기술 지식 베이스

lakeFS 서버 설정

원문 보기 위키 갱신

lakeFS는 YAML 설정 파일과/또는 환경 변수로 설정해요. 이 페이지는 lakeFS Community(오픈소스) 서버의 전체 설정 레퍼런스예요. 데이터베이스, 인증, 블록 스토리지, 게이트웨이, 가비지 컬렉션 등 모든 설정 항목의 키, 타입, 기본값과 예제 설정을 확인할 수 있어요.

출처: 문서

본문

lakeFS 설정은 YAML 설정 파일과/또는 환경 변수로 해요. 설정 파일의 위치는 '--config' 플래그로 지정할 수 있어요. 지정하지 않으면 다음 순서로 처음 발견되는 파일이 사용돼요:

  • ./config.yaml

  • $HOME/lakefs/config.yaml

  • /etc/lakefs/config.yaml

  • $HOME/.lakefs.yaml

설정 항목은 각각 환경 변수로 제어할 수 있어요. 변수 이름은 LAKEFS_ 접두사 뒤에 설정 이름이 오고, 모든 .은 _로 바뀌어요.

Example

LAKEFS_LOGGING_LEVEL은 logging.level을 제어해요.

이 레퍼런스는 값의 중첩을 .으로 표기해요.

레퍼런스

  • listen_address (string : "0.0.0.0:8000") - 리슨할 주소를 나타내는 <host>:<port> 구조의 문자열이에요

logging

  • logging.format (one of ["json", "text"] : "text") - 로그 메시지를 출력할 형식이에요

  • logging.level (one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "INFO") - 출력할 로깅 레벨이에요

  • logging.audit_log_level (one of ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "NONE"] : "DEBUG") - 출력할 감사(audit) 로그 레벨이에요.

Note

이 필드를 메인 로거 레벨보다 낮게 설정하면 감사 로그를 얻을 수 없어요

  • logging.output (string : "-") - 로그를 쓸 경로(또는 경로들)예요. -는 표준 출력, =는 표준 에러를 뜻해요.

  • logging.file_max_size_mb (int : 100) - 출력 파일의 최대 크기(메가바이트)예요.

  • logging.files_keep (int : 0) - 보관할 로그 파일 수예요. 기본값은 전부 보관이에요.

actions

  • actions.enabled (bool : true) - false로 설정하면 훅이 실행되지 않아요.

  • actions.lua.net_http_enabled (bool : false) - true로 설정하면 net/http 패키지를 로드해요.

  • actions.env.enabled (bool : true) - 훅이 접근할 수 있는 환경 변수예요. 비활성화된 값은 빈 문자열로 평가돼요

  • actions.env.prefix (string : "LAKEFSACTION_") - 환경 변수 접근은 이 접두사를 가진 변수로 제한돼요. 환경 접근이 활성화되어 있고 접두사가 제공되지 않으면 모든 변수에 접근할 수 있어요.

  • actions.network.blocked_addresses ([]string : []) - 훅(웹훅, Airflow, Lua의 net/http, aws, azure, databricks 패키지)이 이 IP 주소나 CIDR 범위로 HTTP 요청을 보내지 못하게 막아요. 프록시 환경 변수를 쓰지 않고 리다이렉트를 포함한 모든 연결에 적용돼요. 기본값은 비어 있어서 아무것도 막지 않아요.

database

lakeFS 키-값 스토어 데이터베이스의 설정 섹션이에요.

  • database.type (string ["postgres"|"dynamodb"|"cosmosdb"|"redis"|"local"] : ) - lakeFS 데이터베이스 타입이에요

Note

redis 데이터베이스 타입은 lakeFS Enterprise에서 사용할 수 있어요

database.postgres``database.dynamodb``database.cosmosdb``database.local

  • database.postgres.connection_string (string : "postgres://localhost:5432/postgres?sslmode=disable") - 사용할 PostgreSQL 연결 문자열이에요

  • database.postgres.max_open_connections (int : 25) - 데이터베이스에 열어 둘 수 있는 최대 연결 수예요

  • database.postgres.max_idle_connections (int : 25) - 유휴(idle) 연결 풀의 최대 연결 수예요

  • database.postgres.connection_max_lifetime (duration : 5m) - 연결을 재사용할 수 있는 최대 시간을 지정해요 (유효 단위: ns|us|ms|s|m|h)

  • database.dynamodb.table_name (string : "kvstore") - 데이터를 저장하는 데 쓰이는 테이블이에요

  • database.dynamodb.scan_limit (int : 1025) - 스캔 작업 중 페이지당 최대 항목 수예요

Note

자세한 정보는 다음 AWS 문서를 참고하세요

  • database.dynamodb.endpoint (string : ) - 데이터베이스 인스턴스의 엔드포인트 URL이에요

  • database.dynamodb.aws_region (string : ) - 데이터베이스 인스턴스의 AWS 리전이에요

  • database.dynamodb.aws_profile (string : ) - 사용할 AWS 네임드 프로파일이에요

  • database.dynamodb.aws_access_key_id (string : ) - AWS 액세스 키 ID예요

  • database.dynamodb.aws_secret_access_key (string : ) - AWS 시크릿 액세스 키예요

Note

endpoint, aws_region, aws_access_key_id, aws_secret_access_key는 필수가 아니고, 서로 다른 AWS 자격 증명으로 DynamoDB를 다룰 때 주로 실험 목적으로 쓰여요.

  • database.dynamodb.health_check_interval (duration : 0s) - DynamoDB 인스턴스 헬스 체크 주기예요(0이면 실행하지 않아요).

  • database.dynamodb.max_attempts (int : 10) - DynamoDB 요청에 수행할 최대 시도 횟수예요

  • database.dynamodb.max_connections (int : 0) - DynamoDB에 대한 최대 연결 수예요. 0은 무제한을 뜻해요.

  • database.dynamodb.credentials_cache_expiry_window (duration : 200s) - 캐시된 AWS 자격 증명의 만료 창이에요. SDK가 자격 증명 만료 얼마 전에 새로 고치기를 시도할지 제어해요.

  • database.dynamodb.credentials_cache_expiry_window_jitter_fraction (float : 0.5) - 자격 증명 캐시 만료의 지터 계수(0.0-1.0)예요. 자격 증명을 새로 고칠 때 thundering herd 효과를 막으려고 무작위성을 더해요. 0.5는 최대 50% 지터를 뜻해요.

  • database.cosmosdb.key (string : "") - 지정하면 CosmosDB 계정에 인증할 때 쓰여요. 지정하지 않으면 Azure SDK 기본 인증(환경 변수 사용)이 쓰여요.

  • database.cosmosdb.endpoint (string : "") - CosmosDB 계정 엔드포인트예요. 예: https://<account>.documents.azure.com/.

  • database.cosmosdb.database (string : "") - CosmosDB 데이터베이스 이름이에요.

  • database.cosmosdb.container (string : "") - CosmosDB 컨테이너 이름이에요.

  • database.cosmosdb.throughput (int32 : ) - CosmosDB 컨테이너의 RU/s예요. 설정하지 않으면 CosmosDB 컨테이너의 기본 처리량이 사용돼요.

  • database.cosmosdb.autoscale (bool : false) - 설정하면 CosmosDB 컨테이너 처리량이 자동 확장돼요(최소 처리량 요건은 CosmosDB 문서 참고). 아니면 "Manual" 모드를 사용해요(문서).

  • database.local.path (string : "~/lakefs/metadata") - 브랜치, 미커밋 항목 같은 임베디드 KV 메타데이터를 저장할 파일시스템 상의 로컬 경로예요

  • database.local.sync_writes (bool: true) - 각 쓰기가 디스크에 기록되는지 보장해요. 성능을 높이려면 비활성화하세요

  • database.local.prefetch_size (int: 256) - 임베디드 KV 레코드를 순회할 때 몇 개를 미리 가져올지예요

  • database.local.enable_logging (bool: false) - 로컬 드라이버의 트레이스 로깅을 활성화해요

auth

  • auth.login_duration (time duration : "168h") - 로그인 토큰이 유효한 기간이에요.

  • auth.login_max_duration (time duration : "336h") - 사용자가 로그인 토큰 기간으로 요구할 수 있는 최대 기간이에요.

Deprecated

외부 프린시펄 API를 통한 로그인만 커스텀 토큰 기간을 요구할 수 있었는데, lakeFS Community는 더 이상 그 API를 제공하지 않아요. 그래서 이 키는 무시되고, 설정하면 경고가 로그에 남아요. lakeFS Enterprise는 auth 아래에 문서화하고 있어요.

auth.cache

  • auth.cache.enabled (bool : true) - 액세스 자격 증명과 사용자 정책을 메모리에 캐시할지 여부예요. 활성화하면 처리량이 크게 개선될 수 있어요.

  • auth.cache.size (int : 1024) - 인증 캐시에 저장할 항목 수예요. 사용자 수가 매우 많은 시스템은 캐시된 사용자당 약 1kb 메모리를 희생하면서 더 큰 값을 쓰면 좋아요.

  • auth.cache.ttl (time duration : "20s") - 인증 캐시에 항목을 얼마나 오래 저장할지예요. 더 큰 값은 데이터베이스 부하를 줄이지만, 캐시된 사용자에게 변경이 적용되는 데 더 오래 걸리게 만들어요.

  • auth.cache.jitter (time duration : "3s") - 각 항목의 TTL에 0부터 이 값 사이의 무작위 시간이 더해져요. 많은 키가 한꺼번에 만료되어 데이터베이스에 부담을 주는 일을 막으려는 거예요.

auth.encrypt

  • auth.encrypt.secret_key (string : "" - required) - 암호화와 HMAC 서명에 쓰이는 무작위(암호학적으로 안전한) 생성 문자열이에요.

Warning

이 값은 KMS나 Hashicorp Vault 같은 안전한 곳에 보관하고, 런타임에 시스템에 제공하는 게 가장 좋아요.

auth.api

Deprecated

lakeFS Community는 더 이상 외부 권한 서비스에 연결하지 않아요. 아래 키들은 기존 설정 파일이 계속 로드되도록 여전히 받아들여지지만, 설정된 키마다 경고가 로그에 남아요. auth.api.endpoint만은 시작 시 읽혀서, 사용자가 lakeFS 바깥에 있던 설치를 인식하는 데 쓰여요(lakeFS Community의 Access Control 항목 참고). 역할 기반 접근 제어는 lakeFS Enterprise에서 사용할 수 있어요.

  • auth.api.endpoint (string : "") - 외부 권한 서비스의 URL이에요.

  • auth.api.token (string : "") - 외부 권한 서비스로의 요청을 인증하는 데 쓰이는 API 토큰이에요.

  • auth.api.supports_invites (bool : false) - 외부 권한 서비스가 이메일로 사용자 초대를 지원하는지 여부예요.

  • auth.api.health_check_timeout (time duration : "") - 외부 권한 서비스 헬스 체크의 타임아웃이에요.

  • auth.api.skip_health_check (bool : false) - 외부 권한 서비스 헬스 체크를 건너뛰어요.

auth.authentication_api

Deprecated

lakeFS Community는 내장 데이터베이스만으로 사용자를 인증하고 외부 인증 서비스에 연결하지 않아요. 아래 키들은 기존 설정 파일이 계속 로드되도록 여전히 받아들여지지만, 값은 무시되고 설정된 키마다 경고가 로그에 남아요. lakeFS Enterprise는 auth.authentication_api 아래에 문서화하고 있어요.

  • auth.authentication_api.endpoint (string : "") - 외부 인증 서비스의 URL이에요.

  • auth.authentication_api.external_principals_enabled (bool : false) - 외부 프린시펄 API를 활성화해요.

auth.remote_authenticator

Deprecated

lakeFS Community는 로그인 폼을 원격 인증기에 위임하지 않으므로, 아래 키들은 무시되고 설정된 키마다 경고가 로그에 남아요. Remote Authenticator는 lakeFS Enterprise에서 사용할 수 있고, 그쪽에서는 auth.remote_authenticator 아래에 키들을 문서화하고 있어요.

  • auth.remote_authenticator.enabled (bool : false) - Remote Authenticator 서버로도 사용자를 인증해요.

  • auth.remote_authenticator.endpoint (string : "") - 원격 인증 서비스의 엔드포인트 URL이에요.

  • auth.remote_authenticator.default_user_group (string : "Viewers") - 원격으로 인증된 사용자가 생성되는 그룹이에요.

  • auth.remote_authenticator.request_timeout (time duration : 10s) - 원격 인증 요청의 타임아웃이에요.

auth.oidc

Deprecated

lakeFS Community는 OIDC 세션을 받아들이지 않으므로, 아래 키들은 무시되고 설정된 키마다 경고가 로그에 남아요. 싱글 사인온은 lakeFS Enterprise에서 사용할 수 있고, 그쪽에서는 auth.oidc 아래에 키들을 문서화하고 있어요.

  • auth.oidc.default_initial_groups (string[] : []) - OIDC 사용자에게 기본으로 부여되는 그룹이에요.

  • auth.oidc.initial_groups_claim_name (string : "") - 새 사용자의 초기 그룹을 제공하는 ID 토큰 클레임이에요.

  • auth.oidc.friendly_name_claim_name (string : "") - 사용자 표시 이름으로 쓰이는 ID 토큰 클레임이에요.

  • auth.oidc.persist_friendly_name (bool : false) - 표시 이름을 KV 스토어에 영속화해요.

  • auth.oidc.validate_id_token_claims (map[string]string : {}) - ID 토큰이 반드시 포함해야 하는 클레임과 값들이에요.

auth.cookie_auth_verification

Deprecated

lakeFS Community는 외부 아이덴티티 프로바이더가 설정한 세션을 받아들이지 않으므로, 아래 키들은 무시되고 설정된 키마다 경고가 로그에 남아요. 싱글 사인온은 lakeFS Enterprise에서 사용할 수 있고, 그쪽에서는 auth.cookie_auth_verification 아래에 키들을 문서화하고 있어요.

  • auth.cookie_auth_verification.validate_id_token_claims (map[string]string : {}) - ID 토큰이 반드시 포함해야 하는 클레임과 값들이에요.

  • auth.cookie_auth_verification.default_initial_groups (string[] : []) - 사용자에게 기본으로 부여되는 그룹이에요.

  • auth.cookie_auth_verification.initial_groups_claim_name (string : "") - 새 사용자의 초기 그룹을 제공하는 ID 토큰 클레임이에요.

  • auth.cookie_auth_verification.friendly_name_claim_name (string : "") - 사용자 표시 이름으로 쓰이는 ID 토큰 클레임이에요.

  • auth.cookie_auth_verification.persist_friendly_name (bool : false) - 표시 이름을 KV 스토어에 영속화해요.

  • auth.cookie_auth_verification.external_user_id_claim_name (string : "") - 사용자 식별자로 쓰이는 ID 토큰 클레임이에요.

  • auth.cookie_auth_verification.auth_source (string : "") - 사용자의 인증 소스로 기록되는 라벨이에요.

auth.ui_config

  • auth.ui_config.login_failed_message (string : "The credentials don't match.") - 로그인 폼에서 인증이 실패했을 때 표시되는 커스텀 오류 메시지예요.

Deprecated

lakeFS Community는 내장 관리자 자격 증명을 위한 단일 로그인 폼을 제공하고 RBAC 권한 서비스 없이 실행돼요. 그래서 아래 키들은 무시되고 설정된 키마다 경고가 로그에 남아요. lakeFS Community의 Access Control을 참고하세요. 싱글 사인온과 역할 기반 접근 제어는 lakeFS Enterprise에서 사용할 수 있고, 그쪽에서는 auth.ui_config 아래에 키들을 문서화하고 있어요.

  • auth.ui_config.rbac (string : "") - 웹 UI의 권한 부여 모드예요.

  • auth.ui_config.login_url (string : "") - 여러분 IdP의 로그인 페이지로의 절대 또는 상대 URL이에요. OIDC나 SAML로 SSO를 통해 lakeFS에 인증할 때 쓰여요.

  • auth.ui_config.logout_url (string : "") - 사용자가 lakeFS에서 로그아웃할 때 리다이렉트될 URL이에요.

  • auth.ui_config.use_login_placeholders (bool : false) - 로그인 폼에서 Access Key ID와 Secret Access Key 대신 Username과 Password 플레이스홀더를 보여줘요.

blockstore

  • blockstore.type (one of ["local", "s3", "gs", "azure", "mem"] : required). 사용할 블록 어댑터예요. 기반 데이터가 어디에 저장될지를 제어해요

  • blockstore.default_namespace_prefix (string : ) - 사용자가 저장소의 스토리지 네임스페이스를 고르는 데 도움을 주려고 쓰세요. 지정하면 UI에서 저장소를 만들 때 스토리지 네임스페이스가 이 기본값을 접두사로 채워져요. 사용자는 여전히 다른 값으로 바꿀 수 있어요.

  • blockstore.signing.secret_key (string : required) - get/link 물리 주소를 사용할 때 HMAC 서명에 쓰이는 무작위 생성 문자열이에요

blockstore.local``blockstore.s3``blockstore.azure``blockstore.gs

Note

local blockstore는 POSIX 호환 파일시스템만 지원해요.

  • blockstore.local.path (string: "~/lakefs/data/block") - 로컬 Block Adapter 사용 시 파일을 저장할 디렉터예요

  • blockstore.local.import_enabled (bool: false) - 로컬 Block Adapter에 임포트를 활성화해요. 공유 위치를 사용할 때만 관련 있어요

  • blockstore.local.import_hidden (bool: false) - 활성화하면 임포트가 점 문자로 시작하는 파일이나 폴더도 스캔하고 임포트해요.

  • blockstore.local.allowed_external_prefixes ([]string: []) - 외부 위치(예: /var/data/)에 대한 접근을 판정하는 데 쓰이는 절대 경로 접두사 목록이에요. 빈 목록은 외부 위치에 접근 불가를 뜻해요.

  • blockstore.s3.region (string : "us-east-1") - S3와 상호작용할 때 lakeFS가 사용하는 기본 리전이에요.

  • blockstore.s3.profile (string : ) - 지정하면 네임드 자격 증명 프로파일로 사용돼요

  • blockstore.s3.credentials_file (string : ) - 지정하면 자격 증명 파일로 사용돼요

  • blockstore.s3.credentials.access_key_id (string : ) - 지정하면 정적 자격 증명 세트로 사용돼요

  • blockstore.s3.credentials.secret_access_key (string : ) - 지정하면 정적 자격 증명 세트로 사용돼요

  • blockstore.s3.credentials.session_token (string : ) - 지정하면 정적 세션 토큰으로 사용돼요

  • blockstore.s3.endpoint (string : ) - 지정하면 AWS S3 API의 커스텀 엔드포인트예요 (https://s3_compatible_service_endpoint:port)

  • blockstore.s3.force_path_style (bool : false) - true이면 path-style S3 URL을 사용해요 (https://bucket. 형식 대신 https://host/ 형식)

  • blockstore.s3.discover_bucket_region (bool : true) - (기반 S3 버킷이 GetBucketRegion API를 지원하지 않으면 끌 수 있어요).

  • blockstore.s3.skip_verify_certificate_test_only (bool : false) - 스토리지 엔드포인트에 연결할 때 인증서 검증을 건너뛰어요. 테스트에만 써야 해요.

  • blockstore.s3.server_side_encryption (string : ) - 사용되는 서버 측 암호화 형식이에요 (AWS에서 SSE-KMS를 쓰려면 "aws:kms"를 전달하는 예제 참고)

  • blockstore.s3.server_side_encryption_kms_key_id (string : ) - 서버 측 암호화 KMS 키 ID예요

  • blockstore.s3.pre_signed_expiry (time duration : "15m") - pre-signed URL의 만료 기간이에요.

  • blockstore.s3.pre_signed_endpoint (string : ) - pre-signed URL의 커스텀 엔드포인트예요.

  • blockstore.s3.disable_pre_signed (bool : false) - pre-signed URL 사용을 비활성화해요.

  • blockstore.s3.disable_pre_signed_ui (bool : true) - UI에서 pre-signed URL 사용을 비활성화해요.

  • blockstore.s3.disable_pre_signed_multipart (bool : ) - pre-signed multipart upload 사용을 비활성화해요. 실험적 기능이고, presign 지원이 있는 s3 블록 어댑터에서 활성화돼요.

  • blockstore.s3.client_log_request (bool : false) - 요청을 로그로 남기도록 SDK 로깅 비트를 설정해요

  • blockstore.s3.client_log_retries (bool : false) - 재시도를 로그로 남기도록 SDK 로깅 비트를 설정해요

  • blockstore.azure.storage_account (string : ) - 지정하면 Azure 스토리지 계정으로 사용돼요

  • blockstore.azure.storage_access_key (string : ) - 지정하면 Azure 스토리지 액세스 키로 사용돼요

  • blockstore.azure.pre_signed_expiry (time duration : "15m") - pre-signed URL의 만료 기간이에요.

  • blockstore.azure.disable_pre_signed (bool : false) - pre-signed URL 사용을 비활성화해요.

  • blockstore.azure.disable_pre_signed_ui (bool : true) - UI에서 pre-signed URL 사용을 비활성화해요.

  • blockstore.azure.china_cloud (bool : false) - Azure China Cloud에서 lakeFS를 사용하려면 활성화하세요.

Deprecated

blockstore.azure.domain을 사용하세요

  • blockstore.azure.domain (string : blob.core.windows.net) - 서로 다른 Azure 클라우드 도메인 지원을 활성화해요. 현재 지원되는 도메인(베타 단계): [blob.core.chinacloudapi.cn, blob.core.usgovcloudapi.net]

  • blockstore.gs.credentials_file (string : ) - 지정하면 Google 서비스 계정 키를 담은 JSON 파일의 경로로 사용돼요

  • blockstore.gs.credentials_json (string : ) - 지정하면 Google 서비스 계정 키를 담은 JSON 문자열로 사용돼요(credentials_file이 설정되지 않았을 때)

  • blockstore.gs.data_credentials_file (string : ) - 지정하면 데이터 작업용 Google 서비스 계정 키를 담은 JSON 파일의 경로로 사용돼요 실험적

  • blockstore.gs.data_credentials_json (string : ) - 지정하면 데이터 작업용 Google 서비스 계정 키를 담은 JSON 문자열로 사용돼요 실험적

  • blockstore.gs.pre_signed_expiry (time duration : "15m") - pre-signed URL의 만료 기간이에요.

  • blockstore.gs.disable_pre_signed (bool : false) - pre-signed URL 사용을 비활성화해요.

  • blockstore.gs.disable_pre_signed_ui (bool : true) - UI에서 pre-signed URL 사용을 비활성화해요.

  • blockstore.gs.server_side_encryption_customer_supplied (string : ) - 16진수 AES 키를 쓰는 서버 측 암호화예요. 아래의 키 ID와 상호 배타적이에요

  • blockstore.gs.server_side_encryption_kms_key_id (string : ) - 서버 측 암호화 KMS 키 ID예요. 위와 상호 배타적이에요

graveler

  • graveler.ensure_readable_root_namespace (bool: true) - 새 저장소를 만들 때 lakeFS가 기반 스토리지 네임스페이스의 루트에 접근할 수 있는지 검증해요. lakeFS가 접근해서는 안 되는 경우(즉 pre-sign 모드 전용)에만 false로 설정하세요.

  • graveler.max_batch_delay (duration : 3ms) - 참조 스토어 작업의 서버 배치 주기를 제어해요.

  • graveler.background.rate_limit (int : 0) - 커밋된 스테이징 토큰 삭제 같은 백그라운드 작업의 초당 요청 제한이에요(기본값: 0 - 무제한).

graveler.repository_cache

  • graveler.repository_cache.size (int : 1000) - 저장소 캐시에 저장할 항목 수예요.

  • graveler.repository_cache.ttl (time duration : "5s") - 저장소 캐시에 항목을 얼마나 오래 저장할지예요.

  • graveler.repository_cache.jitter (time duration : "2s") - 각 항목의 TTL에 0부터 이 값 사이의 무작위 시간이 더해져요.

graveler.commit_cache

  • graveler.commit_cache.size (int : 50000) - 커밋 캐시에 저장할 항목 수예요.

  • graveler.commit_cache.ttl (time duration : "10m") - 커밋 캐시에 항목을 얼마나 오래 저장할지예요.

  • graveler.commit_cache.jitter (time duration : "2s") - 각 항목의 TTL에 0부터 이 값 사이의 무작위 시간이 더해져요.

committed

  • committed.block_storage_prefix (string : _lakefs) - 각 저장소의 스토리지 네임스페이스 안에서 메타데이터 파일 저장용 프리픽스예요

  • committed.sstable.memory.cache_size_bytes (int : 400_000_000) - SSTable 리더마다 사용되는 메모리 내 캐시의 최대 크기예요.

committed.local_cache

영구 스토리지에서 온 메타데이터의 로컬(디스크) 캐시를 설명하는 객체예요.

  • committed.local_cache.size_bytes (int : 1073741824) - 로컬 캐시가 디스크에서 사용할 바이트 수예요. 캐시는 짧은 기간 동안 더 많은 스토리지를 쓸 수 있어요.

  • committed.local_cache.dir (string, ~/lakefs/data/cache) - 로컬 캐시를 저장할 디렉터예요.

  • committed.local_cache.range_proportion (float : 0.9) - range(커밋된 메타데이터 스토리지의 리프) 저장에 쓸 로컬 캐시의 비율이에요.

  • committed.local_cache.range.open_readers (int : 500) - range용으로 유지할 미사용 열린 SSTable 리더의 최대 수예요.

  • committed.local_cache.range.num_shards (int : 30) - range용 열린 SSTable 리더의 샤딩 계수예요. 최소한 sqrt(committed.local_cache.range.open_readers)여야 해요.

  • committed.local_cache.metarange_proportion (float : 0.1) - metarange(커밋된 메타데이터 스토리지의 루트) 저장에 쓸 로컬 캐시의 비율이에요.

  • committed.local_cache.metarange.open_readers (int : 50) - metarange용으로 유지할 미사용 열린 SSTable 리더의 최대 수예요.

  • committed.local_cache.metarange.num_shards (int : 10) - metarange용 열린 SSTable 리더의 샤딩 계수예요. 최소한 sqrt(committed.local_cache.metarange.open_readers)여야 해요.

committed.permanent

  • committed.permanent.min_range_size_bytes (int : 0) - 메타데이터에서 허용되는 가장 작은 range예요. 늘리면 커밋된 메타데이터의 무작위 접근 시간이 다소 줄지만, 커밋된 메타데이터 저장 비용이 늘어나요.

  • committed.permanent.max_range_size_bytes (int : 20971520) - 메타데이터에서 허용되는 가장 큰 range예요. 원격 스토리지에서 가져오기가 선형이 되는 크기에 가깝게 잡아야 해요.

  • committed.permanent.range_raggedness_entries (int : 50_000) - 각 range에 저장할 오브젝트 포인터의 평균 개수예요(min_range_size_bytes와 max_range_size_bytes의 영향을 받아요).

email

  • email.smtp_host (string) - SMTP 호스트의 URL을 나타내는 문자열이에요.

  • email.smtp_port (int) - SMTP 서비스의 포트를 나타내는 정수예요 (465, 587, 993, 25 등이 표준 포트예요)

  • email.use_ssl (bool : false) - SMTP 호스트와 SSL 연결을 사용해요.

  • email.username (string) - SMTP의 특정 계정 사용자 이름을 나타내는 문자열이에요. 이 값은 런타임에 시크릿 볼트 같은 곳에서 제공하는 걸 권장해요.

  • email.password (string) - 계정의 비밀번호를 나타내는 문자열이에요. 이 값도 런타임에 시크릿 볼트 같은 곳에서 제공하는 걸 권장해요.

  • email.local_name (string) - HELO 명령으로 SMTP 서버에 보내는 호스트명을 나타내는 문자열이에요. 기본적으로 "localhost"가 전송돼요.

  • email.sender (string) - 발신자로 지정되는 이메일 계정을 나타내는 문자열이에요.

  • email.limit_every_duration (duration : 1m) - 이메일 전송 사이의 평균 시간이에요. 0을 넣으면 전송 가능한 이메일 양에 제한이 없어요.

  • email.burst (int: 10) - limit_every_duration을 적용하기 전 허용되는 최대 이메일 폭발(burst)량이에요. 0 값은 폭발 허용량이 없다는 뜻이므로 이메일을 보낼 수 없어요.

  • email.lakefs_base_url (string : "http://localhost:8000") - 사용자 초대, 비밀번호 재설정 등의 이메일을 보낼 때 안내되는 lakeFS 기본 엔드포인트를 나타내는 문자열이에요.

gateways

  • gateways.s3.domain_name (string : "s3.local.lakefs.io") - S3 클라이언트가 이 서버를 호출할 때 쓰는 S3 엔드포인트를 나타내는 FQDN이에요 (virtual-host addressing을 사용할 경우, *.s3.local.lakefs.io는 항상 127.0.0.1로 해석되어 로컬 개발에 유용해요).

  • gateways.s3.region (string : "us-east-1") - lakeFS가 흉내 내는 AWS 리전이에요. AWS SDK 클라이언트에 쓰인 리전 설정과 일치해야 해요

  • gateways.s3.fallback_url (string) - 지정하면 존재하지 않는 저장소에 대한 요청이 이 URL로 포워딩돼요. lakeFS를 S3와 나란히 쓰는 데 유용하고, URL은 S3Proxy 인스턴스를 가리킬 수 있어요. gateways.s3.resolve_tenant가 활성화되면 root 테넌트로 해석되는 요청만 폴백에 도달할 수 있어요. 테넌트가 지정된 버킷 이름은 명백히 lakeFS 주소이기 때문이에요.

  • gateways.s3.resolve_tenant (bool : false) - 활성화하면 S3 게이트웨이가 버킷 이름에서 테넌트를 해석해요: {tenant}--{repository} 형태의 이름은 그 테넌트 안의 그 저장소를 가리키고, 맨 이름은 예약된 root 테넌트를 가리켜요. 비활성화된 동안에는 모든 버킷 이름이 통째로 해석되고 모든 요청이 root에서 동작해요. 테넌트 라이선스가 있는 lakeFS Enterprise가 필요해요.

  • gateways.s3.sts.enabled (bool : true) - 활성화하면 lakeFS가 STS AssumeRoleWithWebIdentity 액션을 제공해요. 이는 lakeFS 로그인 토큰이나 JWT Login 아이덴티티 프로바이더 토큰을 임시 S3 Gateway 자격 증명으로 교환하고, S3 Gateway는 그 자격 증명을 받아들여요.

  • gateways.s3.verify_unsupported (bool : true) - S3 게이트웨이는 지원되지 않는 요청에 오류를 내지만, 비활성화하면 대상 기반 핸들러에 맡겨요.

tls

  • tls.enabled (bool :false) - TLS 리스닝을 활성화해요. listen_address가 HTTPS 요청을 서빙하는 데 쓰여요. (주로 로컬 개발용)

  • tls.cert_file (string : ) - HTTPS 서빙 시 쓰이는 서버 인증서 파일 경로예요 (.cert 또는 .crt 파일 - 서명된 인증서).

  • tls.key_file (string : ) - HTTPS 서빙 시 쓰이는 서버 비밀 키 파일 경로예요 (.key 파일 - 개인 키).

stats

  • stats.enabled (bool : true) - 익명 사용량 통계를 주기적으로 수집할지 여부예요

  • stats.flush_interval (duration : 30s) - 수집된 익명 통계를 게시하는 데 쓰이는 주기예요

  • stats.flush_size (int : 100) - 게시하는 익명 통계의 크기(레코드 수)예요

installation

  • installation.user_name (string : ) - 지정하면 서버가 처음 실행될 때 초기 관리자 사용자가 만들어져요. database.type이 local일 때만 동작해요. installation.access_key_id와 installation.secret_access_key가 필요해요.

  • installation.access_key_id (string : ) - 관리자의 초기 액세스 키 ID예요 (초기 설정 과정에서 한 번 사용)

  • installation.secret_access_key (string : ) - 관리자의 초기 시크릿 액세스 키예요 (초기 설정 과정에서 한 번 사용)

  • installation.allow_inter_region_storage (bool : true) - 서버가 실행 중인 리전과 다른 리전의 스토리지를 허용해요.

usage_report

  • usage_report.enabled (bool : true) - API와 게이트웨이 사용 리포트를 키-값 스토어에 저장해요.

  • usage_report.flush_interval (duration : 5m) - 메모리 내 사용 데이터를 키-값 스토어로 내보내는 주기를 설정해요.

ui

  • ui.enabled (bool: true) - 바이너리에서 내장 UI를 서빙할지 여부예요

security

  • security.audit_check_interval (duration : 24h) - 보안 감사를 확인하는 주기예요.

garbage collection

  • ugc.prepare_max_file_size (int: 125829120) - 미커밋 가비지 컬렉션 준비 요청에서, 생성되는 파일의 최대 크기를 제한해요

  • ugc.prepare_interval (duraction: 1m) - 미커밋 가비지 컬렉션 준비 요청에서, 생성 시간을 주기로 제한해요

branch_lifecycle

기능 전체의 상세 내용은 Branch Lifecycle을 참고하세요.

  • branch_lifecycle.schedule (string : "0 * * * *") - 저장소 브랜치 라이프사이클 정책을 적용하는 잡의 cron 스케줄이에요. 잡은 항상 연결되어 있고, 저장소의 정책을 설정하거나 비우는 방식으로 그 저장소에 대해 동작할지 제어해요.

object_lifecycle

기능 전체의 상세 내용은 Object Lifecycle을 참고하세요.

  • object_lifecycle.schedule (string : "0 2 * * *") - 저장소 오브젝트 라이프사이클 규칙을 적용하는 잡의 cron 스케줄이에요. 잡은 항상 연결되어 있고, 저장소의 규칙을 설정하거나 비우는 방식으로 그 저장소에 대해 동작할지 제어해요.

  • object_lifecycle.workers (int : 1) - 한 번의 실행에서 동시에 평가되는 브랜치 수예요.

환경 변수 사용하기

모든 설정 변수는 환경 변수로 설정하거나 재정의할 수 있어요.

환경 변수를 설정하려면 이름 앞에 LAKEFS_를 붙이고, 대문자로 바꾸고, .을 _로 바꾸세요:

예컨대 logging.format은 LAKEFS_LOGGING_FORMAT이 되고, blockstore.s3.region은 LAKEFS_BLOCKSTORE_S3_REGION이 되는 식이에요.

map[string]string 타입 필드에 값을 넣으려면 key1=value1,key2=value2,... 문법을 사용하세요.

예제 설정

PostgreSQL 데이터베이스를 쓰는 로컬 개발

---
listen_address: "0.0.0.0:8000"

database:
type: "postgres"
postgres:
    connection_string: "postgres://localhost:5432/postgres?sslmode=disable"

logging:
format: text
level: DEBUG
output: "-"

auth:
encrypt:
    secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"

blockstore:
type: local
local:
    path: "~/lakefs/dev/data"

gateways:
s3:
    region: us-east-1

DynamoDB 데이터베이스를 쓰는 AWS 배포

---
logging:
format: json
level: WARN
output: "-"

database:
type: "dynamodb"
dynamodb:
    table_name: "kvstore"

auth:
encrypt:
    secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"

blockstore:
type: s3
s3:
    region: us-east-1 # optional, fallback in case discover from bucket is not supported
    credentials_file: /secrets/aws/credentials
    profile: default

Google Storage

---
logging:
format: json
level: WARN
output: "-"

database:
type: "postgres"
postgres:
    connection_string: "postgres://user:***@lakefs.rds.amazonaws.com:5432/postgres"

auth:
encrypt:
    secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"

blockstore:
type: gs
gs:
    credentials_file: /secrets/lakefs-service-account.json

MinIO

---
logging:
format: json
level: WARN
output: "-"

database:
type: "postgres"
postgres:
    connection_string: "postgres://user:***@lakefs.rds.amazonaws.com:5432/postgres"

auth:
encrypt:
    secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"

blockstore:
type: s3
s3:
    force_path_style: true
    endpoint: http://localhost:9000
    discover_bucket_region: false
    credentials:
        access_key_id: minioadmin
        secret_access_key: minioadmin

Azure blob storage

---
logging:
format: json
level: WARN
output: "-"

database:
type: "cosmosdb"
cosmosdb:
    key: "ExampleReadWriteKeyMD7nkPOWgV7d4BUjzLw=="
    endpoint: "https://lakefs-account.documents.azure.com:443/"
    database: "lakefs-db"
    container: "lakefs-container"

auth:
encrypt:
    secret_key: "10a718b3f285d89c36e9864494cdd1507f3bc85b342df24736ea81f9a1134bcc"

blockstore:
type: azure
azure:
    storage_account: exampleStorageAcount
    storage_access_key: ExampleAcessKeyMD7nkPOWgV7d4BUjzLw==

더 알아보기 (Learn more)

공식 문서의 자세한 내용은 https://docs.lakefs.io/reference/configuration/에서 확인하실 수 있어요.