mingming

NetBackup Kubernetes 백업 본문

카테고리 없음

NetBackup Kubernetes 백업

mingming_96 2025. 9. 27. 05:52

1) 사전 준비

  • NetBackup 버전 호환성 확인(Operator 지원 버전). (Veritas 다운로드 포털 / 문서 확인)
  • kubectl과 helm 사용 가능, 클러스터 Admin 권한 보유
  • 컨테이너 레지스트리 (이미지 Push 권한)
  • 네트워크: Kubernetes 노드 → NetBackup Primary / Media 서버간 통신 (기본 PBX 1556 등 포트 열기). NetBackup은 클라이언트 → 서버 방향으로 PBX(기본 1556) 포트 통신을 사용합니다. (MSDP 등 추가 포트는 기능에 따라 필요).
  • 스토리지: PV를 스냅샷으로 만들 수 있는 StorageClass / VolumeSnapshotClass(CSI) 필요(복구 시 필수).

2) 패키지/이미지 준비 

  1. Veritas NetBackup Kubernetes 패키지(예: netbackupkops-<ver>.tar.gz)와 datamover 이미지 파일을 다운로드. Helm 차트 및 이미지가 포함되어 있습니다.
  2. (로컬에서) 이미지를 레지스트리에 등록
# 예시: tar에서 이미지 로드 -> 태깅 -> push
docker load -i veritasnetbackup-datamover-10.3.tar
docker tag veritasnetbackup-datamover:10.3 my-registry.example.com/veritas/datamover:10.3
docker push my-registry.example.com/veritas/datamover:10.3
 

Helm 차트 위치(예: netbackupkops-helm-chart)를 작업 디렉토리에 준비. values.yaml을 편집할 준비.

(참고: 레지스트리가 사설이면 imagePullSecret 생성 필요.)

 

Netbackup Helm 차트 구조

netbackupkops-helm-chart/
├── charts
├── Chart.yaml
├── templates
│   ├── deployment.yaml
│   └── _helpers.tpl
└── values.yaml

3) Kubernetes 전제 작업 (네임스페이스/이미지풀시크릿/서비스어카운트/RBAC)

네임스페이스 생성

kubectl create namespace netbackup

이미지 풀 시크릿 (사설 레지스트리용)

kubectl create secret docker-registry nb-regcred \
  --docker-server=my-registry.example.com \
  --docker-username=myuser --docker-password='mypassword' \
  -n netbackup

4) NetBackup (Primary Server)에서 토큰/인증키 생성 & 시크릿 생성

  • NetBackup Web UI 또는 CLI에서 Kubernetes용 인증 토큰(API key) 을 생성합니다. NetBackup Operator는 이 토큰(또는 API key)과 Primary 서버의 인증서 지문(fingerprint)을 사용해 안전하게 통신합니다.
  • Kubernetes에 넣을 시크릿 예시:
apiVersion: v1
kind: Secret
metadata:
  name: netbackup-nb-config-deploy-secret
  namespace: netbackup
type: Opaque
stringData:
  apikey: "생성한-API-키-값"
  k8scacert: |
 
kubectl apply -f nb-config-deploy-secret.yaml -n netbackup

주의: NetBackup 가이드에 따라 토큰은 Base64 인코딩 / fingerprint 포함 등 요구사항이 있으니, 문서의 예시를 그대로 따라야 합니다. (토큰/지문 생성 및 사용 절차는 관리자 가이드를 참고하세요).


5) Volume Snapshot Contorller 설치

1. CRD 배포

kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/refs/heads/release-8.2/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/refs/heads/release-8.2/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/refs/heads/release-8.2/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml

 

2. Volume Snapshot Controller 배포

kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/refs/heads/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/refs/heads/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml

 

3. Volume Snapshot Class 배포

# vsc.yaml
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-aws-vsc
driver: ebs.csi.aws.com
deletionPolicy: Delete

kubectl apply -f vsc.yaml

 

6) Helm values.yaml 설정

netbackupkops-helm-chart/values.yaml 주요 항목

netbackupkops:
  containers:
    manager:
      image: "netbackupkopsimage:10.5.1"
      resources:
        limits:
          cpu: 150m
          memory: 600Mi
        requests:
          cpu: 100m
          memory: 500Mi
  kopsPvcStorageClass:
  kopsPvcSize: 10Gi
  pvMountPath: /usr/openv
  imagePullSecrets: []
  # Example to add imagePullSecrets
  # imagePullSecrets:
  # - name: netbackupkops-docker-cred
  fipsMode: DISABLE
  acceleratorTracklogPvcStorageClass: None
  minSizeForAcceleratorTracklogPvc: 50Mi
  hostAliases:
    - hostnames:
      - netbackup-master.local.com
      ip: 10.70.1.151

nbsetup:
  replicas: 1
  containers:
    netbackup_config_pod:
      nbprimaryserver: netbackup-master.local.com
      nbsha256fingerprint: "netbackup-fingerprint"
      k8sCluster: "k8scluster-url"
      k8sPort: 443
      datamoverimage: "datamoverimage:10.5.0.1"
      logLevel: INFO
      storageclassblock: gp3
      volumesnapshotclassblock: csi-aws-vsc
      storageclassfilesystem:
      volumesnapshotclassfilesystem:
  storageMap:
    gp3:
      snapshotClass: csi-aws-vsc
      storageClassForBackupDataMovement: gp3
      storageClassForRestoreFromBackup: gp3

(버전에 따라 netbackupKops 또는 netbackupConfig 등 키명 차이가 있을 수 있으니 values.yaml 기본 파일을 확인해서 복사·수정하세요.)


7) Helm으로 설치

# 로컬 차트 경로로 설치 예시
helm install nb-kops ./netbackupkops-helm-chart -n netbackup --values ./my-values.yaml

# 상태 확인
helm status nb-kops -n netbackup
kubectl get pods -n netbackup
kubectl describe pod <pod-name> -n netbackup
kubectl logs <pod-name> -n netbackup
 

설치 중 chart가 operator pod, config pod, datamover pod 등을 생성합니다. 배포가 완료되면 NetBackup Web UI에서 “클러스터 추가(Add Cluster)” 절차를 밟아 클러스터를 등록합니다. 등록할 때 operator가 제공하는 토큰/지문 정보를 이용합니다. 


8) 설치 검증(핵심 체크포인트)

  1. kubectl get pods -n netbackup — 모든 관련 Pod가 Running 상태인지 확인
  2. kubectl logs <operator-pod> -n netbackup — 에러/예외 로그 확인
  3. NetBackup Web UI: 클러스터가 ‘연결(Connected)’ 상태인지, 자동 자원탐지(autodiscovery)가 정상 동작하는지 확인
  4. 샘플 백업 실행(예: NetBackup에서 생성한 K8s 용 Policy로 테스트 백업) 및 복구(restore) 시나리오 테스트
  5. PV snapshot 생성/복구가 제대로 동작하는지 확인 — 이는 스토리지 드라이버(CSI)와 밀접하므로 미리 확인해야 합니다.

9) 자주 발생하는 문제 & 해결 팁

  • 이미지 Pull 실패: imagePullSecrets 누락 또는 레지스트리 인증 오류 → kubectl describe pod / 이벤트 확인
  • RBAC 권한 오류: Operator가 CRD 또는 VolumeSnapshot 접근 권한이 없을 때 발생 → 필요한 권한 추가(ClusterRole 수정)
  • 토큰/인증서 관련 에러: 토큰 값의 포맷(Base64 등) 또는 Primary 서버의 인증서 지문(fingerprint) 불일치 → 시계(Clock skew)도 확인 필요(토큰/증명서 유효성에 영향).
  • NetBackup과 통신 불가: 방화벽(1556) 차단, DNS 불일치, 호스트명 해석 문제 → bpclntcmd(클라이언트 유틸)로 NetBackup 관점의 네트워크 상태 확인.

10) (참고) 전통적인 NetBackup 클라이언트 에이전트 설치 — Linux / Windows (간단 요약)

Kubernetes 외에 개별 노드(예: VM/베어메탈)의 NetBackup 클라이언트를 설치할 때는 NetBackup 설치 이미지(ESD/DVD)를 내려받아 로컬 설치 또는 Master에서 push 방식으로 설치할 수 있습니다. UNIX/Linux는 ./install 스크립트 기반 설치, Windows는 Browser.exe 또는 설치 마법사/무인 설치 방식이 제공됩니다. 설치 후 NetBackup 서비스 시작/정지 명령(bpup, nbstop 등)과 bpclntcmd로 연결 상태를 확인합니다.

 


빠른 명령 모음

# 네임스페이스
kubectl create ns netbackup

# registry credential (사설 레지스트리)
kubectl create secret docker-registry nb-regcred --docker-server=... --docker-username=... --docker-password=... -n netbackup

# API token secret (예시)
kubectl create secret generic nb-config-deploy-secret --from-literal=apikey='PASTE_API_KEY' -n netbackup

# Helm 설치
helm install nb-kops ./netbackupkops-helm-chart -n netbackup --values ./my-values.yaml

# 상태 확인
kubectl get pods -n netbackup
helm status nb-kops -n netbackup
kubectl logs -n netbackup <operator-pod>

참고(주요 근거 문서)

  • NetBackup Kubernetes Installation and Configuration Guide. 
  • NetBackup for Kubernetes Administrator's Guide (토큰/secret, 업그레이드 지침). 
  • Installing NetBackup using Helm charts (Helm/차트 관련 지침). 
  • NetBackup Network Ports Reference Guide (포트/방화벽).
  • About NetBackup client installation on UNIX and Linux (클라이언트 설치 방법 요약).