Skip to content

Commit ecfe154

Browse files
committed
rob-1126: support centralized prometheus/alertmanager
1 parent 67777be commit ecfe154

2 files changed

Lines changed: 24 additions & 12 deletions

File tree

  • playbooks/robusta_playbooks
  • src/robusta/integrations/prometheus

playbooks/robusta_playbooks/krr.py

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,14 @@ class KRRSecret(BaseModel):
178178
secret_value: str
179179
command_flag: str
180180

181-
def __init__(self, env_var_name: str, secret_key: str, secret_value: str, command_flag: str):
182-
secret_b64_str = base64.b64encode(bytes(secret_value, "utf-8")).decode("utf-8")
183-
super().__init__(
184-
env_var_name=env_var_name, secret_key=secret_key, secret_value=secret_b64_str, command_flag=command_flag
185-
)
181+
@validator('secret_value', pre=True, always=True, allow_reuse=True)
182+
def encode_secret_value(cls, v: str) -> str:
183+
if isinstance(v, str):
184+
return base64.b64encode(bytes(v, "utf-8")).decode("utf-8")
185+
raise ValueError("secret_value must be a string")
186+
187+
class KRRSecretKeyValuePair(KRRSecret):
188+
arg_key: str
186189

187190

188191
def _generate_krr_job_secret(scan_id: str, krr_secrets: Optional[List[KRRSecret]]) -> Optional[JobSecret]:
@@ -210,7 +213,14 @@ def _generate_krr_env_vars(
210213
def _generate_additional_env_args(krr_secrets: Optional[List[KRRSecret]]) -> str:
211214
if not krr_secrets:
212215
return ""
213-
return " ".join(f"{secret.command_flag} '$({secret.env_var_name})'" for secret in krr_secrets)
216+
additional_args = []
217+
for secret in krr_secrets:
218+
if isinstance(secret, KRRSecretKeyValuePair):
219+
additional_args.append(f"{secret.command_flag} '{secret.arg_key}:$({secret.env_var_name})'")
220+
else:
221+
additional_args.append(f"{secret.command_flag} '$({secret.env_var_name})'")
222+
223+
return " ".join(additional_args)
214224

215225

216226
def _generate_cmd_line_args(prom_config: PrometheusConfig) -> str:
@@ -230,7 +240,6 @@ def _generate_prometheus_secrets(prom_config: PrometheusConfig) -> List[KRRSecre
230240
# needed for custom bearer token or Azure
231241
headers = PrometheusAuthorization.get_authorization_headers(prom_config)
232242
auth_header = headers["Authorization"] if "Authorization" in headers else ""
233-
additional_headers = prom_config["headers"] if "headers" in prom_config else None
234243

235244
if auth_header:
236245
krr_secrets.append(
@@ -242,18 +251,19 @@ def _generate_prometheus_secrets(prom_config: PrometheusConfig) -> List[KRRSecre
242251
)
243252
)
244253

245-
if additional_headers:
254+
if prom_config.headers:
246255
for header_name, header_value in prom_config.headers.items():
247256

248257
env_var_name = f"PROMETHEUS_HEADER_{header_name.upper().replace('-', '_')}"
249258
secret_key = f"prometheus-header-{header_name.lower()}"
250259

251260
krr_secrets.append(
252-
KRRSecret(
261+
KRRSecretKeyValuePair(
253262
env_var_name=env_var_name,
263+
arg_key=header_name,
254264
secret_key=secret_key,
255265
secret_value=header_value,
256-
command_flag=f"--prometheus-header {header_name}:",
266+
command_flag="--prometheus-headers",
257267
)
258268
)
259269

src/robusta/integrations/prometheus/utils.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,13 @@ def generate_prometheus_config(prometheus_params: PrometheusParams) -> Prometheu
4848
"url": url,
4949
"disable_ssl": not PROMETHEUS_SSL_ENABLED,
5050
"additional_labels": prometheus_params.prometheus_additional_labels,
51-
"prometheus_url_query_string": prometheus_params.prometheus_url_query_string,
52-
"headers": prometheus_params.prometheus_additional_headers
51+
"prometheus_url_query_string": prometheus_params.prometheus_url_query_string
5352
}
5453
if prometheus_params.prometheus_auth:
5554
baseconfig["prometheus_auth"] = prometheus_params.prometheus_auth.get_secret_value()
55+
56+
if prometheus_params.prometheus_additional_headers:
57+
baseconfig["headers"] = prometheus_params.prometheus_additional_headers
5658

5759
# aws config
5860
if AWS_ACCESS_KEY:

0 commit comments

Comments
 (0)