argocd + kustomize 报错“rpc error: code = Unknown desc = Manifest generation error (cached)”
报错内容
报错内容为:rpc error: code = Unknown desc = Manifest generation error (cached): `kustomize build .xiaowangTech/4.0/frontend/dingding-pc/manifests/overlays/test` failed exit status 1: # Warning: 'patchesStrategicMerge' is deprecated. Please use 'patches' instead. Run 'kustomize edit fix' to update your Kustomization automatically.Error: no matches for Id Ingress.v1.networking.k8s.io/dingding-pc-ingress.test; failed to find unique target for patch Ingress.v1.networking.k8s.io/dingding-pc-ingress.test
原因分析
配置test环境时ingress配置没有和base里面想匹配,导致报错并且SYNC STATUS状态为Unknown
解决方案
经过对比发现,配置test环境的ingress和base里面的ingress不匹配,即test环境的ingress和base里面的ingress相同,再通过test环境的kustomization.yaml进行替换,最后解决问题
$cat ding/manifests/base/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
description: ding
kubernetes.io/ingress.class: test-ingress-internet
kubernetes.io/ingress.rule-mix: "true"
nginx.ingress.kubernetes.io/cors-allow-headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
nginx.ingress.kubernetes.io/cors-allow-methods: PUT, GET, POST, OPTIONS
nginx.ingress.kubernetes.io/cors-allow-origin: '*'
nginx.ingress.kubernetes.io/enable-cors: "true"
name: ding-ingress
namespace: dev
spec:
rules:
- host: ding-dev.weirui.com
http:
paths:
- backend:
service:
name: dev-ding-svc
port:
number: 80
pathType: ImplementationSpecific
...
$cat ding/manifests/overlays/test/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ding-ingress
namespace: dev
spec:
rules:
- host: ding-test.weirui.com
http:
paths:
- backend:
service:
name: test-ding-svc
port:
number: 80
pathType: ImplementationSpecific
...
$cat ding/manifests/overlays/test/kustomization.yaml
# 生成test环境namespace
namespace: test
# 生成test环境的前缀“test-”
namePrefix: test-
# 指向base主目录
# 指向同级生产配置目录的·yaml资源
patchesStrategicMerge:
- replica.yaml
- image.yaml
- volumes.yaml
- ingress.yaml
# 指定对应的deployment文件
# 修改同级目录的port.yaml
#将key,value传递到生成的configmap
configMapGenerator:
- name: ding-config
files:
- default.conf
generatorOptions:
disableNameSuffixHash: true
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base