在 AWS 上部署 Ark(Velero 前身)备份 Kubernetes:S3 存储桶、IAM 权限与云凭证配置完整指南

发布时间:2026/9/17 5:09:02

在 AWS 上部署 Ark(Velero 前身)备份 Kubernetes:S3 存储桶、IAM 权限与云凭证配置完整指南 在 AWS 上部署 ArkVelero 前身备份 KubernetesS3 存储桶、IAM 权限与云凭证配置完整指南【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读本文以当前仓库中 Heptio Ark v0.7.0 的官方部署文档 aws-config.md 为骨架完整讲解如何在 AWS 上部署 ArkVelero 的前身用于备份和迁移 Kubernetes 应用及其持久化卷。读完本文你将掌握完整的四步部署路径创建 S3 存储桶 → 创建并授权 IAM 用户 → 配置 Ark 服务器与云凭证 Secret → 启动服务器并深入理解Config自定义资源中与 AWS/S3 兼容存储相关的全部参数含义。这些知识与今天 Velero 的BackupStorageLocation配置一脉相承对理解 Velero 的 AWS 与 S3 兼容存储体系依然有直接价值。部署前置条件在 AWS 上运行 Ark需要依次完成四件事创建 S3 存储桶用于存放备份数据为 Ark 创建 AWS IAM 用户授予 S3 与 EC2 快照所需权限配置 Ark 服务器Config 自定义资源 Deployment 环境变量为云凭证创建 Kubernetes Secret。如果你的本地机器还没有安装aws命令行工具请先按照 AWS 官方用户指南完成安装与配置。此外本指南基于 Ark v0.7.0 时期的目录结构展开其中 v0.7.0 相关文档位于 site/content/docs/v0.7.0/整个 v0.7.0 版本的 Ark 概览可参考 v0.7.0 文档首页。创建 S3 存储桶Ark 需要一个对象存储桶来存放备份。使用aws s3api create-bucket创建注意替换其中的YOUR_BUCKET与YOUR_REGION占位符aws s3api create-bucket \ --bucket YOUR_BUCKET \ --region YOUR_REGION \ --create-bucket-configuration LocationConstraintYOUR_REGION注意us-east-1区域不支持LocationConstraint参数。如果区域是us-east-1请省略存储桶配置参数直接执行aws s3api create-bucket \ --bucket YOUR_BUCKET \ --region us-east-1创建 IAM 用户并授权Ark 服务器进程需要访问 S3读写备份文件与 EC2创建/恢复卷快照的权限因此需要创建一个专用的 IAM 用户文档中命名为heptio-ark而不是使用根账号或过于宽泛的凭证。1. 创建 IAM 用户aws iam create-user --user-name heptio-ark2. 附加策略授予必要权限将 AWS 托管策略AmazonS3FullAccess与AmazonEC2FullAccess附加给该用户aws iam attach-user-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess \ --user-name heptio-ark aws iam attach-user-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess \ --user-name heptio-ark其中AmazonS3FullAccess负责备份数据的上传与读取AmazonEC2FullAccess负责持久化卷快照的创建与回滚。在实际生产环境中通常建议进一步收敛为最小权限的自定义策略例如仅允许指定桶的s3:PutObject/s3:GetObject以及指定卷的快照操作但 v0.7.0 文档采用 AWS 托管策略以保证开箱即用。3. 创建访问密钥aws iam create-access-key --user-name heptio-ark返回结果形如{ AccessKey: { UserName: heptio-ark, Status: Active, CreateDate: 2017-07-31T22:24:41.576Z, SecretAccessKey: AWS_SECRET_ACCESS_KEY, AccessKeyId: AWS_ACCESS_KEY_ID } }请务必妥善保管输出的AccessKeyId与SecretAccessKey它们只在创建时展示一次。4. 生成本地凭证文件在本地目录创建 Ark 专用凭证文件credentials-ark[default] aws_access_key_idAWS_ACCESS_KEY_ID aws_secret_access_keyAWS_SECRET_ACCESS_KEY其中AWS_ACCESS_KEY_ID与AWS_SECRET_ACCESS_KEY来自上一步create-access-key的返回值。该文件采用 AWS 共享凭证文件的标准 INI 格式字段名与 AWS CLI 使用的凭证文件完全一致。凭证与配置第一步创建命名空间、RBAC 等基础资源在 Ark 根目录下先应用预置文件以创建自定义资源定义CRD、命名空间、服务账号与 RBAC 规则kubectl apply -f examples/common/00-prereqs.yaml关于00-prereqs.yaml具体定义的内容Ark 各类对象的 CRD、Ark 命名空间、服务账号与授权规则可参考 v0.7.0 文档 namespace.md。如果要在自定义命名空间中运行需要先编辑相关 YAML 文件指定命名空间详见下文「在自定义命名空间中运行」小节。需要说明的是当前仓库的examples/目录结构已随 Velero 版本演进做了重组v0.7.0 时代的examples/common/00-prereqs.yaml、examples/aws/00-ark-config.yaml已不再保留现仓库保留了examples/minio/00-minio-deployment.yaml本地 S3 兼容存储与examples/nginx-app/示例应用。因此在现代版本中请以 examples/minio/00-minio-deployment.yaml 与 examples/nginx-app/with-pv.yaml 为参照而本节以下命令为 v0.7.0 文档的原始步骤适用于 checkout 该版本源码的场景。第二步创建云凭证 Secret在刚才创建凭证文件的目录中执行kubectl create secret generic cloud-credentials \ --namespace ARK_NAMESPACE \ --from-file cloudcredentials-ark这里的关键点--from-file cloudcredentials-ark将本地文件内容以 key 为cloud的形式写入 SecretARK_NAMESPACE需替换为 Ark 所在命名空间默认heptio-ark该 Secret 随后会被挂载进 Ark 服务器 Pod供 AWS SDK 读取。第三步修改示例文件中的占位符需要修改三处示例文件1.examples/aws/00-ark-config.yaml将YOUR_BUCKET与YOUR_REGION替换为实际值。该文件对应 Ark 的Config自定义资源其中 AWS 相关参数的完整定义见 config-definition.md。2.examples/common/10-deployment.yaml确认spec.template.spec.containers[*].env.name为AWS_SHARED_CREDENTIALS_FILE。Ark 服务器容器通过该环境变量告诉 AWS SDK 凭证文件即挂载的cloudSecret 内容所在路径这是 Ark 在 AWS 上正确读取credentials-ark凭证的机制核心。3.可选examples/nginx-app/with-pv.yaml如果运行 nginx 示例将YOUR_STORAGE_CLASS_NAME替换为gp2这是 AWS 默认的StorageClass名称。该文件在现仓库中的版本可见 examples/nginx-app/with-pv.yaml其中同时演示了通过pre.hook.backup.velero.io/post.hook.backup.velero.io注解在备份前后执行fsfreeze冻结/解冻文件系统的用法保证卷内数据一致性。启动 Ark 服务器在 Ark 根目录依次执行kubectl apply -f examples/aws/00-ark-config.yaml kubectl apply -f examples/common/10-deployment.yamlArk 服务器以 Kubernetes Deployment 形式运行。根据 config-definition.md 的说明服务器首次部署后会等待名为default的Config对象出现在heptio-ark命名空间如果后续修改了defaultConfig服务器会优雅关闭待 kubelet 重启 Pod 后使用新配置。启动完成后即可使用ark命令行客户端执行备份与恢复ark backup create、ark restore create完整的端到端验证流程含带 PV 的快照备份与灾难恢复演练见 cloud-common.md。深入理解Config 中的 AWS/S3 兼容存储参数AWS 配置的灵魂在 Ark 的Config自定义资源中。一个完整的 AWS 配置示例如下apiVersion: ark.heptio.com/v1 kind: Config metadata: namespace: heptio-ark name: default persistentVolumeProvider: name: aws config: region: us-west-2 backupStorageProvider: name: aws bucket: ark config: region: us-west-2 backupSyncPeriod: 60m gcSyncPeriod: 60m scheduleSyncPeriod: 1m restoreOnlyMode: false主配置参数Key类型默认值含义persistentVolumeProviderCloudProviderConfigNone可选集群持久化卷所用云厂商的配置用于快照。不设置时请求 PV 快照的备份/恢复将被视为无效。persistentVolumeProvider/nameStringNone可选持久化卷云厂商名称。Ark 原生支持aws、gcp、azure其他厂商可经外部插件提供。persistentVolumeProvider/configmap[string]stringNone可选传递给云厂商的持久化卷配置键值对AWS 仅需region。backupStorageProviderCloudProviderConfig必填实际存放备份文件的云厂商配置。backupStorageProvider/nameString必填备份存储云厂商名称aws/gcp/azure或插件。backupStorageProvider/bucketString必填备份上传的目标存储桶。backupStorageProvider/configmap[string]stringNone可选传递给备份存储云厂商的配置键值对。backupSyncPeriodmetav1.Duration60m0sArk 查询对象存储以同步 Backup 资源对象的频率。gcSyncPeriodmetav1.Duration60m0sArk 查询对象存储以删除已超过 TTL 的备份文件的频率。scheduleSyncPeriodmetav1.Duration1m0sArk 检查 Schedule 资源以判断是否需要触发备份的频率。restoreOnlyModeboolfalse开启后备份、调度与过期备份删除功能全部关闭仅从对象存储中的既有备份执行恢复。backupStorageProvider/configAWS 或 S3 兼容存储Key类型默认值含义regionstring必填存储桶所在区域例如us-east-1。s3ForcePathStyleboolfalse使用 Minio 等本地存储服务时设为true。s3Urlstring非 AWS 托管存储时必填例如http://minio:9000。AWS S3 场景可省略Ark 可根据region、bucket自动生成 URL此字段主要面向 Minio 等本地服务。kmsKeyIdstring空指定 AWS KMS 密钥 ID 或别名如alias/KMS-Key-Alias-Name以启用 S3 备份加密仅适用于 AWS S3可能需要显式授予密钥使用权限。persistentVolumeProvider/config仅 AWSKey类型默认值含义regionstring必填PV 快照所在区域例如us-east-1。上述s3ForcePathStyle与s3Url两个参数是 Ark 支持“非 AWS 的 S3 兼容对象存储”的关键在现仓库中本地快速体验方案正是利用这一点通过 examples/minio/00-minio-deployment.yaml 在集群内起一个 Minio再在配置中指向http://minio:9000并开启 path-style 访问从而在完全离线的环境下走通 Ark/Velero 的备份恢复全流程。在自定义命名空间中运行Ark v0.7.0 起支持在任意命名空间运行操作分两步编辑示例文件指定命名空间编辑examples/common/00-prereqs.yaml定义 CRD、Ark 命名空间、服务账号与 RBACAWS 场景还需编辑examples/aws/00-ark-config.yaml与examples/common/10-deployment.yaml。各云厂商需要修改的文件清单详见 namespace.md。客户端命令指定命名空间执行ark client config set namespaceNAMESPACE_VALUE即可让所有ark客户端命令指向自定义命名空间例如ark backup create、ark restore create、ark restore get、ark restore describe都会自动带上该命名空间。部署后的端到端验证带 PV 快照场景服务器启动成功后可以用带持久化卷的 nginx 示例验证 AWS 场景下“备份 → 灾难 → 恢复”的完整链路# 1. 启动带 PV 的示例应用 kubectl apply -f examples/nginx-app/with-pv.yaml # 2. 创建备份包含 PV 快照 ark backup create nginx-backup --include-namespaces nginx-example # 3. 模拟灾难删除命名空间 kubectl delete namespaces nginx-example由于动态制备 PV 的默认回收策略是 Delete删除命名空间会触发云厂商异步删除底层磁盘务必先确认 AWS 侧磁盘已被删除再执行恢复。# 4. 从备份恢复 ark restore create nginx-backup执行ark restore get可观察恢复状态进行中为InProgress成功后为Completed且WARNINGS、ERRORS均为 0如有告警或错误可用ark restore describe RESTORE_NAME查看细节。完整的无 PV / 有 PV 两套演练流程见 cloud-common.md。小结在 AWS 上部署 ArkVelero 前身的关键路径清晰且可复现S3 存储桶提供备份数据的持久化载体IAM 用户隔离 Ark 对 S3 与 EC2 的访问权限credentials-ark凭证文件 Kubernetes Secret AWS_SHARED_CREDENTIALS_FILE环境变量完成服务器侧的云身份注入而Config自定义资源中的backupStorageProvider/persistentVolumeProvider及其 AWS 参数region、s3ForcePathStyle、s3Url、kmsKeyId决定了备份的存放与快照行为。这套设计奠定了 Velero 后续版本对象存储与快照体系的基石——理解它也就理解了现代 Velero 在 AWS 与各类 S3 兼容存储上配置的来龙去脉。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/17 5:09:02

WS2812驱动实战:时序精度、信号完整性与工业级避坑指南

1. 为什么WS2812不是“普通LED”,而是一套精密的微型嵌入式系统?WS2812这三个字母,对刚接触智能灯带的朋友来说,可能只是淘宝搜索框里敲出的几个字符;但对做过三年以上嵌入式开发、亲手焊过几十块PCB、在凌晨三点调试过…

2026/9/17 5:09:02

Mask2Former实战:一套架构统一语义/实例/全景分割

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/17 5:04:02

智能体评测体系搭建实战:从架构设计到判分机制

做智能体开发这段时间,我最大的感触是:写一个能跑通的Agent不难,难的是你根本说不清它到底行不行。同一个任务,今天跑通明天翻车,换几个字描述结果就完全不一样,你说它聪明吧,偶尔蠢得离谱&…

2026/9/17 6:09:04

Python爬取Boss直聘大数据岗位并进行数据清洗与可视化分析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/17 6:04:04

Linux运维必备:构建可复用的Shell脚本库与自动化巡检体系

简介:面向Linux运维工程师及shell初学者,这份PDF系统整理了日常高频使用的自动化脚本,覆盖日志错误过滤、服务连通性检查、旧文件清理、目录备份压缩、批量Ping多主机、SCP远程传输、用户home目录校验、日志实时监控等典型场景,并…

2026/9/16 12:52:37

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/17 0:03:13

WiFi密码安全测试:从原理到实战的字典暴力破解指南

1. 写在前面:我为什么要研究WiFi密码这件事先交代一下背景。我身边有不少朋友,家里的WiFi密码常年是"12345678"或者"88888888",问就是"好记"。直到有一次,隔壁邻居蹭网蹭到我家路由器后台都进不去&…

2026/9/17 0:03:13

redis-py服务控制与监控函数实战:从ping到slowlog的巡检指南

我用 redis-py 写了快五年的业务代码,坦白说,真正让我觉得这个客户端“像一个成熟工具箱”的,不是 get/set 那套基本操作,而是它那批专门做服务控制与状态监控的辅助函数。日常开发里,大家把redis.Redis(host..., deco…

2026/9/17 0:03:13

SpringBoot+Vue3实现中小企业设备管理系统开发实践

1. 项目概述与核心价值中小企业设备管理系统是制造业、服务业等领域的基础信息化工具。传统设备管理往往依赖Excel表格或纸质记录,存在数据孤岛、流程混乱、维护成本高等痛点。这套基于Java SpringBootVue3MyBatis的技术方案,通过前后端分离架构实现了设…

2026/9/16 22:55:57

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/16 22:56:09

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/16 22:56:16

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码