)
使用 IBM Cloud Object Storage 作为 Velero 备份存储目的地IBM COS 配置指南【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本文是 Velero 官方文档中《Use IBM Cloud Object Storage as Veleros storage destination》的深度展开版对应仓库中的 ibm-config.md。它完整讲解了一条端到端的实战链路在 IBM Public / Private Cloud 或其他任何 Kubernetes 集群上部署 Velero并把 IBM Cloud Object StorageCOS作为备份的落地存储。读完本文你将掌握COS 实例与 S3 桶的创建要点、HMAC 服务凭证的获取方式、credentials-velero凭证文件的格式以及通过velero install一条命令完成安装并正确处理不支持卷快照这一平台限制的全部细节。背景与适用场景Velero 是一个用于备份、恢复和迁移 Kubernetes 应用及其持久化卷的开源工具。它本身不绑定特定云厂商而是通过对象存储 云厂商插件的方式接入不同后端。IBM Cloud Object Storage 对外提供AWS S3 兼容 API因此 Velero 可以把 COS 当作一个 S3 兼容的备份仓库来使用无需额外的专用插件。适用场景包括集群运行在 IBM Public CloudIBM Cloud Kubernetes Service或 IBM Private CloudIBM Cloud Private上集群托管在其他平台但希望把备份数据统一沉淀到 IBM COS 中已有 COS 桶与 IAM 体系希望复用现有凭证与网络策略。官方在文档 ibm-config.md 中明确给出了五步主线流程下载 Velero 官方发布包创建 COS 实例创建 S3 桶定义一个可向桶内写数据的服务服务凭证配置并启动 Velero 服务端。下面依次展开。第一步下载并准备 Velero 客户端获取官方 Release 包从 Velero 官方 GitHub Releases 页面下载最新官方 release对应的 tarball当前仓库即为 velero 官方项目本体可到仓库的 changelogs 目录了解各版本变更历史。官方文档特别强调强烈建议使用官方 release。每个 release 的 tarball 中都包含velero命令行客户端main分支上的代码处于持续开发中不能保证稳定。因此不要直接从主分支编译产物用于生产环境。解压并安装到 PATHtar -xvf RELEASE-TARBALL-NAME.tar.gz -C /dir/to/extract/to将解压目录记为Velero 目录后续步骤中会用到其中的velero二进制。然后把velero可执行文件移动到 PATH 中的某个目录# 示例将二进制软链/移动到 /usr/local/bin具体目录以你的 PATH 为准执行velero version或velero --help可验证客户端是否可用。第二步创建 COS 实例与 S3 桶创建 COS 实例如果你还没有 COS 实例需要先在 IBM Cloud 控制台中创建一个新的 Cloud Object Storage 资源实例resource instance。创建完成后在实例详情页可以找到该实例的访问端点access point信息后续velero install中的s3Url需要用到它。创建 S3 桶Velero 需要一个对象存储桶bucket来存放备份数据。在 COS 实例下按标准流程创建桶即可。创建时需要注意记录桶所在的region区域后续--backup-location-config中的region必须与桶实际所在区域一致桶的访问策略需允许后续创建的服务凭证写入。第三步定义可写桶的服务凭证HMAC 凭证COS 中通过服务凭证service credentials为应用程序授予访问桶的权限。官方文档对这一步给出了几条关键注意事项写入角色Velero 服务会把备份写入桶因此凭证至少需要Writer写入者访问角色。HMAC 凭证Velero 使用 AWS S3 兼容 API认证方式是使用一对 access key / secret key 生成的签名即一组HMAC 凭证。创建服务凭证时需要通过可选的内联参数{HMAC:true}显式启用 HMAC 凭证的生成。读取凭证服务凭证创建成功后可以查看该凭证的 JSON 定义。在cos_hmac_keys条目下能看到access_key_id与secret_access_key它们就是下一步要用的值。创建 credentials-velero 凭证文件在本地目录中创建 Velero 专用凭证文件credentials-velero内容格式如下[default] aws_access_key_idACCESS_KEY_ID aws_secret_access_keySECRET_ACCESS_KEY其中ACCESS_KEY_ID与SECRET_ACCESS_KEY替换为上一步从cos_hmac_keys中取到的值。该文件会通过velero install的--secret-file参数挂载进集群Velero 用它与 COS 交互。从源码看安装命令对--secret-file的处理在 pkg/cmd/cli/install/install.go会先通过filepath.Abs解析为绝对路径再读取其内容写入集群 Secret。因此该文件路径既可以是相对路径也可以是绝对路径。第四步安装并启动 Velero核心安装命令在集群中安装 Velero含全部前置依赖并启动 deployment。这一步会创建名为velero的命名空间并在其中放置名为velero的 deployment命名空间默认值可参见 pkg/cmd/cli/install/install.go取自velerov1api.DefaultNamespace。velero install \ --provider aws \ --bucket YOUR_BUCKET \ --secret-file ./credentials-velero \ --use-volume-snapshotsfalse \ --backup-location-config regionYOUR_REGION,s3ForcePathStyletrue,s3UrlYOUR_URL_ACCESS_POINT各参数含义如下参数取值示例说明--provideraws由于 COS 提供 S3 兼容 API这里使用aws作为对象存储提供方标识--bucketYOUR_BUCKET第二步创建的 S3 桶名称--secret-file./credentials-velero上一步创建的 HMAC 凭证文件--use-volume-snapshotsfalse关闭卷快照能力原因见下文平台限制小节--backup-location-configregion...,s3ForcePathStyletrue,s3Url...备份存储位置的配置格式为key1value1,key2value2其中--backup-location-config的三个配置键在 IBM COS 场景下的作用regionYOUR_REGION桶所在区域必须与桶实际区域一致s3ForcePathStyletrue强制使用path-style的 S3 URL 风格。COS 等 S3 兼容对象存储通常要求这种寻址方式区别于 AWS 默认的 virtual-hosted-styles3UrlYOUR_URL_ACCESS_POINTCOS 实例的访问端点access point地址。参数格式说明--backup-location-config在 install.go 中定义为Format is key1value1,key2value2的键值对列表安装时会转化为集群中的BackupStorageLocation资源。仓库中对s3Url等键的解析逻辑也体现在存储层实现中例如 pkg/repository/config/config.go 与 pkg/repository/provider/unified_repo.go 会读取 BSL 配置里的s3Url并解析其 host 与 path。平台限制IBM Cloud 暂无卷快照插件Velero 目前没有针对 IBM Cloud 的卷快照插件因此需要禁用卷快照创建。这正是命令中--use-volume-snapshotsfalse的原因。该参数在源码中的语义是是否自动创建快照位置SnapshotLocation参见 pkg/cmd/cli/install/install.go。对应的校验逻辑也在 install.go 中当--use-volume-snapshotstrue时--provider必填当--use-volume-snapshotsfalse时--snapshot-location-config必须为空。可选参数restic 与等待就绪你还可以追加以下参数--use-restic启用 restic 支持从而对持久化卷做文件系统级备份在 v1.0.0 时代的 CLI 中即为该参数--wait等待 deployment 就绪后再返回。版本演进说明当前仓库主分支中的 install 命令已把文件系统级备份参数演进为--use-node-agent可参见 pkg/cmd/cli/install/install.go 的用法示例v1.0.0 时代的--use-restic对应的是同一类能力。若你安装的是新版 Velero请以当前版本 CLI 的--help输出为准。安装完成后删除默认的 VolumeSnapshotLocationvelero install默认会创建一个名为default的VolumeSnapshotLocation资源它是为 AWS 定制的在 IBM Cloud 上无法工作需要手动删除kubectl -n velero delete volumesnapshotlocation.velero.io default更复杂的安装需求如果你的安装场景更复杂如自定义资源配额、Toleration、额外的环境变量等官方文档给出两条路径使用 Helm chart进行参数化安装给velero install追加--dry-run -o yaml选项只生成 YAML 清单而不实际部署便于审阅、修改后再用kubectl apply落盘。第五步可选安装 nginx 示例并接入 PVC仓库的 examples/nginx-app/with-pv.yaml 提供了一个带 PVC 的 nginx 示例应用可用于验证 COS 备份链路。若你要运行它打开examples/nginx-app/with-pv.yaml找到 PVC 的 spec对应仓库中的 with-pv.yaml取消注释并替换storageClassNamekind: PersistentVolumeClaim apiVersion: v1 metadata: name: nginx-logs namespace: nginx-example spec: # Optional: storageClassName: YOUR_STORAGE_CLASS_NAME # 取消注释并替换为你的 StorageClass 名称 accessModes: - ReadWriteOnce resources: requests: storage: 50Mi该示例还演示了 Velero 的备份钩子hooks用法deployment 中的nginx容器写入/var/log/nginx同时通过注解pre.hook.backup.velero.io/.../post.hook.backup.velero.io/...让fsfreezesidecar 在备份前后冻结/解冻文件系统确保日志文件一致性见 with-pv.yaml。这在验证PVC 文件系统级备份 恢复时非常实用。验证与后续操作安装与示例就绪后可以通过以下方式验证备份链路是否打通# 查看 velero 命名空间下的资源 kubectl -n velero get all # 发起一次 on-demand 备份 velero backup create ibm-cos-demo --include-namespaces nginx-example # 观察备份状态 velero backup describe ibm-cos-demo velero backup get # 备份完成后可查看 COS 桶中是否已出现备份对象如果备份成功说明COS 实例 → S3 桶 → HMAC 凭证 →credentials-velero→BackupStorageLocation这条链路已全部打通后续恢复只需执行velero restore create --from-backup ibm-cos-demo即可。小结Velero 借助AWS S3 兼容 API可以无缝接入 IBM Cloud Object Storage适用于 IBM Public / Private Cloud 乃至任何自建 Kubernetes 集群关键配置点是COS 实例的access points3Url、桶所在region、带Writer 角色 HMAC 凭证的服务凭证以及 path-style 寻址开关s3ForcePathStyletrue由于 IBM Cloud 暂无卷快照插件安装时必须使用--use-volume-snapshotsfalse并删除 install 自动创建的 AWS 专用defaultVolumeSnapshotLocation复杂场景可借助 Helm chart 或velero install --dry-run -o yaml生成并定制 YAML。完整的官方原文请参阅 site/content/docs/v1.0.0/ibm-config.md安装命令的实现细节可继续阅读 pkg/cmd/cli/install/install.go。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考