如何解决Kubernetes API 服务器按字段过滤 - 在请求时间
我正在尝试获取 helm.sh/release.v1
类型的集群中的所有机密:
$ curl -X GET $APISERVER/api/v1/secrets --header "Authorization: Bearer $TOKEN" --insecure
{
"kind": "SecretList","apiVersion": "v1","Metadata": {
"selfLink": "/api/v1/secrets","resourceVersion": "442181"
},"items": [
{
"Metadata": {
...
},"data": {
...
},"type": "helm.sh/release.v1"
},{
"Metadata": {
...
},"type": "kubernetes.io/service-account-token"
},...
}
我可以使用上面的命令,然后自己过滤(jq
或其他),但我想知道是否有一个选项可以通过添加查询参数或其他东西来过滤 API,例如(不起作用) :
curl -X GET $APISERVER/api/v1/secrets?type=<value>
知道如何按特定字段过滤吗? (type
) 我还可以请求响应中的特定字段吗(例如,如果我不关心 data
)?
解决方法
我将使用来自我运行的应用程序 (python) 的 HTTP 请求 在集群中的一个 pod 中。我正在努力提高效率并询问 仅用于我需要的(仅特定类型而不是所有秘密) 簇)
如果您的应用程序是用 Python 编写的,也许使用 Kubernetes Python Client library 来获取机密是个好主意?
如果您想获取 helm.sh/release.v1
类型集群中的所有机密,可以使用以下 Python 代码来实现:
from kubernetes import client,config
config.load_kube_config()
v1 = client.CoreV1Api()
list_secrets = v1.list_secret_for_all_namespaces(field_selector='type=helm.sh/release.v1')
如果您还想计算它们,请使用:
print(len(list_secrets.items))
打印秘密名称使用:
print(list_secrets.items[0].metadata.name)
检索它的数据:
print(list_secrets.items[0].data)
等等...
更多详细信息,包括可以与此方法一起使用的参数,您可以找到here(只需搜索list_secret_for_all_namespaces
):
# **list_secret_for_all_namespaces**
> V1SecretList list_secret_for_all_namespaces(allow_watch_bookmarks=allow_watch_bookmarks,_continue=_continue,field_selector=field_selector,label_selector=label_selector,limit=limit,pretty=pretty,resource_version=resource_version,timeout_seconds=timeout_seconds,watch=watch)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。