2017-12-27 6 views
0

Ich habe eine Frage über Helm Validierung von resources Feld in CronJob Diagramm, jede Hilfe willkommen.k8s: Fehler beim Erstellen CronJob Diagramm

Ich benutze APIVERSION batch/v1beta1

ich Fehler, wenn ich versuche Werte retrive von values.yaml

Der Fehler: Error: error validating "": error validating data: found `invalid field requests for v1.Container

Command I laufen: helm install --dry-run --debug my_chart

mein CronJob Diagramm wie folgt:

apiVersion: batch/v1beta1 
kind: CronJob 
metadata: 
    name: {{ .Chart.Name }} 
spec: 
    schedule: "0 */2 * * *" 
    concurrencyPolicy: Forbid 
    jobTemplate: 
    spec: 
     template: 
     metadata: 
    ... 
    spec: 
    containers: 
    ... 
    spec: 
     resources: 
{{ toYaml .Values.resources | indent 12 }} 

Fehler disapierd, wenn ich die Ressourcen Konfiguration

resources: 
     requests: 
     cpu: 300m 
     memory: 1024Mi 

Ich mag es nicht die letzte Änderung zu ändern und ich möchte meinen regelmäßigen Konfigurationsanleitung und Speichern von Werten in values.yaml

Cluster-Version folgen

Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T05:28:34Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

Server Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.4-gke.0", GitCommit:"04502ae78d522a3d410de3710e1550cfb16dad4a", GitTreeState:"clean", BuildDate:"2017-11-27T19:19:56Z", GoVersion:"go1.8.3b4", Compiler:"gc", Platform:"linux/amd64"}

Helm Versionen sind:

Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

Vielen Dank im Voraus

Antwort

1

TL; DR: einrücken um 14 Plätze (statt 12) und die zusätzliche spec Eigenschaft in Ihrer Container-Definition entfernen.


Geist der richtige Vertiefung in Ihren YAML-Definitionen. Zum Beispiel muss die containers Eigenschaft spec.jobTemplate.spec.template Eigenschaft eine Unter Eigenschaft des CronJob ist sein (mit spec.jobTemplate die Vorlage für ein Job Objekt zu sein (oder ein JobTemplate) und spec.jobTemplate.spec.template dann sind die Vorlage für diesen Pod Objekt Job (oder ein PodTemplate).

des weiteren hat der Pod's containers attribute keine zusätzliche spec erfordern. Werfen Sie einen Blick auf die API-Referenz für die jeweiligen Objekte (oben verlinkten) für die genaue Spezifikation dieser Objekttypen.

Für einen CronJob sollte die Helmschablone so aussehen (wiederum ist Einrückung wichtig!). Beachten Sie auch, dass in diesem Fall die Eigenschaft .spec.jobTemplate.spec.template.spec.resources.requests durch 14 Leerzeichen und nicht 12 eingerückt werden muss.

apiVersion: batch/v1beta1 
kind: CronJob 
metadata: 
    name: {{ .Chart.Name }} 
spec: 
    schedule: "0 */2 * * *" 
    concurrencyPolicy: Forbid 
    jobTemplate: 
    spec: 
     template: 
     metadata: 
      # ... 
     spec: 
      containers: 
      - name: foo 
      # ... 
      resources: 
{{ toYaml .Values.resources | indent 14 }} 

In Bezug auf die Fehler, den Sie erhalten haben: Mit einer Vertiefung von 12 Plätzen (indent 12), Helm wird eine YAML-Definition für Ihre Arbeit ähnlich wie den folgenden erstellen:

 spec: 
      containers: 
      - name: foo 
      # ... 
      resources: 
      requests: 
       cpu: 300m 
       memory: 1024Mi 

Wie Sie können sehen, die requests Eigenschaft (beabsichtigt, eine Untereigenschaft der resources Eigenschaft zu sein), ist jetzt tatsächlich eine Eigenschaft der Container Definition. Die Containerressource hat jedoch kein Feld mit dem Namen requests. Dies führt zu der folgenden Fehlermeldung:

Error: error validating "": error validating data: found `invalid field requests for v1.Container