Helm: UPGRADE FAILED: невозможно исправить ... с помощью доброго задания, путем обновления изображения поля - PullRequest
1 голос
/ 07 мая 2020

Пытаюсь развернуть обновления. Установка работает нормально, но когда я изменяю поле изображения в файле yaml для задания и пытаюсь накатить обновления, возникает ошибка.

Ошибка: ОБНОВЛЕНИЕ НЕ выполнено: невозможно исправить "dev1-test-db- migrate-job "с видом Job: Job.batch" dev1-test-db-migrate-job "недействителен: spe c .template: Недействительное значение: core.PodTemplateSpec {ObjectMeta: v1.ObjectMeta {Name:" ", GenerateName: "", Пространство имен: "", SelfLink: "", UID: "", ResourceVersion: "", Генерация: 0, CreationTimestamp: v1.Time {Time: time.Time {wall: 0x0, ext: 0, lo c: (* time.Location) (nil)}}, DeletionTimestamp: (* v1.Time) (nil), DeletionGracePeriodSeconds: (* int64) (nil), Метки: map [string] string {"controller-uid ":" e60854c6-9a57-413 c -8f19-175a755c9852 "," имя-задания ":" dev1-test-db-migrate-job "," target-app ":" db-migrate "," target- domain ":" dev1 ... "," target-service ":" test "}, Аннотации: map [string] string (nil), OwnerReferences: [] v1.OwnerReference (nil), Finalizers: [] string (nil ), ClusterName: "", ManagedFields: [] v1.ManagedFieldsEntry (nil)}, Spe c: co re.PodSpec {Тома: [] core.Volume (nil), InitContainers: [] core.Container (nil), Контейнеры: [] core.Container {core.Container {Имя: "app", Изображение: "... : insurance-master-682 ", Команда: [] строка {" / bin / sh "," - c "}, Args: [] строка {" java -jar ./db/liquibase.jar --logLevel = debug --classpath =. / db / mariadb- java -client-2.5.3.jar --driver = org.mariadb.jdb c .Driver --changeLogFile =. / db / changelog- страхование. xml --url = $ DB_HOST --username = $ DB_USER --password = $ DB_PASSWORD update "}, WorkingDir:" ", Порты: [] core.ContainerPort (nil), EnvFrom: [] core.EnvFromSource {core.EnvFromSource {Prefix: "", ConfigMapRef: (* core.ConfigMapEnvSource) (nil), SecretRef: (* core.SecretEnvSource) (0xc01a48c8a0)}}, Env: [] core.EnvVar (nil), Resources: core .ResourceRequirements {Limits: core.ResourceList {"cpu": resource.Quantity {i: resource.int64Amount {значение: 200, масштаб: -3}, d: resource.infDecAmount {De c: (* inf.De c) (ноль)}, s: "200m", формат: "DecimalSI"}, "memory": resource.Quantity {i: resource.int64Amount {value: 268435456, scale: 0}, d : resource.infDecAmount {De c: (* inf.De c) (nil)}, s: "", Формат: "BinarySI"}}, Запросы: core.ResourceList {"cpu": resource.Quantity {i: resource.int64Amount {значение: 100, масштаб: -3}, d: resource.infDecAmount {De c: (* inf.De c) (nil)}, s: "100 м", Формат: "DecimalSI"}, "memory": resource.Quantity {i: resource.int64Amount {value: 134217728, scale: 0}, d: resource.infDecAmount {De c: (* inf.De c) (nil )}, s: "", Формат: "BinarySI"}}}, VolumeMounts: [] core.VolumeMount (nil), VolumeDevices: [] core.VolumeDevice (nil), LivenessProbe: (* core.Probe) (nil) , ReadinessProbe: (* core.Probe) (nil), StartupProbe: (* core.Probe) (nil), Lifecycle: (* core.Lifecycle) (nil), TerminationMessagePath: «/ dev / termination-log», TerminationMessagePolicy: "File", ImagePullPolicy: "IfNotPresent", SecurityContext: (* core.SecurityContext) (nil), Stdin: false, StdinOnce: false, TTY: false}}, EphemeralContainers: [] core.EphemeralContainer (nil), RestartPolicy: " Никогда », TerminationGracePeriodSeconds: (* int64) (0xc014591f78), ActiveDeadlineSeconds: (* int64) (nil), DNSPolicy: "ClusterFirst", NodeSelector: map [string] string (nil), ServiceAccountName: "", AutomountServiceAccountToken: (* bool) (nil), NodeName: "", SecurityContext: (* core.PodSecurityContext) ( 0xc010460000), ImagePullSecrets: [] core.LocalObjectReference {core.LocalObjectReference {Имя: "artifactory-tradeplace-registry"}}, Имя хоста: "", Субдомен: "", Affinity: (* core.Affinity) (nil), SchedulerName : "default-scheduler", Допуски: [] core.Toleration (nil), HostAliases: [] core.HostAlias ​​(nil), PriorityClassName: "", Priority: (* int32) (nil), PreemptionPolicy: (* core. PreemptionPolicy) (nil), DNSConfig: (* core.PodDNSConfig) (nil), ReadinessGates: [] core.PodReadinessGate (nil), RuntimeClassName: (* string) (nil), Overhead: core.ResourceList (nil), EnableServiceLinks: (* bool) (nil), TopologySpreadConstraints: [] core.TopologySpreadConstraint (nil)}}: поле неизменяемое

Я так и не понял, какое поле должно быть неизменяемым, возможно, Image, но это очень странно, имеет смысл, что я могу встроить Image.

Ошибка возникает, когда я меняю поле Image с .. .: insurance-master-682 на ...: insurance-master-681 например

Я меняю файл диаграммы каждый раз, когда устанавливаю или обновляю, я меняю поле версии. Итак, кто-нибудь сталкивался с этим? пока я вижу, что единственный выход - применить 'kubectl delete job ...' перед обновлением

части yamls в каталоге 'Templetes':

apiVersion: batch/v1
kind: Job
metadata:
  labels:
    target-domain: dev1...
    target-service: test
  name: dev1-test-db-migrate-job
spec:
  backoffLimit: 0
  template:
    metadata:
      labels:
        target-app: db-migrate
        target-domain: dev1...
        target-service: test
    spec:
      containers:
        - args:
            - java -jar ./db/liquibase.jar --logLevel=debug --classpath=./db/mariadb-java-client-2.5.3.jar
              --driver=org.mariadb.jdbc.Driver --changeLogFile=./db/changelog-insurance.xml
              --url=$DB_HOST --username=$DB_USER --password=$DB_PASSWORD update
          command:
            - /bin/sh
            - -c
          envFrom:
            - secretRef:
                name: dev1-secret-config-deploy-for-app-gk5b59mb86
          image: ...:insurance-master-682
          imagePullPolicy: IfNotPresent
          name: app
          resources:
            limits:
              cpu: 200m
              memory: 256Mi
            requests:
              cpu: 100m
              memory: 128Mi
      imagePullSecrets:
        - name: artifactory-tradeplace-registry
      restartPolicy: Never

Пример Chart.yaml

apiVersion: v2
name: 
description: A Helm chart for Kubernetes
type: application
version: 0.1.20200505t154055
appVersion: 1.16.0
...