首页 > 解决方案 > 覆盖自定义中基于忽略的自定义

问题描述

目前我有一个 Kubernetes 配置目录,如下所示:

├── base
│   ├── kustomization.yaml
|   ├── main-ingress.yaml
│   └── sub-ingress.yaml
└── overlays
    ├── dev-1
    │   ├── kustomization.yaml
    │   ├── main-ingress.yaml
    │   └── sub-ingress.yaml
    ├── dev-2
    │   ├── kustomization.yaml
    │   ├── main-ingress.yaml
    │   └── sub-ingress.yaml
    └── prod
        ├── main-ingress.yaml
        └── kustomization.yaml

/base/kustomization.yaml

apiVersion: [...]
kind: Kustomization

configMapGenerator:
[...]

resources:
 - main-ingress.yaml
 - sub-ingress.yaml

/overlays/prod/kustomization.yaml

apiVersion: [...]
kind: Kustomization

patchesStrategicMerge:
 - main-ingress.yaml

resources:
 - ../../base

/overlays/dev-1/kustomization.yaml/overlays/dev-2/kustomization.yaml

apiVersion: [...]
kind: Kustomization

patchesStrategicMerge:
 - main-ingress.yaml
 - sub-ingress.yaml

resources:
 - ../../base

/base/sub-ingress.yaml

apiVersion: [...]
kind: Ingress
metadata:
  name: sub-ingress
  annotations:
    kubernetes.io/ingress.class: [...]
    nginx.org/server-snippets: |
        ...nginx-rules...
spec:

/overlays/dev-1/sub-ingress.yaml

apiVersion: [...]
kind: Ingress
metadata:
  name: sub-ingress
spec:
  rules:
  - host: myname.com
    http:
      paths:
      - backend:
          serviceName: my-service
          servicePort: 9999
        path: /my-app
  tls:
  - hosts:
    - myname.com
    secretName: my-tls

在里面/overlays/dev-2/sub-ingress.yaml

apiVersion: [...]
kind: Ingress
metadata:
  name: sub-ingress
spec:
  rules:
  - host: myname2.com
    http:
      paths:
      - backend:
          serviceName: my-service
          servicePort: 9999
        path: /my-app
  tls:
  - hosts:
    - myname2.com
    secretName: my-tls

现在,当我运行 build 命令kustomize build --enable_alpha_plugins prod/时,将显示错误:

nil value at `spec.tls.secretName` ignored in mutation attempt
nil value at `spec.rules.http.paths.backend.serviceName` ignored in mutation attempt
nil value at `spec.backend.serviceName` ignored in mutation attempt

似乎 kustomize 插件在尝试构建sub-ingress.yaml基于 based config 的结果时遇到了问题,但在 overlay 中没有相应的配置文件prod

标签: kubernetes

解决方案


推荐阅读