
【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载本篇技术指南围绕stable/katafygio这个 Helm Chart讲解如何将 Katafygio 部署到 Kubernetes 集群它通过 Kubernetes API 持续监听集群中的 Deployment、Service、ConfigMap 等对象并实时以 YAML 文件的形式写入并提交到Git 仓库从而为集群提供连续备份与完整变更历史。读完本文你将掌握该 Chart 的安装、卸载流程理解localDir、gitUrl、excludeKind、excludeObject、filter、resyncInterval等全部核心配置参数的含义与默认值并能依据仓库模板源码判断每个配置项实际是如何转换为容器启动参数的。说明该 Chart 与整个 charts 仓库一样自 2020 年 11 月 13 日起不再更新详见仓库 README.md 顶部的归档声明与 Chart.yaml 中的deprecated: true标记本文内容以当前仓库中实际存在的版本Chart 1.0.3 / 应用 0.8.1为准。Katafygio 是什么Katafygio 是一个面向 Kubernetes 的“集群备份助手”。它持续监听集群中各类对象Deployment、Service、ConfigMap、Secret 等一旦发现新建、修改或删除就立刻把对象的完整 YAML 表达同步写入本地目录并通过 Git 提交保留每一次变更从而形成实时、连续的备份集群内容的每一次变化都会被及时落盘详细的变更历史借助 Git 的提交记录可以追溯某个对象在任意时刻的状态甚至 diff 出两次变更之间的差异。默认情况下Chart 会把集群内容 dump 到 Pod 内的/var/lib/katafygio/data可通过localDir配置此时已经足以提供一份带变更历史的本地备份如果希望实现集群外、长期、可集中访问的持久化可以配置gitUrl指向一个远程 Git 仓库Katafygio 会把所有本地提交实时推送到该远端。前置条件Kubernetes 1.9 集群已安装并配置好 Helm 客户端若集群启用了 RBACKubernetes 1.9 默认启用Chart 默认会创建所需的 RBAC 资源rbac.createtrue。安装 Chart最简单的安装方式使用默认参数$ helm install stable/katafygio指定发布名称安装$ helm install --name my-release stable/katafygio安装完成后Chart 会在终端打印使用提示见 templates/NOTES.txtKatafygio 正在把集群内容 dump 并版本化到localDir指定目录你可以通过如下命令进入 Pod 查看该“本地仓库”kubectl exec -i -t --namespace namespace $(kubectl get pods --namespace namespace -l appkatafygio -o jsonpath{.items[0].metadata.name}) ls /var/lib/katafygio/data如果配置了gitUrlNOTES 会提示“本地仓库的变更正被实时推送到远端”否则会提示你配置gitUrl以获得远端持久化。卸载 Chart要卸载名为my-release的部署$ helm delete my-release该命令会移除 Chart 关联的所有 Kubernetes 组件Deployment、ServiceAccount、RBAC 资源、PVC 等并删除这个 release。核心工作原理配置项如何驱动容器启动参数在深入配置表之前先看 templates/deployment.yaml 中的容器定义这是理解所有配置项作用的关键。Chart 生成的 Deployment 使用bpineau/katafygio:v0.8.1镜像并通过命令行参数把 values.yaml 中的配置透传给/usr/bin/katafygio进程command: - /usr/bin/katafygio - --local-dir{{ .Values.localDir }} - --healthcheck-port{{ .Values.healthcheckPort }} {{- if .Values.gitUrl }} - --git-url{{ .Values.gitUrl }} {{- end }} {{- if .Values.filter }} - --filter{{ .Values.filter }} {{- end }} {{- if .Values.logLevel }} - --log-level{{ .Values.logLevel }} {{- end }} ... {{- if .Values.excludeKind }} {{- range .Values.excludeKind }} - --exclude-kind{{ . }} {{- end }} {{- end }} {{- if .Values.excludeObject }} {{- range .Values.excludeObject }} - --exclude-object{{ . }} {{- end }} {{- end }}也就是说配置表里的参数本质上就是 Katafygio 命令行 flag 的 Helm 化封装excludeKind、excludeObject是数组会被渲染成多个--exclude-kind...、--exclude-object...参数。容器同时暴露了http端口并配置了指向/health路径的 livenessProbe 与 readinessProbe端口即healthcheckPort。另外该 Deployment 还通过persistence.enabled决定数据卷类型启用时挂载名为katafygio-data的 PVC见 templates/pvc.yaml否则回退为emptyDir数据随 Pod 生命周期消失。因此在gitUrl之外启用持久卷是另一种保证备份不丢失的方式。配置参数详解下表列出了 Katafygio Chart 的全部可配置参数及其默认值与 README.md 及 values.yaml 保持一致参数描述默认值replicaCount期望的 Pod 副本数1image.repositoryKatafygio 容器镜像名bpineau/katafygioimage.tagKatafygio 容器镜像标签v0.8.1image.pullPolicy镜像拉取策略IfNotPresentlocalDirKatafygio 本地 dump 并提交的容器内路径/var/lib/katafygio/datagitUrl可选变更将被推送到的远端 Git 仓库nilnoGit是否禁用 Git 版本管理falsefilter仅 dump 匹配的对象的标签选择器nilhealthcheckPortKatafygio 监听健康检查请求的端口8080excludeKind需要忽略的对象类型{replicaset,endpoints,event}excludeObject需要忽略的特定对象如configmap:default/foonilrbac.create是否创建 RBAC 角色与绑定trueserviceAccount.create是否创建 ServiceAccounttrueserviceAccount.name使用的 ServiceAccount 名称nilresyncInterval全量追赶式重新同步间隔秒0 表示禁用300logLevel日志级别info、warning、error 等warninglogOutput日志输出目标stdout、stderr 或 syslogstdoutlogServerSyslog 服务器地址如rsyslog:514nilresourcesCPU/内存资源请求与限制{}tolerationsPod 可容忍的节点污点列表[]affinityPod 调度的节点亲和性{}nodeSelector指定 Pod 调度到带特定标签的节点{}备份范围控制excludeKind默认忽略replicaset、endpoints、event这三类对象因为它们数量大、内容高频变动、价值低dump 它们会让备份仓库迅速膨胀。该参数用于“按类型”过滤。excludeObject按具体对象过滤格式为objectkind:namespace/objectname。例如 values.yaml 中给出了示例configmap:kube-system/leader-elector用于剔除像 leader 选举 ConfigMap 这种被频繁更新的对象。filter正向的标签选择器例如app in (foo, bar)只有匹配该选择器的对象才会被备份是“按对象”精减备份集的手段。通过组合这三个参数可以把备份仓库保持得精简、可读、低成本——这也是 README 中建议“保持备份仓库精简”的核心手段。Git 与持久化gitUrl远端仓库地址。Katafygio 会 clone 该仓库并在本地提交后实时 push。values.yaml 给出了示例格式https://user:tokengithub.com/myorg/myrepos.git私有仓库可把凭据嵌入 URL。noGit置为true时禁用 Git 版本管理只保留一份不版本化的本地 dump。localDirpersistence默认localDir为/var/lib/katafygio/data且persistence.enabledtrue会创建一个 1Gi、ReadWriteOnce 的 PVC存储类规则见 values.yaml 注释storageClass未定义时用集群默认 provisioner设为-时禁用动态供应。如果配置了gitUrl则远端仓库本身就是另一种持久化手段本地目录可以不用持久卷。资源与稳定性resyncInterval默认 300 秒Katafygio 依赖 Kubernetes watch 事件感知变更但事件可能丢失因此每隔resyncInterval秒做一次全量“追赶式”重同步确保备份与集群真实状态最终一致设 0 可禁用。healthcheckPort默认 8080健康检查端口Deployment 的存活/就绪探针均请求该端口下的/health路径。resources默认不设限制。values.yaml 给出了非常有价值的容量参考Katafygio 基线内存占用仅约 50Mi具体随集群规模增长——例如在 45 个节点、约 2k Pod、1k Service 的集群中大约使用 250Mi。示例配置resources: limits: cpu: 100m memory: 128Mi requests: cpu: 100m memory: 128MiRBAC 与 ServiceAccount从 templates/rbac.yaml 可以看出Katafygio 需要对所有 API 组、所有资源拥有get、list、watch只读权限rules: - apiGroups: [*] resources: [*] verbs: - get - list - watch这是由“持续监听全集群对象”的职责决定的。该权限以 ClusterRole ClusterRoleBinding 的形式授予rbac.createtrue时创建。serviceAccount.createtrue时会创建一个专用 ServiceAccount名称由 templates/_helpers.tpl 中的katafygio.serviceAccountName模板生成规则是优先使用serviceAccount.name为空时用fullname若serviceAccount.createfalse则回退到命名空间的defaultSA。通过 --set 与 values 文件自定义安装按配置表逐项覆盖使用--set keyvalue[,keyvalue]语法$ helm install --name my-release \ --set localDir/data/katafygio \ --set gitUrlhttps://user:tokengithub.com/myorg/k8s-backups.git \ --set excludeKind[0]replicaset \ --set resyncInterval600 \ stable/katafygio更推荐的做法是准备一份完整的自定义 values 文件然后通过-f传入$ helm install --name my-release -f values.yaml stable/katafygio提示仓库自带的默认 values.yaml 注释详尽每个参数都配有说明和示例如filter、excludeObject、gitUrl、logServer、persistence.storageClass的用法可以直接作为自定义配置的起点。验证与使用备份安装后可通过健康检查确认运行状态$ kubectl get pods -l appkatafygio $ kubectl exec -i -t pod-name ls /var/lib/katafygio/data进入 Pod 后localDir就是一个 Git 仓库可以像普通 Git 仓库一样查看历史$ kubectl exec -i -t pod-name -- git -C /var/lib/katafygio/data log --oneline由于 PVC默认 1Gi挂载在localDirPod 重建后备份数据依然保留配置了gitUrl时每次变更还会实时推送到远端仓库实现集群外集中归档与多人协作审计。总结Katafygio Chart 为 Kubernetes 集群提供了一条低成本、自动化的备份链路Deployment 中以/usr/bin/katafygio启动通过--local-dir、--git-url、--exclude-kind、--exclude-object、--filter、--resync-interval、--healthcheck-port、--log-*等参数精确控制备份范围、持久化方式与运行行为配合 ClusterRole 的get/list/watch权限与 PVC 持久卷即可获得持续、带完整 Git 变更历史的集群配置备份。需要提醒的是本 Chart 已随 charts 仓库归档不再更新若在较新集群环境使用建议以仓库内模板为参考自行维护或选用活跃维护的替代方案。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐90DaysOfDevOps Day 54使用 YAML 与 Helm 在 Kubernetes 集群中部署应用90DaysOfDevOps Day 54使用 YAML 与 Helm 在 Kubernetes 集群中部署应用 90DaysOfDevOps 系列 Day文档/教程使用JupyterHub Helm Chart在Kubernetes集群中部署JupyterHub使用JupyterHub Helm Chart在Kubernetes集群中部署JupyterHub 前言 JupyterHub是一个多用户Jupyter Not云原生后端开发工具使用 Helm 在 Kubernetes 上部署 Apache Pulsar 集群使用 Helm 在 Kubernetes 上部署 Apache Pulsar 集群 本文是 Apache Pulsar 官方 Helm 部署指南的完整技术说明消息队列后端流处理上一篇moshi代码重构案例从单体应用到微服务架构演进下一篇终极指南如何用 Tiled 地图编辑器创建专业级前端游戏碰撞层创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考