Flux CD 不适用于 Kustomize 种类:组件

问题描述 投票:0回答: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-namespace 是一个目录': 预期类型 != 'Component'

有人遇到这个问题吗?

kubernetes devops flux kustomize
1个回答
0
投票

根据 FluxCD 官方文档 1

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

虽然您没有在问题中提供 FluxCD Kustomize CRD 定义,但我想说您的问题在于引用目标组件的路径。

我想说的是,您在

components
中指定的任何路径都是相对于
kustomization.yaml
的。

本质上,这意味着在您的

prod/redis/kustomization.yaml
中,您需要将
components
修改为以下内容才能使其正常工作:

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

再次强调,您在

components
中指定的任何路径都是相对于
kustomization.yaml
的,并且应该像普通
cd
命令一样可以访问。

© www.soinside.com 2019 - 2024. All rights reserved.