如何配置Flux避免将base层配置直接部署到default命名空间?
你遇到的重复创建Ingress的问题,核心原因是Flux默认会扫描关联仓库中所有包含kustomization.yaml的目录并执行同步:
ingress/base目录下存在合法Kustomize配置,Flux同步该目录时未指定命名空间,因此Ingress被默认创建到default命名空间ingress/overlays/development目录的配置也会被同步,指定了development命名空间,因此出现重复创建的情况
解决方案
以下三种方案可根据你的使用场景选择:
方案1:调整Flux同步路径配置
修改你配置的Flux Kustomization同步资源(通常存放在仓库flux-system目录下的基础设施同步规则),仅将overlay目录纳入同步范围,base目录不在同步路径内就不会被单独部署:
apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: infrastructure namespace: flux-system spec: interval: 10m sourceRef: kind: GitRepository name: flux-system # 仅指定overlay目录为同步根路径 path: ./infrastructure/ingress/overlays prune: true wait: true
如果你是按环境拆分独立的Flux同步规则,可分别为每个环境配置同步路径指向对应overlay子目录即可,比如./infrastructure/ingress/overlays/development。
方案2:调整base目录命名规避Flux扫描
Flux的Source Controller默认会忽略名称以.或_开头的目录,你可以将base目录重命名为_base,同时修改development目录下的kustomization.yaml中的资源引用路径调整为../../_base即可,无需修改其他配置,base目录的内容不会被单独同步,被overlay引用的内容不受影响。
方案3:添加Flux忽略标记忽略base目录
在ingress/base目录下新建.fluxignore文件,写入以下内容:
*
该文件会告知Flux忽略该目录下所有内容,不会单独同步base配置,overlay引用base的内容不受影响。
内容的提问来源于stack exchange,提问作者ajthyng
相关产品推荐
相关产品推荐

