2017-11-02 5 views
0

Ich bin nicht in der Lage gute Informationen beschreiben, um diese Fehler zu finden:Kubernetes Helm Chart - Debugging

[[email protected] helm] helm install statefulset --name statefulset --debug 
[debug] Created tunnel using local port: '33172' 

[debug] SERVER: "localhost:33172" 

[debug] Original chart version: "" 
[debug] CHART PATH: /home/helm/statefulset/ 

Error: error validating "": error validating data: [field spec.template for v1beta1.StatefulSetSpec is required, field spec.serviceName for v1beta1.StatefulSetSpec is required, found invalid field containers for v1beta1.StatefulSetSpec] 

ich Helm noch neu bin; Ich habe zwei Arbeitsdiagramme erstellt, die dieser Vorlage ähnlich waren und diese Fehler nicht hatten, obwohl der Code nicht viel anders ist. Ich denke, es könnte einen Formatierungsfehler geben, den ich nicht merke. Entweder das, oder es liegt an dem anderen Typ (die anderen waren Pods, das ist StatefulSet).

Die YAML-Datei es Referenzierung ist hier:

apiVersion: apps/v1beta1 
kind: StatefulSet 
metadata: 
    name: "{{.Values.PrimaryName}}" 
    labels: 
    name: "{{.Values.PrimaryName}}" 
    app: "{{.Values.PrimaryName}}" 
    chart: "{{.Chart.Name}}-{{.Chart.Version}}" 
    annotations: 
    "helm.sh/created": {{.Release.Time.Seconds | quote }} 
spec: 
    #serviceAccount: "{{.Values.PrimaryName}}-sa" 
    containers: 
    - name: {{.Values.ContainerName}} 
    image: "{{.Values.PostgresImage}}" 
    ports: 
    - containerPort: 5432 
     protocol: TCP 
     name: postgres 
    resources: 
     requests: 
     cpu: {{default "100m" .Values.Cpu}} 
     memory: {{default "100M" .Values.Memory}} 
    env: 
    - name: PGHOST 
     value: /tmp 
    - name: PG_PRIMARY_USER 
     value: primaryuser 
    - name: PG_MODE 
     value: set 
    - name: PG_PRIMARY_PORT 
     value: "5432" 
    - name: PG_PRIMARY_PASSWORD 
     value: "{{.Values.PrimaryPassword}}" 
    - name: PG_USER 
     value: testuser 
    - name: PG_PASSWORD 
     value: "{{.Values.UserPassword}}" 
    - name: PG_DATABASE 
     value: userdb 
    - name: PG_ROOT_PASSWORD 
     value: "{{.Values.RootPassword}}" 
    volumeMounts: 
    - name: pgdata 
     mountPath: "/pgdata" 
     readOnly: false 
    volumes: 
    - name: pgdata 
     persistentVolumeClaim: 
     claimName: {{.Values.PVCName}} 

Würde jemand eine Lage sein) zeigen Sie mir in die richtige Richtung, um herauszufinden, wie die spec.template und spec.serviceName erforderlichen Felder zu implementieren, b) verstehen, warum das Feld "Container" ungültig ist, und/oder c) ein Werkzeug erwähnen, das helfen kann, Helm-Diagramme zu debuggen? Ich habe 'Helm Lint' und das '- Debug' Flag versucht, aber 'Helm Lint' zeigt keine Fehler, und die Flag-Ausgabe wird mit den obigen Fehlern angezeigt.

Ist es möglich, dass die Fehler auch von einer anderen Datei kommen?

Antwort

1

StatefulSets Objekte haben eine andere Struktur als Pods. Sie müssen Ihre YAML-Datei etwas modifizieren:

apiVersion: apps/v1beta1 
kind: StatefulSet 
metadata: 
    name: "{{.Values.PrimaryName}}" 
    labels: 
    name: "{{.Values.PrimaryName}}" 
    app: "{{.Values.PrimaryName}}" 
    chart: "{{.Chart.Name}}-{{.Chart.Version}}" 
    annotations: 
    "helm.sh/created": {{.Release.Time.Seconds | quote }} 
spec: 
    selector: 
    matchLabels: 
     app: "" # has to match .spec.template.metadata.labels 
    serviceName: "" # put your serviceName here 
    replicas: 1 # by default is 1 
    template: 
    metadata: 
     labels: 
     app: "" # has to match .spec.selector.matchLabels 
    spec: 
     terminationGracePeriodSeconds: 10 
     containers: 
     - name: {{.Values.ContainerName}} 
     image: "{{.Values.PostgresImage}}" 
     ports: 
     - containerPort: 5432 
      protocol: TCP 
      name: postgres 
     resources: 
      requests: 
      cpu: {{default "100m" .Values.Cpu}} 
      memory: {{default "100M" .Values.Memory}} 
     env: 
     - name: PGHOST 
      value: /tmp 
     - name: PG_PRIMARY_USER 
      value: primaryuser 
     - name: PG_MODE 
      value: set 
     - name: PG_PRIMARY_PORT 
      value: "5432" 
     - name: PG_PRIMARY_PASSWORD 
      value: "{{.Values.PrimaryPassword}}" 
     - name: PG_USER 
      value: testuser 
     - name: PG_PASSWORD 
      value: "{{.Values.UserPassword}} 
     - name: PG_DATABASE 
      value: userdb 
     - name: PG_ROOT_PASSWORD 
      value: "{{.Values.RootPassword}}" 
     volumeMounts: 
     - name: pgdata 
      mountPath: "/pgdata" 
      readOnly: false 
     volumes: 
     - name: pgdata 
     persistentVolumeClaim: 
      claimName: {{.Values.PVCName}} 
+0

Ah! Okay! Vielen Dank. – IAspireToBeGladOS

Verwandte Themen