Skip to content

Commit b5d3713

Browse files
Kunal-DarekartalborenKiryous
authored
feat: Add Flux CD provider for service topology and alert integration (#4721)
Signed-off-by: Kunal Darekar <150500530+Kunal-Darekar@users.noreply.github.com> Co-authored-by: Tal <tal@keephq.dev> Co-authored-by: Kirill Chernakov <yakiryous@gmail.com>
1 parent 75fdc48 commit b5d3713

26 files changed

+2402
-82
lines changed

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,12 @@
706706
ArgoCD
707707
</a>
708708
</td>
709+
<td align="center" width="150">
710+
<a href="https://docs.keephq.dev/providers/documentation/fluxcd-provider" target="_blank">
711+
<img width="40" src="keep-ui/public/icons/fluxcd-icon.png" alt="Flux CD"/><br/>
712+
Flux CD
713+
</a>
714+
</td>
709715
<td align="center" width="150">
710716
<a href="https://docs.keephq.dev/providers/documentation/gke-provider" target="_blank">
711717
<img width="40" src="keep-ui/public/icons/gke-icon.png" alt="GKE"/><br/>

docs/mint.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
"providers/documentation/eks-provider",
175175
"providers/documentation/elastic-provider",
176176
"providers/documentation/flashduty-provider",
177+
"providers/documentation/fluxcd-provider",
177178
"providers/documentation/gcpmonitoring-provider",
178179
"providers/documentation/gemini-provider",
179180
"providers/documentation/github-provider",
Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
---
2+
title: "Flux CD"
3+
sidebarTitle: "Flux CD Provider"
4+
description: "Flux CD Provider enables integration with Flux CD for GitOps topology and alerts."
5+
---
6+
import AutoGeneratedSnippet from '/snippets/providers/fluxcd-snippet-autogenerated.mdx';
7+
8+
<AutoGeneratedSnippet />
9+
10+
## Overview
11+
12+
Flux CD is a GitOps tool for Kubernetes that provides continuous delivery through automated deployment, monitoring, and management of applications. This provider allows you to integrate Flux CD with Keep to get a single pane of glass for monitoring your GitOps deployments.
13+
14+
## Features
15+
16+
### Topology
17+
18+
The Flux CD provider pulls topology data from the following Flux CD resources:
19+
20+
- GitRepositories
21+
- HelmRepositories
22+
- HelmCharts
23+
- OCI Repositories
24+
- Buckets
25+
- Kustomizations
26+
- HelmReleases
27+
28+
The topology shows the relationships between these resources, allowing you to visualize the GitOps deployment process. Resources are categorized as:
29+
30+
- **Source**: GitRepositories, HelmRepositories, OCI Repositories, Buckets
31+
- **Deployment**: Kustomizations, HelmReleases
32+
33+
### Alerts
34+
35+
The Flux CD provider gets alerts from two sources:
36+
37+
1. Kubernetes events related to Flux CD controllers
38+
2. Status conditions of Flux CD resources (GitRepositories, Kustomizations, HelmReleases)
39+
40+
Alerts include:
41+
42+
- Failed GitRepository operations
43+
- Failed Kustomization operations
44+
- Failed HelmRelease operations
45+
- Non-ready resources
46+
47+
Alert severity is determined based on:
48+
- **Critical**: Events with "failed", "error", "timeout", "backoff", or "crash" in the reason
49+
- **High**: Other warning events
50+
- **Info**: Normal events
51+
52+
## Connecting with the Provider
53+
54+
The Flux CD provider supports multiple authentication methods:
55+
56+
1. **Kubeconfig file content** (recommended for external access)
57+
2. **API server URL and token**
58+
3. **In-cluster configuration** (when running inside a Kubernetes cluster)
59+
4. **Default kubeconfig file** (from ~/.kube/config)
60+
61+
### Using Kubeconfig
62+
63+
```yaml
64+
apiVersion: keep.sh/v1
65+
kind: Provider
66+
metadata:
67+
name: flux-cd
68+
spec:
69+
type: fluxcd
70+
authentication:
71+
kubeconfig: |
72+
apiVersion: v1
73+
kind: Config
74+
clusters:
75+
- name: my-cluster
76+
cluster:
77+
server: https://kubernetes.example.com
78+
certificate-authority-data: BASE64_ENCODED_CA_CERT
79+
users:
80+
- name: my-user
81+
user:
82+
token: MY_TOKEN
83+
contexts:
84+
- name: my-context
85+
context:
86+
cluster: my-cluster
87+
user: my-user
88+
current-context: my-context
89+
context: my-context
90+
namespace: flux-system
91+
```
92+
93+
### Using API Server and Token
94+
95+
```yaml
96+
apiVersion: keep.sh/v1
97+
kind: Provider
98+
metadata:
99+
name: flux-cd
100+
spec:
101+
type: fluxcd
102+
authentication:
103+
api-server: https://kubernetes.example.com
104+
token: MY_TOKEN
105+
namespace: flux-system
106+
```
107+
108+
> Note: Both `api-server` and `api_server` formats are supported for backward compatibility.
109+
110+
### Using In-Cluster Configuration
111+
112+
```yaml
113+
apiVersion: keep.sh/v1
114+
kind: Provider
115+
metadata:
116+
name: flux-cd
117+
spec:
118+
type: fluxcd
119+
authentication:
120+
namespace: flux-system
121+
```
122+
123+
## Comparison with ArgoCD Provider
124+
125+
Keep supports both Flux CD and ArgoCD for GitOps deployments. Here's a comparison of the two providers:
126+
127+
| Feature | Flux CD | ArgoCD |
128+
|---------|---------|--------|
129+
| Topology | ✅ | ✅ |
130+
| Alerts | ✅ | ✅ |
131+
| Resource Types | GitRepositories, HelmRepositories, Kustomizations, HelmReleases | Applications, Projects |
132+
| Authentication | Kubeconfig, API Server, In-Cluster | Username/Password, Token |
133+
| Deployment Model | Kubernetes Controllers | Server + Controllers |
134+
| UI Integration | No (CLI only) | Yes (Web UI) |
135+
136+
## Related Resources
137+
138+
- [Flux CD Documentation](https://fluxcd.io/docs/)
139+
- [Flux CD GitHub Repository](https://github.com/fluxcd/flux2)
140+
- [Keep Documentation](https://docs.keephq.dev)

docs/providers/overview.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Providers Overview
2+
3+
Providers are core components of Keep that allows Keep to either query data, send notifications, get alerts from or manage third-party tools.
4+
5+
These third-party tools include, among others, Datadog, Cloudwatch, and Sentry for data querying and/or alert management, and Slack, Resend, Twilio, and PagerDuty for notifications/incidents.
6+
7+
By leveraging Keep Providers, users are able to deeply integrate Keep with the tools they use and trust, providing them with a flexible and powerful way to manage these tools with ease and from a single pane.
8+
9+
## Available Providers
10+
11+
- [Airflow](/providers/documentation/airflow-provider)
12+
- [Azure AKS](/providers/documentation/aks-provider)
13+
- [AmazonSQS](/providers/documentation/amazonsqs-provider)
14+
- [Anthropic](/providers/documentation/anthropic-provider)
15+
- [AppDynamics](/providers/documentation/appdynamics-provider)
16+
- [ArgoCD](/providers/documentation/argocd-provider)
17+
- [Flux CD](/providers/documentation/fluxcd-provider)
18+
- [Asana](/providers/documentation/asana-provider)
19+
- [Auth0](/providers/documentation/auth0-provider)
20+
- [Axiom](/providers/documentation/axiom-provider)
21+
- [Azure Monitor](/providers/documentation/azuremonitoring-provider)
22+
- [Bash](/providers/documentation/bash-provider)
23+
- [BigQuery](/providers/documentation/bigquery-provider)
24+
- [Centreon](/providers/documentation/centreon-provider)
25+
- [Checkmk](/providers/documentation/checkmk-provider)
26+
- [Checkly](/providers/documentation/checkly-provider)
27+
- [Cilium](/providers/documentation/cilium-provider)
28+
- [ClickHouse](/providers/documentation/clickhouse-provider)
29+
- [CloudWatch](/providers/documentation/cloudwatch-provider)
30+
- [Console](/providers/documentation/console-provider)
31+
- [Coralogix](/providers/documentation/coralogix-provider)
32+
- [Dash0](/providers/documentation/dash0-provider)
33+
- [Datadog](/providers/documentation/datadog-provider)
34+
- [Databend](/providers/documentation/databend-provider)
35+
- [DeepSeek](/providers/documentation/deepseek-provider)
36+
- [Discord](/providers/documentation/discord-provider)
37+
- [Dynatrace](/providers/documentation/dynatrace-provider)
38+
- [EKS](/providers/documentation/eks-provider)
39+
- [Elastic](/providers/documentation/elastic-provider)
40+
- [Flashduty](/providers/documentation/flashduty-provider)
41+
- [GCP Monitoring](/providers/documentation/gcpmonitoring-provider)
42+
- [Gemini](/providers/documentation/gemini-provider)
43+
- [GitHub](/providers/documentation/github-provider)
44+
- [Github Workflows](/providers/documentation/github_workflows_provider)
45+
- [GitLab](/providers/documentation/gitlab-provider)
46+
- [Gitlab Pipelines](/providers/documentation/gitlabpipelines-provider)
47+
- [Google Kubernetes Engine](/providers/documentation/gke-provider)
48+
- [Google Chat](/providers/documentation/google_chat-provider)
49+
- [Grafana](/providers/documentation/grafana-provider)
50+
- [Grafana Incident](/providers/documentation/grafana_incident-provider)
51+
- [Grafana Loki](/providers/documentation/grafana_loki-provider)
52+
- [Grafana OnCall](/providers/documentation/grafana_oncall-provider)
53+
- [Graylog](/providers/documentation/graylog-provider)
54+
- [Grok](/providers/documentation/grok-provider)
55+
- [HTTP](/providers/documentation/http-provider)
56+
- [Icinga2](/providers/documentation/icinga2-provider)
57+
- [ilert](/providers/documentation/ilert-provider)
58+
- [Incident.io](/providers/documentation/incidentio-provider)
59+
- [Incident Manager](/providers/documentation/incidentmanager-provider)
60+
- [Jira On-Prem](/providers/documentation/jira-on-prem-provider)
61+
- [Jira Cloud](/providers/documentation/jira-provider)
62+
- [Kafka](/providers/documentation/kafka-provider)
63+
- [Keep](/providers/documentation/keep-provider)
64+
- [Kibana](/providers/documentation/kibana-provider)
65+
- [Kubernetes](/providers/documentation/kubernetes-provider)
66+
- [LibreNMS](/providers/documentation/libre_nms-provider)
67+
- [Linear](/providers/documentation/linear_provider)
68+
- [LinearB](/providers/documentation/linearb-provider)
69+
- [LiteLLM](/providers/documentation/litellm-provider)
70+
- [Llama.cpp](/providers/documentation/llamacpp-provider)
71+
- [Mailgun](/providers/documentation/mailgun-provider)
72+
- [Mattermost](/providers/documentation/mattermost-provider)
73+
- [Microsoft Planner](/providers/documentation/planner-provider)
74+
- [Monday](/providers/documentation/monday-provider)
75+
- [MongoDB](/providers/documentation/mongodb-provider)
76+
- [MySQL](/providers/documentation/mysql-provider)
77+
- [NetBox](/providers/documentation/netbox-provider)
78+
- [Netdata](/providers/documentation/netdata-provider)
79+
- [New Relic](/providers/documentation/new-relic-provider)
80+
- [Ntfy.sh](/providers/documentation/ntfy-provider)
81+
- [Ollama](/providers/documentation/ollama-provider)
82+
- [OpenAI](/providers/documentation/openai-provider)
83+
- [OpenObserve](/providers/documentation/openobserve-provider)
84+
- [OpenSearch Serverless](/providers/documentation/opensearchserverless-provider)
85+
- [Openshift](/providers/documentation/openshift-provider)
86+
- [Opsgenie](/providers/documentation/opsgenie-provider)
87+
- [Pagerduty](/providers/documentation/pagerduty-provider)
88+
- [Pagertree](/providers/documentation/pagertree-provider)
89+
- [Parseable](/providers/documentation/parseable-provider)
90+
- [Pingdom](/providers/documentation/pingdom-provider)
91+
- [PostgreSQL](/providers/documentation/postgresql-provider)
92+
- [PostHog](/providers/documentation/posthog-provider)
93+
- [Prometheus](/providers/documentation/prometheus-provider)
94+
- [Pushover](/providers/documentation/pushover-provider)
95+
- [Python](/providers/documentation/python-provider)
96+
- [QuickChart](/providers/documentation/quickchart-provider)
97+
- [Redmine](/providers/documentation/redmine-provider)
98+
- [Resend](/providers/documentation/resend-provider)
99+
- [Rollbar](/providers/documentation/rollbar-provider)
100+
- [AWS S3](/providers/documentation/s3-provider)
101+
- [SendGrid](/providers/documentation/sendgrid-provider)
102+
- [Sentry](/providers/documentation/sentry-provider)
103+
- [Service Now](/providers/documentation/service-now-provider)
104+
- [SignalFX](/providers/documentation/signalfx-provider)
105+
- [SIGNL4](/providers/documentation/signl4-provider)
106+
- [Site24x7](/providers/documentation/site24x7-provider)
107+
- [Slack](/providers/documentation/slack-provider)
108+
- [SMTP](/providers/documentation/smtp-provider)
109+
- [Snowflake](/providers/documentation/snowflake-provider)
110+
- [Splunk](/providers/documentation/splunk-provider)
111+
- [Squadcast](/providers/documentation/squadcast-provider)
112+
- [SSH](/providers/documentation/ssh-provider)
113+
- [StatusCake](/providers/documentation/statuscake-provider)
114+
- [SumoLogic](/providers/documentation/sumologic-provider)
115+
- [Microsoft Teams](/providers/documentation/teams-provider)
116+
- [Telegram](/providers/documentation/telegram-provider)
117+
- [Template](/providers/documentation/template)
118+
- [ThousandEyes](/providers/documentation/thousandeyes-provider)
119+
- [Trello](/providers/documentation/trello-provider)
120+
- [Twilio](/providers/documentation/twilio-provider)
121+
- [UptimeKuma](/providers/documentation/uptimekuma-provider)
122+
- [VictoriaLogs](/providers/documentation/victorialogs-provider)
123+
- [Victoriametrics](/providers/documentation/victoriametrics-provider)
124+
- [vLLM](/providers/documentation/vllm-provider)
125+
- [Wazuh](/providers/documentation/wazuh-provider)
126+
- [Webhook](/providers/documentation/webhook-provider)
127+
- [Websocket](/providers/documentation/websocket-provider)
128+
- [YouTrack](/providers/documentation/youtrack-provider)
129+
- [Zabbix](/providers/documentation/zabbix-provider)
130+
- [Zenduty](/providers/documentation/zenduty-provider)
131+
- [Zoom](/providers/documentation/zoom-provider)

docs/providers/overview.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ By leveraging Keep Providers, users are able to deeply integrate Keep with the t
6060
}
6161
></Card>
6262

63+
<Card
64+
title="Flux CD"
65+
href="/providers/documentation/fluxcd-provider"
66+
icon={
67+
<img src="https://img.logo.dev/fluxcd.io?token=pk_dfXfZBoKQMGDTIgqu7LvYg" />
68+
}
69+
></Card>
70+
6371
<Card
6472
title="Asana"
6573
href="/providers/documentation/asana-provider"

docs/snippets/providers/console-snippet-autogenerated.mdx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{/* This snippet is automatically generated using scripts/docs_render_provider_snippets.py
1+
{/* This snippet is automatically generated using scripts/docs_render_provider_snippets.py
22
Do not edit it manually, as it will be overwritten */}
33

44

@@ -14,9 +14,9 @@ steps:
1414
provider: console
1515
config: "{{ provider.my_provider_name }}"
1616
with:
17-
message: {value}
18-
logger: {value}
19-
severity: {value}
17+
message: {value}
18+
logger: {value}
19+
severity: {value}
2020
```
2121
2222
@@ -43,6 +43,7 @@ Check the following workflow examples:
4343
- [consts_and_dict.yml](https://github.com/keephq/keep/blob/main/examples/workflows/consts_and_dict.yml)
4444
- [eks_advanced.yml](https://github.com/keephq/keep/blob/main/examples/workflows/eks_advanced.yml)
4545
- [eks_basic.yml](https://github.com/keephq/keep/blob/main/examples/workflows/eks_basic.yml)
46+
- [fluxcd_example.yml](https://github.com/keephq/keep/blob/main/examples/workflows/fluxcd_example.yml)
4647
- [gke.yml](https://github.com/keephq/keep/blob/main/examples/workflows/gke.yml)
4748
- [ifelse.yml](https://github.com/keephq/keep/blob/main/examples/workflows/ifelse.yml)
4849
- [incident-enrich.yaml](https://github.com/keephq/keep/blob/main/examples/workflows/incident-enrich.yaml)
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
{/* This snippet is automatically generated using scripts/docs_render_provider_snippets.py
2+
Do not edit it manually, as it will be overwritten */}
3+
4+
## Authentication
5+
This provider requires authentication.
6+
- **kubeconfig**: Kubeconfig file content (required: False, sensitive: True)
7+
- **context**: Kubernetes context to use (required: False, sensitive: False)
8+
- **namespace**: Namespace where Flux CD is installed (required: False, sensitive: False)
9+
- **api_server**: Kubernetes API server URL (required: False, sensitive: False)
10+
- **token**: Kubernetes API token (required: False, sensitive: True)
11+
- **insecure**: Skip TLS verification (required: False, sensitive: False)
12+
13+
Certain scopes may be required to perform specific actions or queries via the provider. Below is a summary of relevant scopes and their use cases:
14+
- **authenticated**: User is Authorized (mandatory)
15+
16+
17+
## In workflows
18+
19+
This provider can be used in workflows.
20+
21+
22+
As "step" to query data, example:
23+
```yaml
24+
steps:
25+
- name: Query fluxcd
26+
provider: fluxcd
27+
config: "{{ provider.my_provider_name }}"
28+
with:
29+
**_: {value} # Additional arguments (ignored)
30+
```
31+
32+
33+
34+
35+
36+
Check the following workflow example:
37+
- [fluxcd_example.yml](https://github.com/keephq/keep/blob/main/examples/workflows/fluxcd_example.yml)
38+
39+
40+
## Topology
41+
This provider pulls [topology](/overview/servicetopology) to Keep. It could be used in [correlations](/overview/correlation-topology)
42+
and [mapping](/overview/enrichment/mapping#mapping-with-topology-data), and as a context
43+
for [alerts](/alerts/sidebar#7-alert-topology-view) and [incidents](/overview#17-incident-topology).
44+
45+
## Provider Methods
46+
The provider exposes the following [Provider Methods](/providers/provider-methods#via-ai-assistant). They are available in the [AI Assistant](/overview/ai-incident-assistant).
47+
48+
- **get_fluxcd_resources** Get resources from Flux CD (, scopes: no additional scopes)
49+

docs/snippets/providers/keep-snippet-autogenerated.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{/* This snippet is automatically generated using scripts/docs_render_provider_snippets.py
1+
{/* This snippet is automatically generated using scripts/docs_render_provider_snippets.py
22
Do not edit it manually, as it will be overwritten */}
33

44

@@ -52,6 +52,7 @@ Check the following workflow examples:
5252
- [create_alerts_from_elastic.yml](https://github.com/keephq/keep/blob/main/examples/workflows/create_alerts_from_elastic.yml)
5353
- [create_alerts_from_mysql.yml](https://github.com/keephq/keep/blob/main/examples/workflows/create_alerts_from_mysql.yml)
5454
- [create_multi_alert_from_vm_metric.yml](https://github.com/keephq/keep/blob/main/examples/workflows/create_multi_alert_from_vm_metric.yml)
55+
- [fluxcd_example.yml](https://github.com/keephq/keep/blob/main/examples/workflows/fluxcd_example.yml)
5556
- [resolve_old_alerts.yml](https://github.com/keephq/keep/blob/main/examples/workflows/resolve_old_alerts.yml)
5657
- [retrieve_cloudwatch_logs.yaml](https://github.com/keephq/keep/blob/main/examples/workflows/retrieve_cloudwatch_logs.yaml)
5758
- [update_service_now_tickets_status.yml](https://github.com/keephq/keep/blob/main/examples/workflows/update_service_now_tickets_status.yml)

0 commit comments

Comments
 (0)