kubernetes - 对于 yq - 我们如何获取 kubernetes configmap 中的 data 参数
问题描述
我正在研究一种使用 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"
推荐阅读
- python - 如何在 python pyvista 中读取 dem 文件
- c++ - c ++:将父类转换为子类并调用子类的函数
- javascript - `yarn add` 和 `npm install --save` 都不会将包安装到本地项目
- javascript - Firebase SDK 身份验证 reauthenticateWithCredential 有什么意义?
- spring-boot - 弹簧配置文件未加载某些属性?
- ios - 为什么通知服务扩展没有在 iOS 14 上触发?
- scala - 将 Scala 3.0 SDK 添加到 IntelliJ
- python - 在 python 中使用 pymodbus 读取离散输入
- ios - iOS - 仅使用 Opus 编解码器的 WebRTC 单向音频
- python - 在给定系数列表的情况下计算互补 CDF