Kubernetes Secrets 提供程序编辑

提供对 Kubernetes Secrets API 的访问。

使用格式 ${kubernetes_secrets.<default>.<somesecret>.<value>} 来引用 Kubernetes Secrets 变量,其中 default 是 Secret 的命名空间,somesecret 是 Secret 的名称,value 是要访问的 Secret 的字段。

为了获取 Secrets 的值,会向 API Server 发出请求。为了避免对同一个 Secret 发出多个请求,并且不使 API Server 过载,默认情况下会使用缓存来存储值。可以使用 cache_* 变量来设置此配置(见下文)。

该提供程序需要一个 kubeconfig 文件来建立与 Kubernetes API 的连接。如果在 InCluster 环境中运行(Elastic Agent 作为 Pod 运行),它可以自动连接到 API。

providers.kubernetes_secrets:
  #kube_config: /Users/elastic-agent/.kube/config
  #kube_client_options:
  #  qps: 5
  #  burst: 10
  #cache_disable: false
  #cache_refresh_interval: 60s
  #cache_ttl: 1h
  #cache_request_timeout: 5s
kube_config
(可选) 使用给定的配置文件作为 Kubernetes 客户端的配置。如果未设置 kube_config,则会检查 KUBECONFIG 环境变量,如果不存在,则会回退到 InCluster。
kube_client_options
(可选) 为 Kubernetes 客户端配置其他选项。支持的选项包括 qpsburst。如果未设置,则使用 Kubernetes 客户端的默认 QPS 和突发设置。
cache_disable
(可选) 禁用 Secrets 的缓存。如果禁用,则将其设置为 true,代码会向 API Server 发出请求以获取值。要继续使用缓存,请将变量设置为 false。默认值为 false
cache_refresh_interval
(可选) 定义更新缓存中所有 Secret 值的周期。默认值为 60s
cache_ttl
(可选) 定义如果未请求,Secret 应在缓存中保留多长时间。默认值为 1h
cache_request_timeout
(可选) 定义 API Server 可以花费多长时间来提供给定 Secret 的值。默认值为 5s

如果您在 Kubernetes 上运行 Agent,则需要在 ClusterRole 中添加适当的规则,以允许 Elastic Agent Pod 访问 Secrets API

- apiGroups: [""]
  resources:
    - secrets
  verbs: ["get"]

上述规则将允许 Elastic Agent Pod 访问 Kubernetes Secrets API。任何可以访问 Elastic Agent Pod 的人(例如 kubectl exec)也可以访问 Kubernetes Secrets API。这允许访问特定 Secret,无论它属于哪个命名空间。应谨慎考虑此选项。