-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
draft: true | ||
--- | ||
|
||
# ArgoCD Integration | ||
|
||
Mission Control integrates with ArgoCD to provide monitoring and relationship tracking of ArgoCD Applications and their associated resources. | ||
|
||
## Resource Scraping & Relationships | ||
|
||
The integration automatically scrapes ArgoCD Applications (Custom Resources with apiVersion starting with `argoproj.io`) and establishes parent-child relationships between the Application and its deployed resources. This is done by: | ||
|
||
1. Examining the `status.resources` field of ArgoCD Applications | ||
2. Creating links between the Application and each resource referenced in the status | ||
3. Tracking resources across all supported Kubernetes types like Deployments, Services, ConfigMaps etc. | ||
|
||
For example, if an ArgoCD Application deploys a Deployment and Service, Mission Control will automatically: | ||
Check warning on line 17 in mission-control/docs/integrations/argo.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/argo.mdx#L17
Raw output
|
||
- Detect the Application as the parent resource | ||
- Link it to the child Deployment and Service resources | ||
- Allow you to navigate and view the full resource hierarchy | ||
|
||
## Health Status | ||
|
||
ArgoCD's built-in health checks are used to determine the overall health status of Applications and their resources. The status is gathered from ArgoCD's native health assessment and surfaced in Mission Control's UI. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
draft: true | ||
--- |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
--- | ||
draft: true | ||
--- | ||
|
||
# <span class=" iconify-color logos--aws-cloudformation"></span> CloudFormation | ||
|
||
CloudFormation stacks and their relationships are automatically tracked by Mission Control through the AWS scraper. Here's how it works: | ||
|
||
![](/img/cloudformation.svg) | ||
|
||
## Features | ||
|
||
- Tracks all CloudFormation stacks across enabled regions | ||
- Automatically discovers stack dependencies and relationships | ||
- Links resources created by CloudFormation stacks back to their parent stack | ||
- Provides status and health monitoring of stacks | ||
- Creates deep links to the AWS Console | ||
- Retains stack deletion history and reasons | ||
|
||
## Stack Relationships | ||
|
||
Any AWS resource that has an `aws:cloudformation:stack-id` tag is automatically linked to its parent CloudFormation stack. The scraper: | ||
|
||
1. Discovers the stack ID from resource tags | ||
2. Creates a parent relationship from the resource to the stack | ||
3. Moves any default parent relationships to soft relationships | ||
4. Maintains the full stack tree hierarchy | ||
|
||
## Stack Properties | ||
|
||
The following properties are tracked for each stack: | ||
|
||
- Stack name and ID | ||
- Creation time | ||
- Deletion time and reason (if deleted) | ||
- Current status and health state | ||
- Stack status reason messages | ||
- Console URL link | ||
|
||
## Configuration | ||
|
||
CloudFormation scraping is enabled by default when AWS scraping is configured. Include "cloudformation" in the AWS scraper config to explicitly enable it: | ||
Check failure on line 42 in mission-control/docs/integrations/aws/cloudformation.md GitHub Actions / vale[vale] mission-control/docs/integrations/aws/cloudformation.md#L42
Raw output
|
||
|
||
```yaml | ||
spec: | ||
aws: | ||
- regions: ['us-east-1'] | ||
includes: ['cloudformation'] | ||
``` | ||
## Learn More | ||
- [AWS](/config-db/scrapers/aws) Scraper |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
--- | ||
draft: true | ||
--- | ||
|
||
# CloudTrail Integration | ||
|
||
Mission Control integrates with AWS CloudTrail to track API activity and changes across your AWS accounts. The AWS scraper handles CloudTrail events and trails. | ||
|
||
## Features | ||
|
||
- Discovers CloudTrail trails across regions | ||
- Maps trail configurations and settings | ||
- Links trails to their associated S3 buckets | ||
- Tracks multi-region trail setups | ||
- Creates relationships between trails and logged resources | ||
|
||
## Trail Properties | ||
|
||
The following properties are tracked for CloudTrail trails: | ||
|
||
- Trail name and ARN | ||
- Associated S3 bucket and prefix | ||
- Multi-region status | ||
- Log file validation settings | ||
- CloudWatch logs configuration | ||
- KMS encryption settings | ||
|
||
## Configuration | ||
|
||
CloudTrail scraping is enabled by default in the AWS scraper. Include "cloudtrail" in the AWS config to explicitly enable it: | ||
Check failure on line 30 in mission-control/docs/integrations/aws/cloudtrail.md GitHub Actions / vale[vale] mission-control/docs/integrations/aws/cloudtrail.md#L30
Raw output
|
||
|
||
```yaml | ||
spec: | ||
aws: | ||
- regions: ['us-east-1'] | ||
includes: ['cloudtrail'] | ||
``` | ||
This allows Mission Control to maintain a complete audit trail of changes across your AWS infrastructure. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
draft: true | ||
--- |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
--- | ||
draft: true | ||
--- | ||
|
||
# Cost & Usage Reports | ||
|
||
Mission Control can track AWS Cost and Usage Reports (CUR) to help monitor and analyze your AWS spending. The AWS scraper handles CUR data collection. | ||
|
||
## Features | ||
|
||
- Discovers configured Cost and Usage Reports | ||
- Maps report delivery settings and schedules | ||
- Links reports to their S3 buckets | ||
- Tracks report time ranges and formats | ||
- Creates relationships to billed resources | ||
|
||
## Report Properties | ||
|
||
The following properties are tracked for Cost and Usage Reports: | ||
|
||
- Report name and ARN | ||
- S3 bucket and prefix path | ||
- Time granularity settings | ||
- File format and compression | ||
- Report content configuration | ||
- Resource IDs and tagging | ||
|
||
## Configuration | ||
|
||
CUR scraping is enabled by default in the AWS scraper. Include "cur" in the AWS config to explicitly enable it: | ||
|
||
```yaml | ||
spec: | ||
aws: | ||
- regions: ['us-east-1'] | ||
includes: ['cur'] | ||
``` | ||
This allows Mission Control to help track and analyze your AWS infrastructure costs. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
draft: true | ||
--- |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
draft: true | ||
--- | ||
|
||
# Crossplane Integration | ||
|
||
Mission Control integrates deeply with Crossplane to provide visibility and relationships across your cloud infrastructure resources managed through Crossplane. | ||
Check warning on line 7 in mission-control/docs/integrations/crossplane.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/crossplane.mdx#L7
Raw output
|
||
|
||
## How It Works | ||
|
||
Mission Control's Kubernetes scraper (`kubernetes.go`) automatically detects and handles Crossplane resources by: | ||
|
||
1. Identifying Crossplane resources through their API group - any resource with an apiVersion containing `.upbound.io` or `.crossplane.io` is treated as a Crossplane resource. | ||
|
||
2. Categorizing them with a special "Crossplane::" type prefix instead of the standard "Kubernetes::" prefix to distinguish them from regular Kubernetes resources. | ||
Check warning on line 15 in mission-control/docs/integrations/crossplane.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/crossplane.mdx#L15
Raw output
|
||
|
||
3. Building relationships between: | ||
- Crossplane managed resources and their providers | ||
- Crossplane composite resources (XRs) and their composed resources | ||
Check failure on line 19 in mission-control/docs/integrations/crossplane.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/crossplane.mdx#L19
Raw output
|
||
- Crossplane resources and their underlying cloud infrastructure | ||
|
||
## Resource Relationships | ||
|
||
The scraper automatically establishes relationships between: | ||
|
||
- Crossplane Providers and their managed resources | ||
- Composite Resources (XRs) and their composed resources | ||
Check failure on line 27 in mission-control/docs/integrations/crossplane.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/crossplane.mdx#L27
Raw output
|
||
- Crossplane managed resources and their cloud provider equivalents (e.g. AWS RDS instances) | ||
|
||
The relationships are created through: | ||
|
||
1. Owner references on managed resources pointing to their providers | ||
2. Cross-references between XRs and composed resources | ||
Check failure on line 33 in mission-control/docs/integrations/crossplane.mdx GitHub Actions / vale[vale] mission-control/docs/integrations/crossplane.mdx#L33
Raw output
|
||
3. Cloud provider specific external IDs linking to actual cloud resources | ||
|
||
## Scraping and Monitoring | ||
|
||
The scraper: | ||
|
||
- Watches for changes to Crossplane resources through the Kubernetes event stream | ||
- Tracks health and status of Crossplane resources | ||
- Maps relationships between components | ||
- Provides visibility into the full stack - from Crossplane CRDs down to cloud resources | ||
|
||
This enables Mission Control to provide a complete view of your Crossplane-managed infrastructure with proper relationship mapping and real-time updates. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
--- | ||
title: Catalog | ||
--- | ||
import { IoIosHeart } from "react-icons/io"; | ||
|
||
# <Icon name="flux"/> FluxCD | ||
|
||
Mission Control provides built-in support for relating Flux resources to each other, determining their health status, and building a dependency graph. This allows you to: | ||
|
||
- Visualize relationships between Flux resources like `Kustomizations`, `HelmReleases`, `GitRepositories` etc. | ||
- Track the health and status of related Flux resources | ||
- Understand dependencies between resources to troubleshoot issues | ||
- Build a graph showing how Flux resources connect and depend on each other | ||
- Monitor the overall health of your Flux-based GitOps workflows | ||
|
||
|
||
![](/img/helmrelease-graph.png) | ||
|
||
|
||
## Next Steps | ||
|
||
1. Use self-service [playbooks](./playbooks) to enable a ClickOps experience, while still leveraging the power of GitOps. | ||
2. Manage and monitor Flux with a [topology](./topology) view, providing the missing GUI for Flux. | ||
3. [Continuously test your control plane](/canary-checker/tutorials/control-plane-testing) with `kubernetesResource` canaries |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
--- | ||
title: Flux | ||
--- |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
--- | ||
title: Playbooks | ||
--- | ||
|
||
# <Icon name="flux"/> Flux Playbooks | ||
|
||
import { IoIosCheckmarkCircleOutline } from "react-icons/io"; | ||
import Git from '@site/docs/partials/\_git_all.mdx'; | ||
|
||
Mission control enhances a [flux](https://fluxcd.io/flux) deployment with: | ||
|
||
1. An Argo style graph between Flux resources and the objects they create | ||
2. A playbook libary that includes a GUI for both day 2 operations with `flux` cli and a Git | ||
Check failure on line 13 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L13
Raw output
|
||
3. Health checks on all flux resources based on `status.conditions` | ||
4. Alert silencing based on Flux hierachy - i.e. Silence all alerts for objects created by this Kustomization/HelmChart | ||
Check failure on line 15 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L15
Raw output
Check failure on line 15 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L15
Raw output
|
||
|
||
## Playbooks | ||
|
||
The following playbooks work by calling the `flux` CLI directly | ||
|
||
| Playbook | <Icon name="kustomize"/> Kustomization | <Icon name="helm"/> HelmRelease | | ||
| ---------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | | ||
| <Icon name="flux">Suspend</Icon><Tooltip>Runs `flux suspend`</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
| <Icon name="flux">Resume</Icon><Tooltip>Runs`flux resume`</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
| <Icon name="flux">Reconcile</Icon><Tooltip>Runs`flux resume`</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
|
||
### ClickOps | ||
|
||
The following playbooks enable a ClickOps style of working, but with all changes implemented using standard pull request workflows, giving developers self-service, guardrail driven access to make changes without direct git access or expertise. | ||
|
||
| Playbook | <Icon name="kustomize" > Kustomization</Icon> | <Icon name="helm"> HelmRelease</Icon> | <Icon name="k8s-namespace"> Namespace</Icon> | <Icon name="k8s-deployment"> Deployment</Icon> | | ||
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | ------------------------------------------------------- | | ||
| <Icon name="kustomize"> Edit </Icon> <Tooltip>Updates the YAML of a resource</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
| <Icon name="kustomize"/> Create Kustomization<Tooltip>Creates a new `Kustomization` and inserts it into the file containing the selected `Kustomization`</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | | | ||
| <Icon name="k8s-namespace"/> Create Namespace<Tooltip>Creates a new folder with a `kustomization.yaml` and `namespace.yaml` and then adds it the `bases`</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | | | ||
| <Icon name="k8s-deployment"/> Create Deployment<Tooltip>Creates a new `Deployment` and inserts it into the `Kustomization` that created the namespace</Tooltip> | | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | ||
| <Icon name="helm"/> Create Helm Chart<Tooltip>Creates a new `HelmRelease` and inserts it into the `Kustomization` that created the namespace</Tooltip> | | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | ||
| <Icon name="helm"/> Update Values <Tooltip>Updates `.spec.values`</Tooltip> | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | | ||
| <Icon name="helm"/> Update Chart Version <Tooltip>Updates `.spec.chart.spec.version`</Tooltip> | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | | | ||
| <Icon name="scale-out" className="h-5 w-auto"/> Scale<Tooltip>Updates `.spec.replicas`</Tooltip> | | | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
| <Icon name="scale-up" className="h-5 w-auto"/> Update Resources <Tooltip>Updates `containers[0].resources`</Tooltip> | | | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
| <Icon name="docker"/> Update Image <Tooltip>Updates `containers[0].image`</Tooltip> | | | | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
|
||
### Just In Time (JIT) Access | ||
Check failure on line 44 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L44
Raw output
|
||
|
||
Just In Time playbooks provide a mechnism to grant users access to a namespace for a short space of time, this works by creating a new `Rolebinding` resource and inserting it into the kustomization resources, and then after the expiry window deleting the resources from git. | ||
Check failure on line 46 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L46
Raw output
Check failure on line 46 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L46
Raw output
|
||
|
||
This approach provides a single audit trail of who has received access, and limits the need for the control plane to have direct access to update permissions. | ||
|
||
| Playbook | <Icon name="k8s-namespace"/> Namespace | | ||
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | ||
| <Icon name="k8s-rolebinding"/> Request Access <Tooltip>Creates a new `RoleBinding` with an optional expiry</Tooltip> | <IoIosCheckmarkCircleOutline color='green' size={24} /> | | ||
|
||
## Getting Started | ||
|
||
:::info Prerequisites | ||
To enable the Flux integration you need | ||
|
||
- Mission Control [installed](/installation/) | ||
- [kubectl](/installation/saas/kubectl) access to the Mission Control instance | ||
::: | ||
|
||
1. Create a github connection | ||
<p/> | ||
:::note Optional | ||
This step is optional if you do not plan to use the ClickOps playbooks. | ||
::: | ||
|
||
<Git/> | ||
|
||
2. Install the [mission-control-playbooks-flux](https://artifacthub.io/packages/helm/flanksource/mission-control-playbooks-flux) chart | ||
|
||
<Helm chart="mission-control-flux" | ||
createNamespace={false} | ||
createRepo={false} | ||
values={{ | ||
"git.type": "github", | ||
"git.connection": "connection://mission-control/github", | ||
}}/> | ||
|
||
3. Annotate resources with `config.kubernetes.io/origin` | ||
|
||
The annotation is added by kustomize when the `originAnnotations` build flag is set: | ||
|
||
```yaml title='kustomization.yaml' | ||
apiVersion: kustomize.config.k8s.io/v1beta1 | ||
kind: Kustomization | ||
// highlight-next-line | ||
buildMetadata: [originAnnotations] | ||
``` | ||
## Best Practises | ||
- Don't provide the service account user who is submitting Pull Requests direct access to commit to `main`. | ||
- Use branch protection policies to require pull requests, passing tests and selective approval | ||
- Implement PR based integration tests that ensure changes: | ||
- Compile using | ||
```shell | ||
kustomization build | ||
``` | ||
- Are compatible with your kubernetes API versions and CRD's with: | ||
```shell | ||
kustomization build | kubectl apply -f - --dry-run=service | ||
``` | ||
- Passes all compliance and governance rule | ||
- Auto Merge PR's that are safe | ||
Check failure on line 106 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L106
Raw output
|
||
|
||
## Learn More | ||
|
||
- Playbook [exec](/playbooks/actions/exec) and [gitops](/playbooks/actions/gitops) actions | ||
- [<iconify-icon icon="lets-icons:external"/> Auto Merging PRs](https://jhale.dev/posts/auto-merging-prs/) by @jhale, has a run-down of using Github Actions to automerge, with some gotchas | ||
Check failure on line 111 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L111
Raw output
|
||
- [<iconify-icon icon="lets-icons:external"/> trivy](https://trivy.dev/) - A mis-configuration, secrets and compliance scanner with good support for Kubernetes | ||
Check failure on line 112 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L112
Raw output
|
||
- [<iconify-icon icon="lets-icons:external"/> bulldozer](https://github.com/palantir/bulldozer) and [<iconify-icon icon="lets-icons:external"/> policy-bot](https://github.com/palantir/policy-bot) for auto-merging PR's using customizable rules and policies | ||
Check failure on line 113 in mission-control/docs/integrations/flux/playbooks.md GitHub Actions / vale[vale] mission-control/docs/integrations/flux/playbooks.md#L113
Raw output
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
--- | ||
title: Topology | ||
--- | ||
|
||
The flux topology | ||
|
||
![](/img/flux-topology.svg) | ||
|
||
## Getting Started | ||
|
||
:::info Prerequisites | ||
To enable the Flux Topology you need | ||
|
||
- Mission Control [installed](/installation/) | ||
- [kubectl](/installation/saas/kubectl) access to the Mission Control instance | ||
- Scrape configuration for a [kubernetes](../kubernetes/config) cluster | ||
::: | ||
|
||
1. Install the [mission-control-flux](https://artifacthub.io/packages/helm/flanksource/mission-control-flux) chart | ||
|
||
<Helm chart="mission-control-flux" | ||
createNamespace={false} | ||
createRepo={false} /> | ||
|
||
:::note Single | ||
This chart only needs to be installed once, | ||
::: |