OpenShift中如何使用指定JSON对象创建ConfigMap
如何创建包含指定JSON内容的ConfigMap
我来帮你补全并优化这个ConfigMap的创建命令!根据你的需求,这里有几种可靠的实现方式,适配不同的场景:
方法1:直接用kubectl命令行(适合快速创建)
因为你的JSON内容不算特别复杂,可以直接通过--from-literal参数传入,关键是要处理好引号的转义问题。用单引号包裹整个JSON字符串,就能避免Shell解析双引号时出错:
kubectl create configmap manifest-config \ --from-literal=manifestJSON='{"appRepoVersionsMap": {"repoA": "1.0.0.131", "repoB": "1.0.0.7393"}, "deployerVersion": "49", "openshiftConfigCommitId": "o76to87y"}'
如果你的终端不支持换行(或者不想用换行),也可以写成一行:
kubectl create configmap manifest-config --from-literal=manifestJSON='{"appRepoVersionsMap": {"repoA": "1.0.0.131", "repoB": "1.0.0.7393"}, "deployerVersion": "49", "openshiftConfigCommitId": "o76to87y"}'
方法2:通过文件创建(适合复杂JSON或需要复用的场景)
如果后续需要修改JSON内容,或者JSON结构更复杂,把内容写到文件里会更清晰:
- 先创建一个名为
manifest.json的文件,内容就是你指定的JSON:
{"appRepoVersionsMap": {"repoA": "1.0.0.131", "repoB": "1.0.0.7393"}, "deployerVersion": "49", "openshiftConfigCommitId": "o76to87y"}
- 然后执行
kubectl命令,通过--from-file指定键名和文件路径:
kubectl create configmap manifest-config --from-file=manifestJSON=manifest.json
这里的manifestJSON=是用来指定ConfigMap里的键名,如果省略的话,键名会默认是文件名manifest.json。
方法3:在Groovy脚本中使用(适配你提到的def osCmd场景)
如果是在Groovy脚本里构建这个命令,要注意字符串的转义规则,推荐用三重双引号来包裹命令,这样内部的引号不需要额外转义:
def osCmd = """kubectl create configmap manifest-config \ --from-literal=manifestJSON='{"appRepoVersionsMap": {"repoA": "1.0.0.131", "repoB": "1.0.0.7393"}, "deployerVersion": "49", "openshiftConfigCommitId": "o76to87y"}'"""
或者用单引号包裹命令的话,需要把内部的单引号转义成两个单引号:
def osCmd = 'kubectl create configmap manifest-config --from-literal=manifestJSON=\'{"appRepoVersionsMap": {"repoA": "1.0.0.131", "repoB": "1.0.0.7393"}, "deployerVersion": "49", "openshiftConfigCommitId": "o76to87y"}\''
验证创建结果
创建完成后,可以用下面的命令检查ConfigMap的内容是否正确:
kubectl get configmap manifest-config -o yaml
你会看到data字段下的manifestJSON值和你指定的JSON一致。
内容的提问来源于stack exchange,提问作者wiredniko
相关产品推荐
相关产品推荐

