【发布时间】:2022-11-17 07:31:20
【问题描述】:
在部署新版本的应用程序之前,我们有时希望运行一些数据库迁移作业。 ArgoCD 中的常见方法似乎是使用 PreSync 挂钩,我已经测试过并且似乎有效,但我发现它在功能方面有点受限,并且不确定我是否遗漏了什么或如果是这样的话。
我希望它如何工作,是只要当数据库迁移作业以某种方式发生变化(很可能是新图像)时运行数据库迁移作业,但是预同步作业的设计方式(并且可以理解)是始终在每次同步时运行指定的作业。从功能上讲,这很好,迁移作业将花费大约 20 秒的时间来开始和完成,最后什么也不做,但是对于每一个不相关的更改都发生这种情况显然是不理想的。
我希望有某种方法可以完成我所缺少的这个“ArgoCD”。
我当前使用的作业模板(每次同步运行)是这样的:
{{- define "project.migration_job" -}}
{{- $appsettings := (get .Values.global.apps .name) }}
---
apiVersion: batch/v1
kind: Job
metadata:
generateName: {{ .name }}-
annotations:
argocd.argoproj.io/hook: PreSync
spec:
template:
spec:
automountServiceAccountToken: false
containers:
- name: {{ .name }}
image: "{{ .Values.global.repo }}/{{ .name }}:{{ $appsettings.image }}"
resources:
requests:
memory: {{ $appsettings.memory | default "256Mi" | quote }}
cpu: {{ $appsettings.cpu | default "75m" | quote }}
limits:
memory: {{ $appsettings.memory | default "256Mi" | quote }}
cpu: {{ $appsettings.cpu | default "75m" | quote }}
env:
{{- include "project.environment_variables" (dict "Values" .Values "env" .env) | trim | nindent 12 -}}
{{- include "project.secret_environment_variables" (dict "Values" .Values "secrets" .secrets) | trim | nindent 12 }}
restartPolicy: Never
backoffLimit: 2
{{ end -}}
谢谢你的帮助。
【问题讨论】:
-
我们有一些要求,希望有人能在这里给出一些明确的指示
标签: kubernetes argocd