Kubernetes: kubectl --validate passe le drapeau lorsque le fichier yaml est incorrect

Créé le 6 juin 2018  ·  2Commentaires  ·  Source: kubernetes/kubernetes

/ genre bug

Je pense que c'est un bug

Qu'est-il arrivé :
kubectl a réussi à valider un fichier yaml contenant des données non valides (voir ci-dessous pour le contenu du fichier yaml):

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

Cependant, lors de l'émission de la commande sans la validation, elle échoue

$ 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.

Ce à quoi vous vous attendiez :
kubectl create --dry-run --validate devrait signaler qu'il y a des erreurs dans le fichier yaml

Comment le reproduire (de la manière la plus minimale et la plus précise possible) :
Enregistrez le yaml ci-dessous dans un fichier yaml et appliquez une fois avec
kubectl create --dry-run --validate -f file.yaml

puis allez pour de vrai avec
kubectl create -f file.yaml

Minikube peut être utilisé.

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: £"+=_+!¹²³€}{{@"}{@~@:>?|\|¬`}

Y a-t-il autre chose que nous devons savoir? :

Environnement :

  • Version Kubernetes (utilisez kubectl version ):
    Version du client: version.Info {Major: "1", Minor: "9", GitVersion: "v1.9.6", GitCommit: "9f8ebd171479bec0ada837d7ee641dec2f8c6dd1", GitTreeState: "clean", BuildDate: "2018-03-21T15: 21: 50Z ", GoVersion:" go1.9.3 ", Compilateur:" gc ", Plate-forme:" linux / amd64 "}
    Version du serveur: version.Info {Major: "", Minor: "", GitVersion: "v1.9.4", GitCommit: "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState: "clean", BuildDate: "2018-03-21T21: 48: 36Zate" , GoVersion: "go1.9.1", Compilateur: "gc", Plate-forme: "linux / amd64"}
  • Fournisseur de cloud ou configuration matérielle:
    minikube sur linux, se produit également sur d'autres clusters non minikube
  • OS (par exemple à partir de / 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
  • Noyau (par exemple uname -a ):
    Linux nb 4.13.0-43-generic # 48 ~ 16.04.1-Ubuntu SMP jeu 17 mai 12:56:46 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

  • Installer les outils:

  • Autres:

/ sig cli

kinbug sicli

Commentaire le plus utile

la validation côté client n'est pas exhaustive. il garantit principalement que les noms et types de champs dans le fichier yaml sont valides. la validation complète est toujours effectuée par le serveur et peut toujours imposer des restrictions / contraintes supplémentaires par rapport à la validation côté client.

Tous les 2 commentaires

la validation côté client n'est pas exhaustive. il garantit principalement que les noms et types de champs dans le fichier yaml sont valides. la validation complète est toujours effectuée par le serveur et peut toujours imposer des restrictions / contraintes supplémentaires par rapport à la validation côté client.

/Fermer

Cette page vous a été utile?
0 / 5 - 0 notes