Kubernetes 密钥提供程序
编辑Kubernetes 密钥提供程序
编辑提供对 Kubernetes 密钥 API 的访问。
使用格式 ${kubernetes_secrets.<default>.<somesecret>.<value>}
引用 Kubernetes 密钥变量,其中 default
是密钥的命名空间,somesecret
是密钥的名称,value
是要访问的密钥字段。
为了获取密钥的值,会向 API 服务器发出请求。为了避免对同一密钥的多次请求,并且不使 API 服务器不堪重负,默认情况下使用缓存来存储这些值。可以通过使用变量 cache_*
(见下文)来设置此配置。
提供程序需要一个 kubeconfig
文件来建立与 Kubernetes API 的连接。如果它在集群内环境(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
环境变量,如果不存在,则回退到集群内。 -
kube_client_options
- (可选)配置 Kubernetes 客户端的其他选项。支持的选项是
qps
和burst
。如果未设置,则使用 Kubernetes 客户端的默认 QPS 和 burst 设置。 -
cache_disable
- (可选)禁用密钥的缓存。禁用时,即设置为
true
,代码会向 API 服务器发出请求以获取值。要继续使用缓存,请将变量设置为false
。默认为false
。 -
cache_refresh_interval
- (可选)定义更新缓存中保存的所有密钥值的周期。默认为
60s
。 -
cache_ttl
- (可选)定义如果密钥未被请求,应在缓存中保留多长时间。默认为
1h
。 -
cache_request_timeout
- (可选)定义 API 服务器可以花费多长时间来提供给定密钥的值。默认为
5s
。
如果在 Kubernetes 上运行 agent,则需要在 ClusterRole
中提供适当的规则,以提供对 Secrets API 中 Elastic Agent pod 的访问权限
- apiGroups: [""] resources: - secrets verbs: ["get"]
上面的规则将允许 Elastic Agent pod 访问 Kubernetes 密钥 API。任何有权访问 Elastic Agent pod 的人(例如 kubectl exec
)也将有权访问 Kubernetes 密钥 API。这允许访问特定的密钥,而不管它属于哪个命名空间。应仔细考虑此选项。