4. Velero 安装与配置:CLI、Helm Chart 与 MinIO/S3 存储后端
本章聚焦 Velero 在生产环境中的完整安装链路:CLI 工具用于日常运维与手动触发备份,Helm Chart 用于声明式部署控制平面组件,MinIO/S3 兼容存储作为备份数据的持久化后端。三者协同构成灾备准入测试的基础设施层。
4.1 Velero CLI 安装
Velero CLI 是操作备份/恢复任务的核心客户端,支持 Linux、macOS 与 Windows。以下以 Linux amd64 为例:
# 下载最新稳定版(v1.14.x 系列)
wget https://github.com/vmware-tanzu/velero/releases/download/v1.14.1/velero-v1.14.1-linux-amd64.tar.gz
# 解压并安装到系统路径
tar -xzf velero-v1.14.1-linux-amd64.tar.gz
sudo mv velero-v1.14.1-linux-amd64/velero /usr/local/bin/
# 验证安装
velero version --client-only
版本对齐建议:CLI 版本必须与后续 Helm Chart 部署的 server 版本一致,否则可能出现 API 不兼容。建议统一使用 v1.14.x 系列。
4.2 Helm Chart 部署 Velero 控制平面
使用 Helm 3 部署 Velero 到目标集群,推荐将配置参数写入 values 文件以便版本化管理。
4.2.1 添加 Helm 仓库
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts
helm repo update
4.2.2 创建命名空间与存储密钥
MinIO 访问凭证以 Secret 形式注入 Velero 部署:
kubectl create namespace velero
# 创建 MinIO 访问密钥 Secret(示例凭据,生产环境需替换)
kubectl -n velero create secret generic velero-minio-credentials \
--from-literal=aws_access_key_id=minioadmin \
--from-literal=aws_secret_access_key=minioadmin
4.2.3 准备 values 文件
以下为生产级 values.yaml 核心配置片段:
configuration:
provider: aws
backupStorageLocation:
- name: default
provider: aws
bucket: velero-backups
config:
region: us-east-1
s3ForcePathStyle: "true"
s3Url: http://minio.minio-system.svc:9000
volumeSnapshotLocation:
- name: default
provider: aws
config:
region: us-east-1
extraEnvVars:
- name: AWS_SHARED_CREDENTIALS_FILE
value: /credentials/cloud
credentials:
useSecret: true
secretContents:
cloud: |
[default]
aws_access_key_id = minioadmin
aws_secret_access_key = minioadmin
initContainers:
- name: velero-plugin-for-aws
image: velero/velero-plugin-for-aws:v1.10.0
volumeMounts:
- mountPath: /target
name: plugins
serviceAccount:
server:
create: true
name: velero-server
4.2.4 执行部署
helm upgrade --install velero vmware-tanzu/velero \
--namespace velero \
--values values.yaml \
--version 7.1.0
关键检查点:部署完成后,务必确认
velero Pod 处于 Running 状态,且 velero backup-location get 返回的存储后端状态为 Available。
4.3 MinIO/S3 存储后端配置
MinIO 作为 S3 兼容对象存储,是 Velero 最常用的本地测试后端。以下为部署与对接要点。
4.3.1 MinIO 部署(Kubernetes 内)
# 使用 Helm 部署 MinIO 到 minio-system 命名空间
helm repo add minio https://charts.min.io/
helm upgrade --install minio minio/minio \
--namespace minio-system --create-namespace \
--set rootUser=minioadmin,rootPassword=minioadmin \
--set persistence.size=50Gi \
--set buckets[0].name=velero-backups,buckets[0].policy=public
4.3.2 存储后端参数对照表
| 参数 | MinIO 值 | AWS S3 值 | 说明 |
|---|---|---|---|
provider |
aws | aws | Velero 统一使用 aws 插件 |
s3Url |
http://minio.minio-system.svc:9000 | https://s3.amazonaws.com | MinIO 需显式指定 endpoint |
s3ForcePathStyle |
true | false | MinIO 必须启用 path-style |
region |
us-east-1 | 实际区域 | MinIO 忽略 region 值 |
bucket |
velero-backups | 自定义桶名 | 需提前创建 |
4.3.3 验证存储后端连通性
# 创建测试备份以验证后端写入
velero backup create test-backup --include-namespaces default
# 查看备份状态
velero backup get
# 预期输出:test-backup 状态为 Completed
架构要点:MinIO 部署在同一集群内时,建议使用
ClusterIP Service 通信,避免网络延迟与安全策略干扰。跨集群场景则需暴露 NodePort 或 Ingress,并配置 TLS。
4.4 安装架构总览
下图展示 Velero 控制平面、MinIO 存储后端与目标集群之间的组件关系与数据流:
4.5 安装后验证清单
完成部署后,按以下清单逐项确认:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| Pod 状态 | kubectl -n velero get pods |
velero-xxx 为 Running |
| 存储后端可用 | velero backup-location get |
STATUS 列为 Available |
| 快照位置可用 | velero snapshot-location get |
STATUS 列为 Available |
| 测试备份 | velero backup create test --ttl 1h |
备份状态为 Completed |
| MinIO 对象存在 | MinIO Console 或 mc 客户端 | velero-backups 桶内有备份数据 |
生产建议:MinIO 应配置
persistence.storageClass 为高可用存储类,并设置 replicas: 4 以保障数据冗余。Velero 的 backupSyncPeriod 建议设为 30s,以快速感知新备份。