Kubernetes: kubectl --validate передает флаг, если файл yaml неверен

Созданный на 6 июн. 2018  ·  2Комментарии  ·  Источник: kubernetes/kubernetes

/ добрый баг

Я думаю это ошибка

Что случилось :
kubectl успешно проверяет yaml-файл, содержащий недопустимые данные (см. ниже содержимое yaml-файла):

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

Однако при выдаче команды без проверки она не выполняется.

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

Что вы ожидали :
kubectl create --dry-run --validate должен сообщить об ошибках в файле yaml

Как это воспроизвести (максимально минимально и точно) :
Сохраните приведенный ниже yaml в файле yaml и примените его один раз с помощью
kubectl create --dry-run --validate -f file.yaml

а затем пойти по-настоящему с
kubectl create -f file.yaml

Миникубе можно использовать.

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

Что еще нам нужно знать? :

Окружающая среда :

  • Версия Kubernetes (используйте kubectl version ):
    Версия клиента: version.Info {Major: «1», Minor: «9», GitVersion: «v1.9.6», GitCommit: «9f8ebd171479bec0ada837d7ee641dec2f8c6dd1», GitTreeState: «clean», BuildDate: «2018-03-21T15: 50Z ", GoVersion:" go1.9.3 ", компилятор:" gc ", платформа:" linux / amd64 "}
    Версия сервера: version.Info {Major: "", Minor: "", GitVersion: "v1.9.4", GitCommit: "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState: "clean", BuildDate: "2018-03-21T21:" , GoVersion: "go1.9.1", компилятор: "gc", платформа: "linux / amd64"}
  • Облачный провайдер или конфигурация оборудования:
    minikube на linux, также бывает на других кластерах, отличных от minikube
  • ОС (например, из / 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
  • Ядро (например, uname -a ):
    Linux nb 4.13.0-43-generic # 48 ~ 16.04.1-Ubuntu SMP Чт 17 мая 12:56:46 UTC 2018 x86_64 x86_64 x86_64 GNU / Linux

  • Установить инструменты:

  • Другие:

/ sig cli

kinbug sicli

Самый полезный комментарий

проверка на стороне клиента не является исчерпывающей. в первую очередь он обеспечивает правильность имен и типов полей в файле yaml. Полная проверка всегда выполняется сервером и всегда может накладывать дополнительные ограничения / ограничения по сравнению с проверкой на стороне клиента.

Все 2 Комментарий

проверка на стороне клиента не является исчерпывающей. в первую очередь он обеспечивает правильность имен и типов полей в файле yaml. Полная проверка всегда выполняется сервером и всегда может накладывать дополнительные ограничения / ограничения по сравнению с проверкой на стороне клиента.

/Закрыть

Была ли эта страница полезной?
0 / 5 - 0 рейтинги