Kubernetes ConfigMap更新

时间:2018-09-05 12:18:08

标签: python rest http kubernetes

我正在使用python脚本以编程方式更新configmap。

示例脚本如下所示。

import requests

headers = {"Content-Type": "application/json-patch+json"}
configData = {
"apiVersion": "v1",
"kind": "ConfigMap",
"data": {
    "test2.load": "testimtest"
},
"metadata": {
    "name": "nginx2"
}
}

r = requests.patch("http://localhost:8080/api/v1/namespaces/default/configmaps/nginx2", json=configData)

这个问题的有趣之处在于我对POST和GET方法没有问题,但是当我想用HTTP的PATCH方法更新kubernetes configmaps时,我会得到

 "reason":"UnsupportedMediaType" //STATUS_CODE 415

如何处理此问题。

2 个答案:

答案 0 :(得分:0)

您必须阅读一点信息,以了解实际上是否支持此HTTP动词,也许您遇到权限问题?

无论如何,我对您的建议是使用kubectl的详细选项来找出类似的东西。

例如,假设我要删除广告连播,我会这样做:

kubectl -v=9 delete pod myapp

输出(我整理了一下)应该包含您要查找的信息:

I1315 14:42:19.153664 30452 round_trippers.go:417]
   curl -k -v -XDELETE -H "Accept: application/json, */*"
   -H "User-Agent: kubectl/v1.8.5 (linux/amd64) kubernetes/cce11c6"
   https://<ip>:<port>/api/v1/namespaces/default/pods/myapp
...

现在,如果我有用python或其他方法构造方法所需的所有详细信息,希望有道理和/或有帮助,请尝试使用patch命令。

答案 1 :(得分:0)

我建议您使用Kubernetes客户端库,而不要自己进行原始HTTP调用。然后,您无需弄清底层连接的内容,因为该库将为您抽象出来。

我一直在使用Pykube,它提供了一个不错的pythonic API,尽管现在看来它确实已经被放弃了。

您还可以使用官方维护的client-python。该库有点笨拙,因为它基于自动生成的OpenAPI客户端,但是它涵盖了很多用例,例如流式传输结果。