Kubernetes 使用Kustomize跨多个环境和应用程序进行通用配置

Kubernetes 使用Kustomize跨多个环境和应用程序进行通用配置,kubernetes,kustomize,Kubernetes,Kustomize,是否可以有一个跨多个环境和应用程序共享的公共配置文件(如ConfigMap)? 我知道跨多个环境覆盖层进行操作很简单,但对于应用程序来说,在其上设置一个级别如何? 如果我有以下结构: Base App1 Configmaps Kustomization.yaml Global Configmaps Overlays Env1 App1 Configmaps De

是否可以有一个跨多个环境和应用程序共享的公共配置文件(如ConfigMap)? 我知道跨多个环境覆盖层进行操作很简单,但对于应用程序来说,在其上设置一个级别如何? 如果我有以下结构:

Base
    App1
        Configmaps
        Kustomization.yaml
    Global
        Configmaps
Overlays
    Env1
        App1
            Configmaps
            Deployments
            Kustomization.yaml
        App2
            Configmaps
            Deployments
            Kustomization.yaml
    Env2.. (same as above)
        App1..
        App2..
是否有可能创建一组通用配置值的静态集合,这些值是跨所有应用程序引用的? 在上述结构中,我只能引用同一文件夹或以下文件夹中的资源,如果我尝试引用应用程序级别之外的父文件夹中的资源,则通常会出现如下错误“ 错误:AccumerateTarget:rawResources无法读取资源:从路径加载.././configmaps/base-config.yaml失败:安全;文件“../../configmaps/base-config.yaml”不在“C:\Code\BUILD-artifacts\deployment manifests\base\apps\app ui”中或以下 "

是否在父文件夹级别而不是子文件夹中共享公共配置?
否则,我会在多个应用程序中重复某些设置,这并不理想。

您会看到此错误,因为它是用来保护用户免受网络钓鱼攻击的。退房

来自kustomize常见问题解答:

v2.0添加了一个安全检查,防止Kustomization读取其自身目录根以外的文件

这有助于保护倾向于从web下载kustomization目录的人,并在未经检查的情况下使用这些目录来控制其生产集群(请参阅和)

资源(包括configmap和机密生成器)仍然可以 通过推荐的最佳实践将其放置在 目录中有自己的kustomization文件,并引用此 目录作为任何想要使用它的kustomization的基础。这 鼓励模块化和可重新定位

要禁用此功能,请使用v3和load_restrictor标志:

kustomize build --load_restrictor none $target

是的,这正是我想要的,因为我可以在应用程序之间共享通用的全局配置。Thanks@Rubans我有类似的要求,只是好奇你是如何从特定应用的覆盖层访问基础的,例如在app1的覆盖层中,你如何知道基础层必须上升到某个级别,以及要转到哪个文件夹,app1是硬编码的?@cheddarDev app1引用基础层,当我运行命令进行构建时,我的目标是App1 kustomization.yaml的覆盖层。每个应用程序的Kustomization将引用基本Kustomization。yaml@Rubans明白了,我能让它运转起来。谢谢!