如何将现有K8s应用清单迁移至Kustomize以适配Flux2 GitOps?
问题1:获取最小可用文件夹的操作步骤
- 清理导出的deployment和service文件,删除所有集群自动生成的字段,你可以用以下命令直接导出无冗余字段的清单,不用手动逐行删除:
如果没有安装yq工具,手动删除上述命令中指定的字段即可,清理后的清单只要保留你自定义的配置(镜像地址、端口配置、资源限制、环境变量、service类型等)和核心资源字段就可以正常使用。# 导出deployment并清理冗余字段 kubectl get deployment <你的应用deployment名称> -o yaml | yq 'del(.status, .metadata.creationTimestamp, .metadata.generation, .metadata.resourceVersion, .metadata.uid, .metadata.managedFields, .metadata.annotations."kubectl.kubernetes.io/last-applied-configuration")' > deployment.yaml # 导出service并清理冗余字段 kubectl get service <你的应用service名称> -o yaml | yq 'del(.status, .metadata.creationTimestamp, .metadata.generation, .metadata.resourceVersion, .metadata.uid, .metadata.managedFields, .metadata.annotations."kubectl.kubernetes.io/last-applied-configuration")' > service.yaml - 你已经写好的kustomization.yaml不需要修改,三个文件放在同一个文件夹下就是最小可用结构。
问题2:当前操作是否符合Kustomize最小示例要求
完全符合。你当前的kustomization.yaml是Kustomize最基础的核心结构,只声明了依赖的资源清单,没有多余配置,就是标准的最小可用示例。
问题3:配置可用性自测方法
- 第一步本地渲染验证:在当前文件夹执行
kustomize build .,如果没有报错,且输出的内容是完整、符合你预期的deployment和service清单,说明本地配置语法没问题。 - 第二步服务端dry run验证:在本地k3d集群环境执行
kubectl apply -k . --dry-run=server,如果返回configured/created无报错,说明配置符合集群的资源创建规则,不存在字段冲突、格式错误等问题。 - 第三步实机运行验证:执行
kubectl apply -k .将配置部署到k3d集群,随后执行kubectl get pods看应用pod是否正常运行,kubectl get svc看service是否正常创建,能正常访问应用就说明配置完全可用。 - 如果你要提前适配Flux2的同步逻辑,可以直接把这三个文件推到测试用的Git仓库,在k3d集群安装Flux2并关联该测试仓库,确认Flux可以正常同步资源、应用运行正常即可。
内容的提问来源于stack exchange,提问作者Stav Alfi
相关产品推荐
相关产品推荐

