Infrastructure Inventory
Mission Control maintains a complete and up-to-date inventory of all your infrastructure assets, providing a foundational layer for audit and compliance. This catalog details what resources you have, where they are located, and their current health status. A comprehensive inventory is essential for asset management, vulnerability scanning, and demonstrating control over your operational environment to auditors.
Each resource is tracked as a config item in the catalog with full change history, health status, and relationships to other resources. Scrapers run on a schedule to keep the inventory current.
AWS
Use the AWS scraper to catalog EC2 instances, RDS databases, S3 buckets, networking resources, and IAM entities:
aws-inventory-scraper.yamlapiVersion: configs.flanksource.com/v1
kind: ScrapeConfig
metadata:
name: aws-inventory
spec:
schedule: "@every 1h"
aws:
- connection: connection://aws/prod
compliance: true
cloudtrail:
maxAge: 7d
include:
- EC2Instance
- RDSInstance
- S3Bucket
- SecurityGroup
- Subnet
- VPC
- EBSVolume
- ELB
- IAMUser
- IAMRole
- Lambda
See the AWS scraper reference for the full list of supported resource types.
Kubernetes
Use the Kubernetes scraper to catalog workloads, services, networking policies, and storage:
k8s-inventory-scraper.yamlapiVersion: configs.flanksource.com/v1
kind: ScrapeConfig
metadata:
name: k8s-inventory
spec:
schedule: "@every 15m"
kubernetes:
- clusterName: production
watch:
- apiVersion: apps/v1
kind: Deployment
- apiVersion: apps/v1
kind: StatefulSet
- apiVersion: v1
kind: Service
- apiVersion: networking.k8s.io/v1
kind: Ingress
- apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
- apiVersion: v1
kind: PersistentVolumeClaim
See the Kubernetes scraper reference for watch configuration and event tracking.
Azure
Use the Azure scraper to catalog VMs, SQL databases, App Services, and networking resources. For Entra ID identity resources (users, groups, app registrations), see the Entra ID integration.
Databases
Use SQL scrapers to catalog database-specific resources like schemas, roles, and configurations:
postgres-inventory-scraper.yamlapiVersion: configs.flanksource.com/v1
kind: ScrapeConfig
metadata:
name: postgres-inventory
spec:
schedule: "@every 6h"
sql:
- connection: connection://postgres/prod
type: Postgres::Database
id: $.datname
name: $.datname
items: |
SELECT datname, pg_database_size(datname) as size_bytes,
datcollate as collation, datconnlimit as connection_limit
FROM pg_database WHERE datistemplate = false ORDER BY datname
Tying It Together with an Application
Use the Application CRD to map inventory items to specific applications. The mapping.environments field groups resources by environment (production, DR, staging) with a declared purpose:
application-environments.yamlmapping:
environments:
"Prod":
- search: type=AWS::*
tagSelector: env=prod,app=payments
purpose: primary
"DR":
- search: type=AWS::*
tagSelector: env=dr,app=payments
purpose: backup
See Applications for the full spec.