我使用kustomize来管理我的argocd清单。
我的结构是这样的:
argocd
├── base
│ ├── argocd-ui-ingress.yaml
│ └── kustomization.yaml
└── overlays
└── dev
├── argocd-cm-patch.yaml
├── argocd-repo-server-ksops-patch.yaml
├── ksops-secret-generator.yaml
├── kustomization.yaml
└── secret-argocd-notifications.yaml
└── prod
├── argocd-cm-patch.yaml
├── argocd-repo-server-ksops-patch.yaml
├── ksops-secret-generator.yaml
├── kustomization.yaml
└── secret-argocd-notifications.yaml这是我的overlays/dev/kustomization.yaml文件:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- https://raw.githubusercontent.com/argoproj/argo-cd/v2.3.2/manifests/install.yaml
- ../../base
patchesStrategicMerge:
- argocd-cm-patch.yaml
- argocd-repo-server-ksops-patch.yaml
patches:
- patch: |-
- op: add
path: /spec/rules/0/host
value: argocd.foo.com
- op: add
path: /spec/tls/0/hosts/0
value: argocd.foo.com
target:
kind: Ingress
name: argocd-ui
generators:
- ksops-secret-generator.yaml这是我的ksops-secret-generator.yaml文件:
# Create a local Kubernetes Secret
apiVersion: viaduct.ai/v1
kind: ksops
metadata:
name: ksops-secret-generator
files:
- secret-argocd-notifications.yaml最后,我的secret-argocd-notifications.yaml看起来是这样的:
apiVersion: v1
kind: Secret
metadata:
name: argocd-notifications-secret
namespace: argocd
data:
foo: [ENC]...因为它是一个sops-encrypted文件,所以我使用ksops插件来生成可用的秘密资源。
我目前遇到的问题是,我正在使用的远程资源(https://raw.githubusercontent.com/argoproj/argo-cd/v2.3.2/manifests/install.yaml)已经包含一个名为argocd-notifications-secret的秘密。因此,当我运行kustomize build overlays/dev --enable-alpha-plugins时,我得到了两个名为argocd-notifications-secret的秘密资源。一个来自通过ksops-secret-generator生成的本地文件,另一个包含在远程清单中。
我试图通过向本地文件中添加replace (以及merge,获得相同的结果)行为注释来解决这个问题:
annotations:
kustomize.config.k8s.io/behavior: replace但以以下错误结尾:
Error: merging from generator &{0xc000d4c0a0 <nil>}: id resid.ResId{Gvk:resid.Gvk{Group:"", Version:"v1", Kind:"Secret", isClusterScoped:false}, Name:"argocd-notifications-secret", Namespace:"argocd"} does not exist; cannot merge or replace我也不能在patchesStrategicMerge部分下添加本地文件,因为它只是添加原始的sops加密文件(根本不使用generator )。
有办法处理这种情况吗?
发布于 2022-04-05 22:14:44
很明显这都是红鲱鱼。主要问题是namespace指令,它位于argocd-notifications-secret覆盖层上。删除它之后,我重新添加了以下注释:
annotations:
kustomize.config.k8s.io/behavior: merge而且起作用了。
这一快速转变的功劳是由于CNCF #argo-cd频道。线在这里
https://stackoverflow.com/questions/71758834
复制相似问题