Kubernetes: kubectl - Flag-Pass validieren, wenn die Yaml-Datei falsch ist

Erstellt am 6. Juni 2018  ·  2Kommentare  ·  Quelle: kubernetes/kubernetes

/ Art Bug

Ich denke, das ist ein Fehler

Was ist passiert :
kubectl validiert erfolgreich eine Yaml-Datei, die ungültige Daten enthält (siehe unten für den Inhalt der Yaml-Datei):

$ kubectl --context=minikube  create --dry-run --validate -f invalid.yml 
deployment "test" created (dry run)

Wenn der Befehl jedoch ohne Validierung ausgegeben wird, schlägt er fehl

$ kubectl --context=minikube apply -f invalid.yml 
The Deployment "test" is invalid: 
* metadata.labels: Invalid value: "£\"+=_+!¹²³€}{{@\"}{@~@:>?|\\|¬`}": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')
* spec.replicas: Invalid value: -100: must be greater than or equal to 0
* spec.selector.matchLabels: Invalid value: "£\"+=_+!¹²³€}{{@\"}{@~@:>?|\\|¬`}": a valid label must be an empty string or consist of alphanumeric characters, '-', '_' or '.', and must start and end with an alphanumeric character (e.g. 'MyValue',  or 'my_value',  or '12345', regex used for validation is '(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?')
* spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app":"£\"+=_+!¹²³€}{{@\"}{@~@:>?|\\|¬`}"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: invalid label selector.

Was Sie erwartet hatten :
kubectl create --dry-run --validate sollte melden, dass die yaml-Datei Fehler enthält

Wie man es reproduziert (so minimal und präzise wie möglich) :
Speichern Sie die unten stehende Yaml in einer Yaml-Datei und wenden Sie sie einmal mit an
kubectl create --dry-run --validate -f file.yaml

und dann echt mit gehen
kubectl create -f file.yaml

Minikube kann verwendet werden.

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test
  labels:
    app: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}
  namespace: default
spec:
  replicas: -100
  revisionHistoryLimit: 2
  template:
    metadata:
      labels:
        app: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}
    spec:
      containers:
      - image: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}
        name: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}
        envFrom:
        - secretRef:
            name: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}

Was müssen wir noch wissen? ::

Umwelt :

  • Kubernetes-Version (verwenden Sie kubectl version ):
    Client-Version: version.Info {Major: "1", Minor: "9", GitVersion: "v1.9.6", GitCommit: "9f8ebd171479bec0ada837d7ee641dec2f8c6dd1", GitTreeState: "clean", BuildDate: "2018-03-21T15: 21: 50Z ", GoVersion:" go1.9.3 ", Compiler:" gc ", Plattform:" linux / amd64 "}
    Serverversion: version.Info {Major: "", Minor: "", GitVersion: "v1.9.4", GitCommit: "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState: "clean", BuildDate: "2018-03-21T21: 48: 36Z" , GoVersion: "go1.9.1", Compiler: "gc", Plattform: "linux / amd64"}
  • Cloud-Anbieter oder Hardwarekonfiguration:
    Minikube unter Linux, passiert auch auf anderen Nicht-Minikube-Clustern
  • Betriebssystem (zB aus / etc / os-release):
NAME="Linux Mint"
VERSION="18.3 (Sylvia)"
ID=linuxmint
ID_LIKE=ubuntu
PRETTY_NAME="Linux Mint 18.3"
VERSION_ID="18.3"
VERSION_CODENAME=sylvia
UBUNTU_CODENAME=xenial
  • Kernel (zB uname -a ):
    Linux nb 4.13.0-43-generic # 48 ~ 16.04.1-Ubuntu SMP Do 17. Mai 12:56:46 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

  • Tools installieren:

  • Andere:

/ sig cli

kinbug sicli

Hilfreichster Kommentar

Die clientseitige Validierung ist nicht vollständig. Es stellt in erster Linie sicher, dass die Feldnamen und -typen in der yaml-Datei gültig sind. Die vollständige Validierung wird immer vom Server durchgeführt und kann der clientseitigen Validierung immer zusätzliche Einschränkungen auferlegen.

Alle 2 Kommentare

Die clientseitige Validierung ist nicht vollständig. Es stellt in erster Linie sicher, dass die Feldnamen und -typen in der yaml-Datei gültig sind. Die vollständige Validierung wird immer vom Server durchgeführt und kann der clientseitigen Validierung immer zusätzliche Einschränkungen auferlegen.

/schließen

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen