Google Distributed Cloud (GDC) 에어 갭의 객체 수명 주기 정책을 사용하면 스토리지 버킷에서 데이터 보관 및 만료를 자동화할 수 있습니다. 수동 정리 없이 버전이 지정되지 않은 객체를 삭제하거나 버전을 전환하고 만료하도록 기간, 프리픽스, 태그 규칙을 정의할 수 있습니다.
시작하기 전에
스토리지 버킷은 특정 프로젝트로 범위가 지정된 리소스입니다. 프로젝트는 컨테이너 역할을 하며, 버킷을 그룹화하고 Management API 서버를 통해 버킷을 관리할 수 있도록 합니다. 이 페이지에서 작업을 수행하려면 먼저 새 프로젝트를 만들거나 충분한 권한이 있는 기존 프로젝트를 선택해야 합니다.
필요한 IAM 역할
IAM 프로젝트 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 요청하세요.
- 프로젝트 버킷 관리자 (
project-bucket-admin): 스토리지 버킷을 만들고, 업데이트하고, 삭제합니다. - 프로젝트 버킷 객체 뷰어 (
project-bucket-object-viewer): 스토리지 버킷 및 객체의 세부정보를 보고 확인합니다.
자세한 내용은 버킷 액세스 권한 부여를 참조하세요.
개발 환경 준비
관리 API 서버 또는 전역 API 서버에 대해 명령어를 실행하려면 다음을 수행합니다.
- kubeconfig 파일이 없는 경우 영역 관리 API 서버의 kubeconfig 파일을 로그인하고 생성합니다.
- 이중 영역 버킷의 경우 다음을 수행합니다.
- 인프라 운영자 (IO)에게 페어링된 영역에
BucketLocationConfig커스텀 리소스가 생성되었는지 확인합니다. - 전역 API 서버의 kubeconfig 파일을 생성합니다.
- 인프라 운영자 (IO)에게 페어링된 영역에
버킷에 객체 수명 주기 정책 설정
객체 수명 주기 정책을 사용하여 버킷의 객체를 자동으로 관리할 수 있습니다. 이렇게 하면 수명 주기 동안 데이터를 더 효율적으로 저장할 수 있습니다. 수명 주기 구성은 특정 일치 기준에 따라 객체 그룹을 만료하는 규칙 목록입니다.
객체 수명 주기 정책을 사용하거나 사용하지 않고 버킷을 만들 수 있습니다. 버킷이 생성된 후 새 수명 주기 정책을 적용하거나 기존 수명 주기 정책을 업데이트하거나 삭제할 수 있습니다.
버전이 지정되지 않은 버킷의 경우 만료는 객체를 비동기식으로 영구 삭제하는 것을 의미합니다.
버전 관리 버킷의 경우 현재 객체 버전이 삭제 마커가 아니면 만료 시 현재 버전이 이전 버전으로 전환된 후 현재 버전에 삭제 마커가 추가됩니다.
객체 수명 주기 정책을 설정하고 수정하려면 Bucket.spec.bucketPolicy.lifecyclePolicy 필드를 업데이트합니다.
CLI
다음은 서로 다른 객체 수명 주기 정책이 구성된 버킷 리소스의 몇 가지 예시입니다.
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with lifecycle rule to expire all objects after 365 days"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
- expiration:
days: 365
id: expire-all-after-365-days
status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with lifecycle rule to expire objects in the logs/ directory after 30 days"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
- expiration:
days: 30
id: expire-logs-dir-after-30-days
status: Enabled
filter:
prefixFilter: "logs/"
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with lifecycle rule to expire objects having specific tag after 30 days"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
- expiration:
days: 30
id: expire-tagged-objects-after-30-days
status: Enabled
filter:
tagFilters:
- key: environment
value: dev
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with lifecycle rule to expire noncurrent versions after 90 days"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
- noncurrentExpiration:
noncurrentDays: 90
id: expire-noncurrent-after-90-days
status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with lifecycle rule to expire objects on a specific date"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
- expiration:
date: "2027-01-01T00:00:00Z"
id: expire-on-specific-date
status: Enabled
----------
apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
name: BUCKET_NAME
namespace: NAMESPACE_NAME
spec:
description: "Bucket with multiple lifecycle rules and advanced filters"
storageClass: Standard
bucketPolicy:
lifecyclePolicy:
enable: true
lifecycleRules:
# Rule 1: Expire objects in 'tmp/' directory AND tagged with 'status=ready' after 7 days
- expiration:
days: 7
id: expire-ready-tmp-objects
status: Enabled
filter:
prefixFilter: "tmp/"
tagFilters:
- key: status
value: ready
# Rule 2: Expire all objects in 'logs/' directory after 90 days
- expiration:
days: 90
id: expire-logs-after-90-days
status: Enabled
filter:
prefixFilter: "logs/"
수명 주기 정책에 대한 업데이트는 기존 객체와 업데이트 후 업로드된 객체에 적용됩니다.
버킷에 객체 잠금도 구성된 경우 보관 기간이 끝나기 전에 객체가 만료되지 않도록 보호됩니다.