0

我正在使用 kustomize 二进制文件来制作特定的 kubernetes 部署 yaml 文件。

{版本:kustomize/v3.8.1 GitCommit:0b359d0ef0272e6545eda0e99aacd63aef99c4d0 BuildDate:2020-07-16T00:58:46Z GoOs:linux GoArch:amd64}

这是我的目录结构:

overlays
├── parser
│   ├── dev
│   │   └── nonsec
│   │       ├── dev-patches-parsers-tests.yaml
│   │       ├── dev-patches-parsers.yaml
│   │       └── kustomization.yaml
│   ├── prod
│   │   ├── nonsec
│   │   │   ├── kustomization.yaml
│   │   │   ├── prod-patches-parsers-tests.yaml
│   │   │   └── prod-patches-parsers.yaml
│   │   ├── sec
│   │   │   ├── kustomization.yaml
│   │   │   ├── prod-patches-parsers-sec-tests.yaml
│   │   │   ├── prod-patches-parsers-sec.yaml
│   │   │   ├── prod-patches-parsers-tests.yaml
│   │   │   └── prod-patches-parsers.yaml
│   │   └── v3r
│   │       └── empty.txt
│   ├── stage

│   └── suit

请注意,overlays/parser/prod/nonsec 和 /overlays/parser/prod/sec 包含两个相同的补丁文件集。我想将通用文件分解出来并将它们推到 prod 下的一个级别 - 我不希望在多个目录中复制相同的补丁。我希望 nonsec 和 sec 构建都使用相同的 prod 补丁集,但我不知道如何使用 kustomize 来做到这一点。我试图将它们放在上面的目录中,但是 kustomize 不允许对上面目录中的补丁文件进行任何引用——这是我需要做的。

如何避免在多个目录中重复这些 prod-patches*.yaml 文件?!

这是我的不安全的 kustomization.yaml

# Use this as the base code
resources:
  - ../../../../base

# Decorate the base code with the following components
components:
  - ../../../../components/common-all
  - ../../../../components/common-prod
  - ../../../../components/parser

# Then finally, patch the results from above with this:
patchesStrategicMerge:
 - prod-patches-parsers.yaml
 - prod-patches-parsers-tests.yaml

这是我的 sec kustomization.yaml:

# Use this as the base code
resources:
  - ../../../../base

# Decorate the base code with the following components
components:
  - ../../../../components/common-all
  - ../../../../components/common-prod
  - ../../../../components/parser

# Then finally, patch the results from above with this:
patchesStrategicMerge:
 - prod-patches-parsers.yaml
 - prod-patches-parsers-tests.yaml
 - prod-patches-parsers-sec.yaml
 - prod-patches-parsers-sec-tests.yaml 
4

1 回答 1

0

You could do the following:

overlays
├── parser
│   ├── dev
│   │   └── nonsec
│   │       ├── dev-patches-parsers-tests.yaml
│   │       ├── dev-patches-parsers.yaml
│   │       └── kustomization.yaml
│   ├── prod
│   │   ├── kustomization.yaml
│   │   ├── prod-patches-parsers-tests.yaml
│   │   ├── prod-patches-parsers.yaml
│   │   ├── nonsec
│   │   │   └── kustomization.yaml
│   │   ├── sec
│   │   │   ├── kustomization.yaml
│   │   │   ├── prod-patches-parsers-sec-tests.yaml
│   │   │   └── prod-patches-parsers-sec.yaml
│   │   └── v3r
│   │       └── empty.txt

with overlays/parser/prod/kustomization.yaml:

resources:
  - ../../../../base
  - ../../../../components/common-all
  - ../../../../components/common-prod
  - ../../../../components/parser

patchesStrategicMerge:
  - prod-patches-parsers.yaml
  - prod-patches-parsers-tests.yaml

overlays/parser/prod/nonsec/kustomization.yaml:

resources:
  - ../

overlays/parser/prod/sec/kustomization.yaml:

resources:
  - ../

patchesStrategicMerge:
  - prod-patches-parsers.yaml
  - prod-patches-parsers-tests.yaml

The overall directory structure is a bit complex and you might want to simplify or flatten it.

于 2021-01-22T10:49:02.730 回答