Kubernetes는 확장성을 위해 설계되었습니다. Kubernetes 클러스터에 Backup 및 GKE Backup Agent API와 같은 새 API를 추가할 수 있습니다. 이러한 API는 Kubernetes 리소스 모델 (KRM)이라는 균일한 API 모델을 따릅니다.
이러한 API는 Kubernetes 커스텀 리소스를 사용하고 KRM을 기반으로 합니다. API는 백업의 수명 주기를 관리하고 백업 저장소, 정책, 계획을 만드는 데 사용됩니다.
서비스 엔드포인트
다음 URL은 백업 KRM API의 API 엔드포인트입니다.
https://MANAGEMENT_API_SERVER_ENDPOINT/apis/backup.gdc.goog/v1
다음 URL은 GKE Backup Agent API의 API 엔드포인트입니다.
https://MANAGEMENT_API_SERVER_ENDPOINT/apis/gkebackup.gke.io/v1
MANAGEMENT_API_SERVER_ENDPOINT
를 관리 API 서버의 엔드포인트로 바꿉니다.
검색 문서
kubectl proxy --port=8001
명령어를 사용하여 로컬 머신에서 API 서버로의 프록시를 엽니다. 여기에서 다음 URL 중 하나를 통해 검색 문서에 액세스할 수 있습니다.
http://127.0.0.1:8001/apis/backup.gdc.goog/v1
http://127.0.0.1:8001/apis/gkebackup.gke.io/v1
ClusterBackupPlan
리소스 예시
다음은 ClusterBackupPlan
리소스의 예시입니다.
apiVersion: backup.gdc.goog/v1
kind: ClusterBackupPlan
metadata:
name: backup-plan
namespace: project-namespace
spec:
targetCluster:
targetClusterType: UserCluster
targetClusterName:
kind: "Cluster"
name: "cluster-sample"
backupSchedule:
cronSchedule: "*/30 * * * *"
paused: false
clusterBackupConfig:
backupScope:
selectedNamespaces:
namespaces: ["nginx"]
clusterBackupRepositoryName: backup-repository
retentionPolicy:
backupDeleteLockDays: 10
backupRetainDays: 10
ProtectedApplication
리소스 예시
다음은 ProtectedApplication
리소스의 예시입니다.
apiVersion: gkebackup.gke.io/v1
kind: ProtectedApplication
metadata:
name: protected-application-test
namespace: applications
spec:
applicationName: protectedApplication
resourceSelection:
type: Selector
selector:
matchLabels:
app: protected
components:
- name: protect-application-deployment
resourceKind: Deployment
resourceNames:
- protected-application-deployment
strategy:
type: BackupAllRestoreAll
ClusterBackupRepository
리소스 예시
다음은 ClusterBackupRepository
리소스의 예시입니다.
apiVersion: backup.gdc.goog/v1
kind: ClusterBackupRepository
metadata:
name: user-1-user
namespace: user-1-user-cluster
spec:
secretReference:
namespace: "object-storage-secret-ns"
name: "object-storage-secret"
endpoint: "https://objectstorage.google.gdch.test"
type: "S3"
s3Options:
bucket: "fully-qualified-bucket-name"
region: "us-east-1"
forcePathStyle: true
importPolicy: "ReadWrite"