--- title: "Velero 백업 및 복원 테스트 예제" slug: "k8s-k8sexamples-velero" updated: 2026-08-20T09:03:27Z published: 2026-08-20T09:03:27Z canonical: "guide-gov.ncloud-docs.com/k8s-k8sexamples-velero" --- > ## Documentation Index > Fetch the complete documentation index at: https://guide-gov.ncloud-docs.com/llms.txt > Use this file to discover all available pages before exploring further. # Velero 백업 및 복원 테스트 예제

VPC 환경에서 이용 가능합니다.

[Velero 플러그인](/docs/k8s-k8suse-velero)에서 설명한 내용을 바탕으로 백업과 복원 기능이 정상적으로 작동하는지 테스트하는 예제입니다. ## nginx 배포 예제 백업 및 복원 테스트 예제를 수행할 수 있도록 먼저 nginx를 배포합니다. nginx를 배포하는 예제는 다음과 같습니다. 1. 아래 코드를 복사하여 nginx-example.yaml 파일로 저장해 주십시오. ```bash # nginx-example.yaml --- apiVersion: v1 kind: Namespace metadata: name: nginx-example labels: app: nginx --- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-log-pvc namespace: nginx-example labels: app: nginx spec: storageClassName: nks-block-storage accessModes: - ReadWriteOnce resources: requests: storage: 10Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deploy namespace: nginx-example labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: volumes: - name: nginx-logs persistentVolumeClaim: claimName: nginx-log-pvc containers: - image: io.kr.ncr.ntruss.com/nks/nginx:1.9 name: nginx ports: - containerPort: 80 volumeMounts: - mountPath: "/var/log/nginx" name: nginx-logs readOnly: false ``` 2. 아래 명령어를 실행하여 클러스터에 nginx를 배포해 주십시오. ```bash $ kubectl --kubeconfig $KUBE_CONFIG apply -f nginx-example.yaml ``` 3. nginx에 접속할 수 있도록 아래 명령어를 차례대로 실행하여 Pod를 확인한 후 포트포워딩해 주십시오. ```bash $ kubectl --kubeconfig $KUBE_CONFIG get pods --namespace nginx-example ``` ```bash $ kubectl --kubeconfig $KUBE_CONFIG --namespace nginx-example port-forward pod/nginx-deploy-749cb5ff64-x8j4w 9191:80 ``` 4. 포워딩된 포트를 브라우저에 입력하거나 `curl` 명령어를 사용하여 ngix에 접속한 후 화면이 정상적으로 표시되는지 확인해 주십시오. *** ## Velero를 통한 백업 예제 Velero를 통해 백업을 수행하는 예제는 다음과 같습니다. 1. 아래 명령어를 차례대로 실행하여 nginx 컨테이너에서 로그를 확인한 후 컨테이너에서 나와 주십시오. ```bash $ kubectl --kubeconfig $KUBE_CONFIG exec -it nginx-deploy-749cb5ff64-x8j4w --namespace nginx-example -- /bin/bash ``` ```bash nginx-deploy-749cb5ff64-x8j4w:/# cat /var/log/nginx/access.log ``` ```shell $ exit ``` 2. 아래 명령어를 실행하여 현재 클러스터 상태의 백업을 생성해 주십시오. ``` $ velero --kubeconfig $KUBE_CONFIG backup create nginx-backup --selector app=nginx ``` * nginx의 Kubernetes 오브젝트를 Object Storage에 저장하고, nginx를 배포할 때 생성했던 PersistentVolume의 스냅샷을 생성합니다. * `--selector app=nginx` 옵션은 Velero 서버가 Label Selector를 통해 `app=nginx`라는 Label이 설정되어 있는 Kubernetes 오브젝트만 백업하도록 지정합니다. *** ## Velero를 통한 복원 예제 Velero에서 백업한 데이터를 사용하여 복원을 수행하는 예제는 다음과 같습니다. 1. 아래 명령어를 차례대로 실행하여 `nginx-example` Namespace를 삭제한 후 정상적으로 삭제되었는지 확인해 주십시오. ```bash $ kubectl --kubeconfig $KUBE_CONFIG delete namespace nginx-example ``` ```bash $ kubectl --kubeconfig $KUBE_CONFIG get deployments --namespace=nginx-example ``` 2. 아래 명령어를 실행하여 복원을 수행해 주십시오. ```bash velero --kubeconfig $KUBE_CONFIG restore create --from-backup nginx-backup ``` 3. 아래 명령어를 각각 실행하여 복원이 정상적으로 수행되었는지 확인해 주십시오. * 복원된 Deployment의 상태 확인 ```bash $ kubectl --kubeconfig $KUBE_CONFIG get deployments --namespace=nginx-example ``` * `PersistentVolume`이 생성되었는지 확인 ```bash $ kubectl --kubeconfig $KUBE_CONFIG get pvc --namespace=nginx-example ``` * 아래 명령어를 차례대로 실행하여 복원 전과 같은 로그가 표시되는지 확인 ```bash $ kubectl --kubeconfig $KUBE_CONFIG get pods --namespace nginx-example ``` ```bash $ kubectl --kubeconfig $KUBE_CONFIG exec -it nginx-deploy-749cb5ff64-x8j4w --namespace nginx-example -- /bin/bash ``` ```bash $ nginx-deploy-749cb5ff64-x8j4w:/# cat /var/log/nginx/access.log ```