kubernetes - 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": {
...
},
"data": {
...
},
"type": "kubernetes.io/service-account-token"
},
{
"metadata": {
...
},
"data": {
...
},
"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 客户端库获取秘密可能是个好主意?
如果要获取类型集群中的所有秘密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)
等等...
更多详细信息,包括可用于此方法的参数,您可以在此处找到(只需搜索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)
推荐阅读
- r - R Shiny 使用 selectInput 忽略占位符标签/值过滤
- html - 表格列宽适合内容并在宽度不足时截断单元格文本
- postgresql - 为什么这两个查询在 postgresql 中不同?
- ruby - 如何使用 rvm 设置捆绑器版本?
- bash - 来自变量的 Bash 函数参数
- reactjs - 导入 React-FontAwesome 时出现“Require is not defined”
- python - pandas to_datetime 为不正确的日期格式引发值错误
- javascript - 为 React 格式化一个 js 脚本(理解逻辑)
- javascript - 如何在悬停细分时使背景图像平滑变化?
- python - investpy RuntimeError: ERR#0019: fund not found,检查是否正确