Kubernetes: kubectl - التحقق من تمرير العلم عندما يكون ملف yaml خاطئًا

تم إنشاؤها على ٦ يونيو ٢٠١٨  ·  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

يمكن استخدام Minikube.

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: 21: 50Z "، GoVersion:" go1.9.3 "، المترجم:" gc "، النظام الأساسي:" linux / amd64 "}
    إصدار الخادم: version.Info {Major: ""، Minor: ""، GitVersion: "v1.9.4"، GitCommit: "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"، GitTreeState: "Clean"، BuildDate: "2018-03-21T21: 48: 36Z" ، GoVersion: "go1.9.1" ، المترجم: "gc" ، النظام الأساسي: "linux / amd64"}
  • مزود السحابة أو تكوين الأجهزة:
    minikube على لينكس ، يحدث أيضًا على مجموعات أخرى غير 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
  • Kernel (على سبيل المثال uname -a ):
    Linux nb 4.13.0-43-generic # 48 ~ 16.04.1-Ubuntu SMP الخميس 17 مايو 12:56:46 بالتوقيت العالمي المنسق 2018 x86_64 x86_64 x86_64 GNU / Linux

  • أدوات التثبيت:

  • الآخرين:

/ سيج cli

kinbug sicli

التعليق الأكثر فائدة

التحقق من جانب العميل ليس شاملاً. يضمن بشكل أساسي أن أسماء الحقول وأنواعها في ملف yaml صالحة. يتم دائمًا إجراء التحقق الكامل من قبل الخادم ، ويمكنه دائمًا فرض قيود / قيود إضافية على التحقق من جانب العميل.

ال 2 كومينتر

التحقق من جانب العميل ليس شاملاً. يضمن بشكل أساسي أن أسماء الحقول وأنواعها في ملف yaml صالحة. يتم دائمًا إجراء التحقق الكامل من قبل الخادم ، ويمكنه دائمًا فرض قيود / قيود إضافية على التحقق من جانب العميل.

/أغلق

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات