Ist das eine Bitte um Hilfe?
Nein
Nach welchen Schlüsselwörtern haben Sie in Kubernetes-Ausgaben gesucht, bevor Sie diese eingereicht haben?
Ist dies ein FEHLERBERICHT oder eine FEATURE-ANFRAGE? (wähle ein):
Kubernetes-Version (verwenden Sie kubectl version
): 1.3.6
Umgebung :
uname -a
): Linux kash-api-4080102595-t21vs 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2 (2016-04-08) x86_64 LinuxWas ist passiert : Beim Erstellen von Secrets/Configmaps scheint es ziemlich zufällig zu sein, wann Werte in Anführungszeichen gesetzt werden sollen oder nicht. Manchmal handelt es sich um Zahlen, manchmal um Zeichenfolgen, und nicht immer, weil mit nicht standardmäßigen Zeichen begonnen wird.
Wir verwenden NodeJS, um unsere Konfigurationen zu generieren, und (überraschenderweise) unterstützt keine der Bibliotheken das Erzwingen von Anführungszeichen um Werte und generiert gültiges YAML für alle unsere anderen Anwendungsfälle. Wir greifen auf einige nachgenerierte 'sed' /magic/ zurück, um die Anführungszeichen hinzuzufügen, aber das ist nicht ideal.
Ist es möglich, dass die von kubectl verwendete YAML-Validierung zu streng/gebrochen ist, wenn Werte in Anführungszeichen gesetzt werden müssen oder nicht?
Was Sie erwartet haben : Damit Sie nach der Verwendung eines gültigen YAML-Generators keine Anführungszeichen manuell hinzufügen müssen
So reproduzieren Sie es (so minimal und genau wie möglich):
Hier ist ein configmap-Wert, der Anführungszeichen erfordert
dbconnectiontimeout: '60'
oder
remoteip: 'irgendwie-host-hier'
Was müssen wir sonst noch wissen :
@theothermike Hallo, dies scheint ein bekanntes Problem zu sein und es scheint keine wirkliche Lösung dafür zu geben. dh Sie Typ richtig .. Ich würde vorschlagen , bei der Diskussion hier angeben müssen https://github.com/kubernetes/kubernetes/issues/2763 Viele gute Kommentare von @liggitt Dies war ein weiteres ähnliches Problem gemeldet und geschlossen https: / /github.com/kubernetes/kubernetes/issues/28974 Wenn Sie damit @liggitt macht Sinn?
Ich kann Zahlen ohne Anführungszeichen verwenden, indem ich den Werten !!integer
. Aber !!int
funktioniert nicht. (Mit Kubernetes 1.8)
Ex:
apiVersion: v1
kind: ConfigMap
metadata:
name: identity-config
data:
TC_HOST: 192.168.1.10
TC_PORT: !!integer 8080
Stimme mit spzala zu, der Typ muss korrekt als String angegeben werden. Yaml erfordert nur, dass Zahlen- und Boolesche Werte in Anführungszeichen gesetzt werden (Alphawerte werden als Strings gefolgert), aber Sie können alle configmap-Datenwerte in Anführungszeichen setzen, wenn es einfacher ist