使用nodejs尝试通过运行child_process kubectl部署json输出来解析属性值(副本数) 你能建议我做错了什么吗?
** 错误:var deploymentInfo = item.spec.map((c) => { return {replicas: c.replicas} }); ^ TypeError:item.spec.map 不是函数 **
` {
"apiVersion": "v1",
"items": [
{
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"metadata": {
"labels": {
"env": "stage"
},
"name": "sl-deployment"
},
"spec": {
"progressDeadlineSeconds": 2147483647,
"replicas": 3,
"revisionHistoryLimit": 3,
"selector": {
"matchLabels": {
"env": "nonprod",
"microservice": "svc-microservice",
"name": "sl-deployment"
}
},
"strategy": {
"rollingUpdate": {
"maxSurge": 1,
"maxUnavailable": 1
},
"type": "RollingUpdate"
},
"template": {
"metadata": {
"labels": {
"env": "stage",
"microservice": "svc-microservice",
"name": "sl-deployment"
}
},
"spec": {
"containers": [
{
"image": "myregistry/svc-microservice/sl-deployment:stage.4.30",
"name": "sl-deployment",
"resources": {
"limits": {
"cpu": "6",
"memory": "16Gi"
},
"requests": {
"cpu": "2",
"memory": "6Gi"
}
}
}
]
}
}
}
} ]`
尝试了下面粘贴的代码
exec(`kubectl get deployment -n svc-microservice -o json`, (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
var deployjson = JSON.parse(stdout);
for (let item of datamaps.items) {
var deploymentInfo = item.spec.map((c) => { return { replicas: c.replicas} });
for (let info of deploymentInfo) {
metadata[name][info.name] = { deployment:info.replicas}
}
}
})
** 错误:varDeploymentInfo = item.spec.map((c) => { return {replicas: c.replicas} }); ^ 类型错误:item.spec.map 不是函数 **
看起来
spec
属性是一个对象,所以你不能在它上面使用map函数。 map 函数仅适用于数组。
如果你只是想获取
replicas
属性,则不需要做任何特殊的事情,只需访问spec对象上的属性即可:
item.spec.replicas