NetBackup™ Deployment Guide for Kubernetes Clusters
- Introduction
- Section I. Configurations
- Prerequisites
- Prerequisites for Kubernetes cluster configuration
- Prerequisites for Cloud Scale configuration
- Recommendations and Limitations
- Configurations
- Configuration of key parameters in Cloud Scale deployments
- Prerequisites
- Section II. Deployment
- Section III. Monitoring and Management
- Monitoring NetBackup
- Monitoring Snapshot Manager
- Monitoring fluentbit
- Monitoring MSDP Scaleout
- Managing NetBackup
- Managing the Load Balancer service
- Managing PostrgreSQL DBaaS
- Managing logging
- Performing catalog backup and recovery
- Section IV. Maintenance
- PostgreSQL DBaaS Maintenance
- Patching mechanism for primary, media servers, fluentbit pods, and postgres pods
- Upgrading
- Cloud Scale Disaster Recovery
- Uninstalling
- Troubleshooting
- Troubleshooting AKS and EKS issues
- Troubleshooting AKS-specific issues
- Troubleshooting EKS-specific issues
- Troubleshooting AKS and EKS issues
- Appendix A. CR template
- Appendix B. MSDP Scaleout
- MSDP Scaleout configuration
- Managing MSDP Scaleout
- MSDP Scaleout maintenance
Deploying the operators
To perform these steps, log on to the Linux workstation or VM where you have extracted the TAR file.
Prerequisites to deploy operators
Ensure that the following steps are performed before deploying the operators:
- Install cert-manager by using the following command:
helm repo add jetstack https://charts.jetstack.io
helm repo update jetstack
helm upgrade -i -n cert-manager cert-manager jetstack/cert-manager \ --version 1.13.3 \ --set webhook.timeoutSeconds=30 \ --set installCRDs=true \ --wait --create-namespace
For details, see cert-manager Documentation.
- Create NetBackup namespace by using the following command:
kubectl create ns netbackup
- Install trust-manager by using the following command:
kubectl create namespace trust-manager
helm upgrade -i -n trust-manager trust-manager jetstack/trust-manager --set app.trust.namespace=netbackup --version v0.7.0 --wait
For details, see trust-manager Documentation.
- (For operators) Create kubernetes secret for using the private registries as follows:
kubectl create secret docker-registry <secret-name> \ --namespace <namespace> \ --docker-server=<container-registry-name> \ --docker-username=<service-principal-ID> \ --docker-password=<service-principal-password>
For example (AKS): kubectl create secret docker-registry demo-secret --namespace netbackup-operator-system --docker-server=cpautomation.azurecr.io --docker-username=c1d03169-6f35-4c29-b527-995bbad3b608 --docker-password=<password_here>
- (For Cloud Scale) Create kubernetes secret for using the private registries as follows:
kubectl create secret docker-registry <secret-name> \ --namespace <namespace> \ --docker-server=<container-registry-name> \ --docker-username=<service-principal-ID> \ --docker-password=<service-principal-password>
For example (AKS): kubectl create secret docker-registry demo-secret --namespace netbackup --docker-server=cpautomation.azurecr.io --docker-username=c1d03169-6f35-4c29-b527-995bbad3b608 --docker-password=<password_here>
To deploy the operators
- Use the following command to save the operators chart values to a file:
helm show values operators-<version>.tgz > operators-values.yaml
- Use the following command to edit the chart values to fit your requirement:
vi operators-values.yaml
- Execute the following command to deploy the operators:
helm upgrade --install operators operators-<version>.tgz -f operators-values.yaml --create-namespace --namespace netbackup-operator-system
Or
If using the OCI container registry, use the following command:
helm upgrade --install operators oci://abcd.veritas.com:5000/helm-charts/operators --version <version> -f operators-values.yaml --create-namespace --namespace netbackup-operator-system
Following is the output of the above command:
$ helm show values operators-11.0.x.x.xxxx.tgz > operators-values.yaml $ $ vi operators-values.yaml $ $ helm upgrade --install operators operators-11.0.x.x.xxxx.tgz \ > -f operators-values.yaml \ > --create-namespace \ > --namespace netbackup-operator-system Release "operators" does not exist. Installing it now. NAME: operators LAST DEPLOYED: Tue Feb 27 00:01:29 2024 NAMESPACE: netbackup-operator-system STATUS: deployed REVISION: 1 TEST SUITE: None
Following is an example for
operators-values.yaml
file which includes the parameter for private registry support.# Copyright (c) 2024 Veritas Technologies LLC. All rights reserved # Default values for operators. # This is a YAML-formatted file. # Declare variables to be passed into your templates. global: # Toggle for platform-specific features & settings # Microsoft AKS: "aks" # Amazon EKS: "eks" platform: "aks" # This specifies a container registry that the cluster has access to. # NetBackup images should be pushed to this registry prior to applying this # Environment resource. # Example Azure Container Registry name: # example.azurecr.io # Example AWS Elastic Container Registry name: # 123456789012.dkr.ecr.us-east-1.amazonaws.com containerRegistry: "example.azurecr.io" operatorNamespace: "netbackup-operator-system" # By default pods will get spun up in timezone of node, timezone of node is UTC in AKS/EKS # through this field one can specify the different timezone # example : /usr/share/zoneinfo/Asia/Kolkata timezone: null # imagePullSecrets: The imagePullSecrets field is used to specify Kubernetes secrets for pulling images from private registries. # Example: # imagePullSecrets: # - myregistrysecret # imagePullSecrets: [] storage: eks: fileSystemId: fs-id aks: #storageAccountName and storageAccountRG required if use wants to use existing storage account storageAccountName: null storageAccountRG: null msdp-operator: image: name: msdp-operator # Provide tag value in quotes eg: '17.0' tag: "__DD_TAG__" pullPolicy: Always namespace: labels: control-plane: controller-manager # This determines the path used for storing core files in the case of a crash. corePattern: "/core/core.%e.%p.%t" # This specifies the number of replicas of the msdp-operator controllers # to create. Minimum number of supported replicas is 1. replicas: 2 # Optional: provide label selectors to dictate pod scheduling on nodes. # By default, when given an empty {} all nodes will be equally eligible. # Labels should be given as key-value pairs, ex: # agentpool: mypoolname nodeSelector: {} # Storage specification to be used by underlying persistent volumes. # References entries in global.storage by default, but can be replaced storageClass: name: nb-disk-premium size: 5Gi # Specify how much of each resource a container needs. resources: # Requests are used to decide which node(s) should be scheduled for pods. # Pods may use more resources than specified with requests. requests: cpu: 150m memory: 150Mi # Optional: Limits can be implemented to control the maximum utilization by pods. # The runtime prevents the container from using more than the configured resource limits. limits: {} logging: # Enable verbose logging debug: false # Maximum age (in days) to retain log files, 1 <= N <= 365 age: 28 # Maximum number of log files to retain, 1 <= N =< 20 num: 20 nb-operator: image: name: "netbackup/operator" tag: "__NB_TAG__" pullPolicy: Always # nb-operator needs to know the version of msdp and flexsnap operators for webhook # to do version checking msdp-operator: image: tag: "__DD_TAG__" flexsnap-operator: image: tag: "__CP_TAG__" namespace: labels: nb-control-plane: nb-controller-manager nodeSelector: node_selector_key: agentpool node_selector_value: agentpool #loglevel: # "-1" - Debug (not recommended for production) # "0" - Info # "1" - Warn # "2" - Error loglevel: value: "0" flexsnap-operator: replicas: 1 namespace: labels: {} image: name: "veritas/flexsnap-deploy" tag: "__CP_TAG__" pullPolicy: Always nodeSelector: node_selector_key: nbu-control-pool node_selector_value: nbupool