通过Go Kubernetes客户端更新ConfigMap

huangapple go评论78阅读模式
英文:

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中是否可以实现以下操作,或者是否有解决方法:

  1. 用另一个文件替换整个configMap文件的内容。
  2. 向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:

  1. Replacing the entire contents of the configMap file with another file
  2. 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
}

huangapple
  • 本文由 发表于 2023年7月11日 02:37:28
  • 转载请务必保留本文链接:https://go.coder-hub.com/76656448.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定