Skip to content

How to connect Dell EMC ECS and Velero to backup a Kubernetes cluster

License

Notifications You must be signed in to change notification settings

chrisjen83/velero-ecs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Installation of Velero for Dell EMC ECS.

This procedure has been based on Velero 1.2.0 and Dell EMC ECS 3.4.

Provider - will be AWS (this plugin uses S3 Compatibility) this means it will work with ECS.

Plugin - this will deploy a container in the Velero Pod which will PUT and GET data in and out of the S3 endpoint.

Bucket - this will be the name of he bucket you have created for Velero.

Secret - this is where you will put in your ECS Access Key and Secret in the AWS CLI credentials format.

Velero AWS Secret file syntax. These details can be extracted from the ECS GUI.

[default]
aws_access_key_id = <ECS_ACCESS_KEY>
aws_secret_access_key = <ECS_SECRET>

To install Velero use the below command replacing bucket, s3URL with your site's specific information.

For specific configuration options for backup-location-config for the AWS provider go to this URL.

velero install \

> --provider aws \
> --plugins velero/velero-plugin-for-aws:v1.0.0 \
> --bucket <BUCKET_NAME> \
> --secret-file ./credentials-velero \
> --use-volume-snapshots=false \
> --region=us-east-1 \
> --backup-location-config s3ForcePathStyle="true",s3Url=https://<ECS_S3_URL>

When the installation of the Velero Server in your Kubernetes cluster has been successful you should see the below results.

CustomResourceDefinition/backups.velero.io: attempting to create resource
CustomResourceDefinition/backups.velero.io: created
CustomResourceDefinition/backupstoragelocations.velero.io: attempting to create resource
CustomResourceDefinition/backupstoragelocations.velero.io: created
CustomResourceDefinition/deletebackuprequests.velero.io: attempting to create resource
CustomResourceDefinition/deletebackuprequests.velero.io: created
CustomResourceDefinition/downloadrequests.velero.io: attempting to create resource
CustomResourceDefinition/downloadrequests.velero.io: created
CustomResourceDefinition/podvolumebackups.velero.io: attempting to create resource
CustomResourceDefinition/podvolumebackups.velero.io: created
CustomResourceDefinition/podvolumerestores.velero.io: attempting to create resource
CustomResourceDefinition/podvolumerestores.velero.io: created
CustomResourceDefinition/resticrepositories.velero.io: attempting to create resource
CustomResourceDefinition/resticrepositories.velero.io: created
CustomResourceDefinition/restores.velero.io: attempting to create resource
CustomResourceDefinition/restores.velero.io: created
CustomResourceDefinition/schedules.velero.io: attempting to create resource
CustomResourceDefinition/schedules.velero.io: created
CustomResourceDefinition/serverstatusrequests.velero.io: attempting to create resource
CustomResourceDefinition/serverstatusrequests.velero.io: created
CustomResourceDefinition/volumesnapshotlocations.velero.io: attempting to create resource
CustomResourceDefinition/volumesnapshotlocations.velero.io: created
Waiting for resources to be ready in cluster...
Namespace/velero: attempting to create resource
Namespace/velero: created
ClusterRoleBinding/velero: attempting to create resource
ClusterRoleBinding/velero: created
ServiceAccount/velero: attempting to create resource
ServiceAccount/velero: created
Secret/cloud-credentials: attempting to create resource
Secret/cloud-credentials: created
BackupStorageLocation/default: attempting to create resource
BackupStorageLocation/default: created
Deployment/velero: attempting to create resource
Deployment/velero: created
Velero is installed! ⛵ Use 'kubectl logs deployment/velero -n velero' to view the status.

Now via kubectl check that the Velero Pod inside of the Velero namespace has been created and running.

# kubectl get pods --all-namespaces
NAMESPACE     NAME                                   READY   STATUS    RESTARTS   AGE
kube-system   coredns-584795fc57-5lmkm               1/1     Running   0          3h26m
kube-system   coredns-584795fc57-gwqkd               1/1     Running   0          3h26m
kube-system   etcd-minikube                          1/1     Running   0          3h26m
kube-system   kube-addon-manager-minikube            1/1     Running   0          3h25m
kube-system   kube-apiserver-minikube                1/1     Running   0          3h25m
kube-system   kube-controller-manager-minikube       1/1     Running   0          3h25m
kube-system   kube-proxy-fbsfh                       1/1     Running   0          3h26m
kube-system   kube-scheduler-minikube                1/1     Running   0          3h25m
kube-system   kubernetes-dashboard-d7c9687c7-kwr97   1/1     Running   0          3h26m
kube-system   logviewer-864bbcc945-6cz7b             1/1     Running   0          3h26m
kube-system   storage-provisioner                    1/1     Running   0          3h26m
velero        velero-f67877796-znf2f                 1/1     Running   0          2m16s

If your Velero pod is in the Running STATUS you can use the below command to verify everything is working with Velero.

# kubectl --namespace velero logs <VELERO_POD_NAME>

If anything has gone wrong in the installation then you should see it in the logs here.

Assuming there are no issues lets go ahead and create our first backup.

The below command is a simple backup job which is looking only at the application nginx which as been installed on the same Kubernetes cluster.

# velero backup create <BACKUP_NAME> --selector app=nginx

To see the progress of your backup job use the below command.

 # velero backup describe <BACKUP_NAME>
 
Name:         nginx-backup
Namespace:    velero
Labels:       velero.io/storage-location=default
Annotations:  <none>

Phase:  Completed

Namespaces:
  Included:  *
  Excluded:  <none>

Resources:
  Included:        *
  Excluded:        <none>
  Cluster-scoped:  auto

Label selector:  app=nginx

Storage Location:  default

Snapshot PVs:  auto

TTL:  720h0m0s

Hooks:  <none>

Backup Format Version:  1

Started:    2020-02-07 12:55:20 +1100 AEDT
Completed:  2020-02-07 12:55:23 +1100 AEDT

Expiration:  2020-03-08 12:55:20 +1100 AEDT

Persistent Volumes: <none included>

To see the logs of your backup you can use the below command.

# velero backup logs <BACKUP_NAME>

On Dell EMC ECS you should now see in your created bucket a folder called backup and then another folder called the backup name. Below is an example of what you should see on the ECS S3 storage.

velero_ecs_backup

About

How to connect Dell EMC ECS and Velero to backup a Kubernetes cluster

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published