
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker-backup-kubernetes是一个基于https://github.com/backup/backup%E5%B7%A5%E5%85%B7%E7%9A%84Docker%E9%95%9C%E5%83%8F%EF%BC%8C%E7%94%A8%E4%BA%8E%E5%9C%A8Kubernetes%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%9C%E4%B8%BA%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1%EF%BC%88Cron Job)执行数据备份操作。它提供了灵活的配置方式,支持多种数据库备份、外部存储、加密、压缩及通知功能,适用于Kubernetes集群中的自动化数据备份场景。
1. 创建ConfigMap配置备份策略
通过ConfigMap定义备份模型(model),包括数据库配置、存储配置、加密设置、压缩方式和通知配置。
2. 创建CronJob定时执行备份
配置Kubernetes CronJob,指定执行 schedule、挂载ConfigMap、设置环境变量,并定义执行命令。
ConfigMap配置
yaml--- apiVersion: v1 kind: ConfigMap metadata: name: backup-config namespace: "my-namespace" # 替换为实际命名空间 data: backup.rb: | # encoding: utf-8 # 定义备份模型,名称为:backup,描述为"Backup databases to s3" Model.new(:backup, 'Backup databases to s3') do ## # PostgreSQL数据库备份配置 # database PostgreSQL, :de do |db| db.username = ENV['POSTGRES_USER'].dup # 从环境变量获取数据库用户名 db.password = ENV['POSTGRES_PASSWORD'].dup # 从环境变量获取数据库密码 db.host = "postgres-service" # 替换为实际PostgreSQL服务名称 end ## # S3存储配置 # store_with S3 do |s3| # AWS凭证(从环境变量获取) s3.access_key_id = ENV['AWS_ACCESS_KEY_ID'].dup s3.secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'].dup s3.region = 'eu-central-1' # 替换为实际S3区域 s3.bucket = 'my-backup' # 替换为实际S3桶名称 s3.path = '/s3-path' # 替换为S3中的存储路径 end ## # OpenSSL加密配置 # encrypt_with OpenSSL do |encryption| encryption.password = ENV['DATABASE_ENCR_PASSWORD'].dup # 从环境变量获取加密密码 encryption.base64 = true # 使用base64编码 encryption.salt = true # 使用salt end # 使用Gzip压缩备份文件 compress_with Gzip ## # Slack通知配置 # notify_by Slack do |slack| slack.on_success = true # 成功时通知 slack.on_warning = true # 警告时通知 slack.on_failure = true # 失败时通知 slack.webhook_url = 'URL' # 替换为实际Slack Webhook URL end end
CronJob配置
yaml--- apiVersion: batch/v1beta1 kind: CronJob metadata: name: database-backup namespace: "my-namespace" # 与ConfigMap相同的命名空间 spec: schedule: "0 2 * * *" # 每天凌晨2点执行(Cron表达式) successfulJobsHistoryLimit: 1 # 保留1个成功任务历史 failedJobsHistoryLimit: 1 # 保留1个失败任务历史 jobTemplate: spec: backoffLimit: 4 # 失败后重试次数 template: spec: terminationGracePeriodSeconds: 0 restartPolicy: Never volumes: - name: backup-config # 定义卷,挂载ConfigMap configMap: name: backup-config # 关联前面创建的ConfigMap containers: - name: backup image: steffenmllr/docker-backup-kubernetes:v4.4.1 # 使用指定版本镜像 imagePullPolicy: Always volumeMounts: - name: backup-config # 挂载卷到容器内路径 mountPath: /tmp/models env: # 环境变量配置(从Secret获取敏感信息) - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: app-secrets # 替换为实际Secret名称 key: POSTGRES_PASSWORD # Secret中存储密码的key - name: POSTGRES_USER valueFrom: secretKeyRef: name: app-secrets key: POSTGRES_USER - name: DATABASE_ENCR_PASSWORD valueFrom: secretKeyRef: name: app-secrets key: DATABASE_ENCR_PASSWORD - name: AWS_ACCESS_KEY_ID valueFrom: secretKeyRef: name: app-secrets key: AWS_ACCESS_KEY_ID - name: AWS_SECRET_ACCESS_KEY valueFrom: secretKeyRef: name: app-secrets key: AWS_SECRET_ACCESS_KEY command: # 容器执行命令 - "/bin/sh" - "-c" - | # 生成备份模型 backup generate:model --trigger backup --databases="postgresql" # 将ConfigMap中的配置文件复制到备份工具的模型目录 cp /tmp/models/backup.rb /root/Backup/models/backup.rb # 执行备份 backup perform --trigger backup
| 环境变量名称 | 描述 | 来源 |
|---|---|---|
| POSTGRES_USER | PostgreSQL数据库用户名 | Kubernetes Secret |
| POSTGRES_PASSWORD | PostgreSQL数据库密码 | Kubernetes Secret |
| DATABASE_ENCR_PASSWORD | 备份文件加密密码 | Kubernetes Secret |
| AWS_ACCESS_KEY_ID | AWS S3访问密钥ID | Kubernetes Secret |
| AWS_SECRET_ACCESS_KEY | AWS S3访问密钥 | Kubernetes Secret |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务