微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

对于 yq - 我们如何在 kubernetes configmap 中获取数据参数

如何解决对于 yq - 我们如何在 kubernetes configmap 中获取数据参数

我正在研究一种使用 Mike Farah 的 yq 为 kubernetes 操作 ConfigMap 的方法

apiVersion: v1
kind: ConfigMap
Metadata:
  name: game-config
  namespace: default
data:
  game.properties: |
    enemies=aliens
    lives=3
    enemies.cheat=true
    enemies.cheat.level=noGoodRotten
    secret.code.passphrase=UUDDLRLRBABAS
    secret.code.allowed=true
    secret.code.lives=30    
  ui.properties: |
    color.good=purple
    color.bad=yellow
    allow.textmode=true
    how.nice.to.look=fairlyNice  

我想更新 game.properties 值 - 寿命为 999。

然而,当我尝试下面的命令时,我分别得到了错误

$ yq e '.data.[game.properties]="enemies=aliens\nlives=3\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.passphrase=UUDDLRLRBABAS\nsecret.code.allowed=true\nsecret.code.lives=30    \n"' test-configmap.yaml
Error: Parsing expression: Lexer error: Could not match text starting at 1:8 failing at 1:9.
        unmatched text: "g"

我认为问题在于访问数据。

$ yq e ".data[0]" test-configmap.yaml
null
$ yq e ".data.[0]" test-configmap.yaml
null
$ yq e ".data.[game.properties]" test-configmap.yaml
Error: Parsing expression: Lexer error: Could not match text starting at 1:8 failing at 1:9.
        unmatched text: "g"

但是当我在下面尝试时,我得到了数据的值:

yq e ".data.[]" test-configmap.yaml
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30

color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice

奇怪的是它不允许我访问数据名称,即 game.properties 和 ui.properties。

解决方法

看来我已经知道怎么做了。 所以我们必须使用双引号来访问数据字段参数。

添加我的命令以供参考。

yq e '.data."game.properties"="enemies=aliens\nlives=999\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.passphrase
=UUDDLRLRBABAS\nsecret.code.allowed=true\nsecret.code.lives=30    \n"' test-configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  creationTimestamp: 2016-02-18T18:52:05Z
  name: game-config
  namespace: default
  resourceVersion: "516"
  uid: b4952dc3-d670-11e5-8cd0-68f728db1985
data:
  game.properties: |-
    enemies=aliens\nlives=999\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.passphrase=UUDDLRLRBABAS\nsecret.code.allowed=true\nsecret.code.lives=30    \n
  ui.properties: "color.good=purple\ncolor.bad=yellow\nallow.textmode=true\nhow.nice.to.look=fairlyNice  \n"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。