Velero 백업 및 복원 테스트 예제
    • PDF

    Velero 백업 및 복원 테스트 예제

    • PDF

    기사 요약

    Velero 플러그인에서 설명한 내용을 바탕으로 백업과 복원 기능이 정상적으로 작동하는지 테스트하는 예제입니다.

    nginx 배포 예제

    백업 및 복원 테스트 예제를 수행할 수 있도록 먼저 nginx를 배포합니다.

    nginx를 배포하는 예제는 다음과 같습니다.

    1. 아래 코드를 복사하여 nginx-example.yaml 파일로 저장해 주십시오.
      # 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: nks.kr.ncr.ntruss.com/nginx:1.9
              name: nginx
              ports:
              - containerPort: 80
              volumeMounts:
              - mountPath: "/var/log/nginx"
                name: nginx-logs
                readOnly: false
      
    2. 아래 명령어를 실행하여 클러스터에 nginx를 배포해 주십시오.
      $ kubectl --kubeconfig $KUBE_CONFIG apply -f nginx-example.yaml
      
    3. nginx에 접속할 수 있도록 아래 명령어를 차례대로 실행하여 Pod를 확인한 후 포트포워딩해 주십시오.
      $ kubectl --kubeconfig $KUBE_CONFIG get pods --namespace nginx-example
      
      $ kubectl --kubeconfig $KUBE_CONFIG --namespace nginx-example port-forward pod/nginx-deploy-749cb5ff64-x8j4w 9191:80
      
    4. 포워딩된 포트를 브라우저에 입력하거나 curl 명령어를 사용하여 ngix에 접속한 후 화면이 정상적으로 표시되는지 확인해 주십시오.

    Velero를 통한 백업 예제

    Velero를 통해 백업을 수행하는 예제는 다음과 같습니다.

    1. 아래 명령어를 차례대로 실행하여 nginx 컨테이너에서 로그를 확인한 후 컨테이너에서 나와 주십시오.
      $ kubectl --kubeconfig $KUBE_CONFIG exec -it nginx-deploy-749cb5ff64-x8j4w --namespace nginx-example -- /bin/bash
      
      nginx-deploy-749cb5ff64-x8j4w:/# cat /var/log/nginx/access.log
      
      $ 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를 삭제한 후 정상적으로 삭제되었는지 확인해 주십시오.
      $ kubectl --kubeconfig $KUBE_CONFIG delete namespace nginx-example
      
      $ kubectl --kubeconfig $KUBE_CONFIG get deployments --namespace=nginx-example
      
    2. 아래 명령어를 실행하여 복원을 수행해 주십시오.
    velero --kubeconfig $KUBE_CONFIG restore create --from-backup nginx-backup
    
    1. 아래 명령어를 각각 실행하여 복원이 정상적으로 수행되었는지 확인해 주십시오.
      • 복원된 Deployment의 상태 확인
      $ kubectl --kubeconfig $KUBE_CONFIG get deployments --namespace=nginx-example
      
      • PersistentVolume이 생성되었는지 확인
      $ kubectl --kubeconfig $KUBE_CONFIG get pvc --namespace=nginx-example
      
      • 아래 명령어를 차례대로 실행하여 복원 전과 같은 로그가 표시되는지 확인
      $ kubectl --kubeconfig $KUBE_CONFIG get pods --namespace nginx-example
      
      $ kubectl --kubeconfig $KUBE_CONFIG exec -it nginx-deploy-749cb5ff64-x8j4w --namespace nginx-example -- /bin/bash
      
      $ nginx-deploy-749cb5ff64-x8j4w:/# cat /var/log/nginx/access.log
      

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.