英文:
Update ConfigMap via Go Kubernetes client
问题
我正在使用Go k8客户端将ConfigMap卷挂载到一个Pod上,其中template-conf
是一个文件(在命名空间中部署的helm yaml)。
pod.Spec.Volumes = append(pod.Spec.Volumes, corev1.Volume{
Name: "conf",
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: "template-conf",
},
},
},
})
我想知道在Go中是否可以实现以下操作,或者是否有解决方法:
- 用另一个文件替换整个configMap文件的内容。
- 向configMap文件追加更多行。类似于以下代码:
if (...) {
...append(configMap, {
"hello-world\nhello-world\nhello-world"
}),
}
英文:
I am mounting a ConfigMap volume to a pod using Go k8 cient where template-conf
is a file (deployed helm yaml in the namespace)
pod.Spec.Volumes = append(pod.Spec.Volumes, corev1.Volume{
Name: "conf",
VolumeSource: corev1.VolumeSource{
ConfigMap: &corev1.ConfigMapVolumeSource{
LocalObjectReference: corev1.LocalObjectReference{
Name: "template-conf",
},
},
},
})
I was wondering if the following are possible to do in Go or if there's a workaround:
- Replacing the entire contents of the configMap file with another file
- Appending more lines to the configMap file. So something like this:
if (...) {
...append(configMap, {
"hello-world\nhello-world\nhello-world"
}),
}
答案1
得分: 1
ConfigMap 资源不是设计成直接通过替换整个内容或追加行来修改的。
尝试以下操作:
// 检索现有的 ConfigMap
configMap, err := clientset.CoreV1().ConfigMaps("namespace").Get(context.TODO(), "template-conf", metav1.GetOptions{})
if err != nil {
// 处理错误
}
// 修改 ConfigMap 中的数据
configMap.Data["key1"] = "value1"
configMap.Data["key2"] = "value2"
// 更新 ConfigMap
updatedConfigMap, err := clientset.CoreV1().ConfigMaps("namespace").Update(context.TODO(), configMap, metav1.UpdateOptions{})
if err != nil {
// 处理错误
}
请注意,这是一个示例代码片段,你需要根据自己的实际情况进行适当的修改。
英文:
ConfigMap resource is not designed to be modified directly by replacing the entire contents or appending lines.
Try:
// Retrieve the existing ConfigMap
configMap, err := clientset.CoreV1().ConfigMaps("namespace").Get(context.TODO(), "template-conf", metav1.GetOptions{})
if err != nil {
// handle error
}
// Modify the data in the ConfigMap
configMap.Data["key1"] = "value1"
configMap.Data["key2"] = "value2"
// Update the ConfigMap
updatedConfigMap, err := clientset.CoreV1().ConfigMaps("namespace").Update(context.TODO(), configMap, metav1.UpdateOptions{})
if err != nil {
// handle error
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论