首页 > 解决方案 > 使用 kustomize 修补 kubernetes cronjob

问题描述

我正在尝试修补 cronjob,但不知怎的,它并没有像我预期的那样工作。我使用相同的文件夹结构进行部署,并且有效。

这是文件夹结构:

.
├── base
│   ├── kustomization.yaml
│   └── war.cron.yaml
└── overlays
    └── staging
        ├── kustomization.yaml
        ├── war.cron.patch.yaml
        └── war.cron.staging.env

基础/kustomization.yaml

---
kind: Kustomization
resources:
- war.cron.yaml

基地/war.cron.yaml

---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: war-event-cron
spec:
  schedule: "*/5 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: war-event-cron
            image: my-registry/war-service
            imagePullPolicy: IfNotPresent
            command:
            - python
            - run.py
            args:
            - sync-events
            envFrom:
            - secretRef:
                name: war-event-cron-secret
          restartPolicy: OnFailure

然后我试图在暂存覆盖中修补它。

覆盖/登台/kustomization.yaml

---
kind: Kustomization
namespace: staging
bases:
- "../../base"
patchesStrategicMerge:
- war.cron.patch.yaml
secretGenerator:
- name: war-event-cron-secret
  behavior: create
  envs:
  - war.cron.staging.env

覆盖/登台/war.cron.patch.yaml

---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: war-event-cron
spec:
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: war-event-cron
            image: my-registry/war-service:nightly
            args:
            - sync-events
            - --debug

但结果kustomize build overlays/staging/不是我想要的。command消失了,没有secret被引用。

apiVersion: v1
data:
  ...
kind: Secret
metadata:
  name: war-event-cron-secret-d8m6bh7284
  namespace: staging
type: Opaque
---
apiVersion: batch/v1
kind: CronJob
metadata:
  name: war-event-cron
  namespace: staging
spec:
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - args:
            - sync-events
            - --debug
            image: my-registry/war-service:nightly
            name: war-event-cron
          restartPolicy: OnFailure
  schedule: '*/5 * * * *'

标签: kuberneteskubernetes-cronjobkustomize

解决方案


这是已知的错误kustomize- 检查并关注GitHub 上的这个主题(大约一个月前创建)以获取更多信息。

目前,解决您的问题是使用apiVersion:batch/v1beta1而不是apiVersion: batch/v1inbase/war.cron.yamloverlays/staging/war.cron.patch.yaml文件。


推荐阅读