代码之家  ›  专栏  ›  技术社区  ›  Quies

Flux CD不适用于Kustomize Kind:组件

  •  0
  • Quies  · 技术社区  · 1 年前

    我的结构如下:

    ├───base
    │   └───redis
    │           kustomization.yaml
    │           release.yaml
    │
    ├───components
    │   └───target-namespace
    │           kustomization.yaml
    │
    └───prod
        └───redis
                kustomization.yaml
    

    Redis覆盖图如下:

    kind: Kustomization
    namespace: flux-system
    resources:
      - ../../base/redis
    components:
      - ../base/components/target-namespace
    
    apiVersion: kustomize.config.k8s.io/v1alpha1
    kind: Component
    patches:
      - patch: |-
          apiVersion: helm.toolkit.fluxcd.io/v2beta1
          kind: HelmRelease
          metadata:
            name: not-used
          spec:
            targetNamespace: default
        target:
          kind: HelmRelease
    When I run kustomize 
    
    build .\prod\redis\ 
    

    它在本地工作! 但当我把它推到FluxCD并期望它工作时,它会给我以下错误:

    /components/target命名空间是目录“:应为种类!=”组成部分

    有人遇到这个问题吗?

    0 回复  |  直到 1 年前
        1
  •  0
  •   Meysam    1 年前

    根据官方FluxCD文件 1

    .spec.components 是一个可选列表,用于指定Kustosize组件。这允许使用可重复使用的配置逻辑,这些配置逻辑可以从多个覆盖层中包括。

    尽管您在问题中没有提供FluxCD-Kustomize CRD定义,但我认为您的问题在于您引用目标组件的路径。

    我想说的是,你在 components 相对于 kustomization.yaml .

    本质上,这意味着 prod/redis/kustomization.yaml ,您需要修改 组件 以使其工作:

    kind: Kustomization
    namespace: flux-system
    resources:
      - ../../base/redis
    components:
      - ../../base/components/target-namespace # <- change this
    

    同样,您在中指定的任何路径 组件 相对于 kustomization.yaml 应该像正常人一样可以访问 cd 命令将能够。