Prerequisites
Currently automated backups are dependent on Velero, with Amazon S3 as the offsite storage. The backup scripts handle the installation and setup of Velero, but an S3 bucket with AWS credentials must be setup prior to running the backup or restore scripts.
Storage Setup For Multi-Node Production Clusters
CSI-enabled storage provides several modern features for Kubernetes storage and enables the use of volume resizing, storage snapshots, and automated backups. Storage drivers depend on your Kubernetes provider. See a full list of vendor maintained drivers here.
EKS
If NetFoundry On-Prem is being installed on an existing EKS cluster, the following script can be run to initialize
the ebs.csi.aws.com
driver with the desired settings:
./installers/setup_eks_storage.sh
S3 / IAM Setup
Velero requires an object storage bucket to store backups in, preferably unique to a single Kubernetes cluster.
It also requires a set of IAM credentials that are persisted to a credentials file ./velero/s3-credentials-velero
.
These credentials must be persistent in order for scheduled backups to run regularly, temporary credentials should
not be used.
Below is an example for setting up an S3 bucket with the appropriate IAM credentials to access it. Note that the instructions below require admin permissions to an AWS account.
Create an S3 Bucket
BUCKET=<YOUR_BUCKET>
REGION=<YOUR_REGION>
aws s3api create-bucket \
--bucket $BUCKET \
--region $REGION \
--create-bucket-configuration LocationConstraint=$REGION
Create a velero user
aws iam create-user --user-name velero
Create an IAM policy document ./velero-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:DeleteObject",
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Resource": [
"arn:aws:s3:::${BUCKET}/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::${BUCKET}"
]
}
]
}
Attach the policy document:
aws iam put-user-policy \
--user-name velero \
--policy-name velero \
--policy-document file://velero-policy.json
Create an access key for the service account:
aws iam create-access-key --user-name velero
The result should look like:
{
"AccessKey": {
"UserName": "velero",
"Status": "Active",
"CreateDate": "2025-07-31T21:21:41.556Z",
"SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
"AccessKeyId": <AWS_ACCESS_KEY_ID>
}
}
Update the ./velero/s3-credentials-velero
file, or add these credentials to the environment prior to running the
backup or restore scripts.
[default]
aws_access_key_id=<AWS_ACCESS_KEY_ID>
aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>