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,而不管它属于哪个命名空间。应仔细考虑此选项。