Kubernetes Secrets 提供程序
编辑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 客户端配置其他选项。支持的选项包括
qps
和burst
。如果未设置,则使用 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,无论它属于哪个命名空间。应谨慎考虑此选项。