Apache 2.0 · 241 CRDs · 74 AWS services

AWS Infrastructure
as Kubernetes CRDs

Declare IAM roles, VPCs, RDS clusters, Lambda functions, KMS keys, ECR repositories, DynamoDB tables, and 77 more AWS resources the same way you deploy applications — in YAML, in Git, with automatic drift correction.

0
Live CRDs
0
AWS Services
5m
Drift Detection
1
Binary
konfig-system — kubectl
Why konfig-konector

Everything AWS. One operator.

Stop juggling multiple controllers. konfig-konector reconciles your entire AWS footprint from a single, lightweight binary.

🔗

One Operator, All of AWS

241 CRDs covering IAM, networking, compute, databases, storage, messaging, caching, DNS, EKS, Lambda, ECS, load balancing, ACM, KMS, Secrets Manager, ECR, DynamoDB, EventBridge, Cognito, WAF, SSM, and more — managed by a single pod.

🔄

Drift Detection Built In

Every resource is re-reconciled every 5 minutes. If someone manually changes an AWS resource, the controller reverts it automatically.

🔑

EKS Pod Identity Native

No long-lived keys, no IRSA annotations. The operator authenticates via EKS Pod Identity — temporary credentials rotated automatically.

🚀

GitOps Ready

CRDs are just YAML. Declare your AWS infrastructure alongside your application manifests and manage it with ArgoCD or Flux — no separate pipelines.

🔒

Secrets Stay Secrets

Database passwords are read from Kubernetes Secrets at reconcile time and never written to status fields, logs, or events.

Cross-Resource References

Reference other CRs by name. The controller waits automatically until dependencies are provisioned before proceeding.

Supported Resources

241 live CRDs across 74 AWS services

All resources use the API group aws.konfig.io/v1alpha1. The grid below is a curated selection — run konfig-export --list for all 241 kinds. ✅ = live  ·  🔧 = in development.

IAMRole

Creates and manages IAM roles including trust policies, permissions boundaries, and tags.

IAMPolicy

Manages customer-managed IAM policies and their document versions.

IAMPolicyAttachment

Attaches a managed policy to an IAM role. Supports CR references or direct ARNs.

IAMRolePolicy

Inline policy embedded directly on an IAM role.

PodIdentityAssociation

Links a Kubernetes ServiceAccount to an IAM role via EKS Pod Identity. Optionally annotates the ServiceAccount.

IAMUser

IAM user with path, permissions boundary, and tag sync. Does not manage access keys.

IAMGroup

IAM group with path. Membership and policy attachments managed via dedicated CRs.

IAMGroupPolicyAttachment

Attaches a managed policy to an IAM group. Supports CR references or direct ARNs.

IAMGroupMembership

Adds an IAM user to an IAM group. Supports CR references or direct names.

IAMSAMLProvider

SAML identity provider for federated authentication. Metadata drift detection included.

IAMOIDCProvider

OpenID Connect provider for workload identity federation. Delta sync for thumbprints and client IDs.

VPC

VPC with DNS support/hostnames, instance tenancy, Amazon-provided IPv6 CIDR block, and secondary IPv4 CIDR management.

Subnet

Creates a subnet in a VPC. Supports mapPublicIpOnLaunch and AZ selection.

InternetGateway

Creates and attaches an IGW to the referenced VPC. Detaches automatically on delete.

RouteTable

Route table with subnet associations. Reconciles individual routes and disassociates subnets on delete.

NatGateway

Allocates an Elastic IP and creates a NAT Gateway. Async — polls until available.⏱ async

SecurityGroup

Security group with ingress/egress rules supporting IPv4 CIDR, IPv6 CIDR, prefix lists, and SG references — all with per-rule descriptions.

VPCEndpoint

Interface or Gateway VPC endpoints for AWS services (S3, DynamoDB, etc.).

ElasticIP

Allocates a VPC Elastic IP address. Stores the AllocationID and public IP in status.

EIPAssociation

Associates an Elastic IP with an EC2 instance or network interface. References ElasticIP CRs or direct allocation IDs.

NetworkACL

Stateless subnet-level firewall with numbered inbound and outbound rules. Fully reconciles rule entries on every sync.

TransitGateway

AWS Transit Gateway for hub-and-spoke VPC connectivity at scale.

TransitGatewayVpcAttachment

Attaches a VPC to a Transit Gateway with subnet selection and route table association.

VPCPeeringConnection

Peering connection between two VPCs with auto-accept support for same-account peers.

EgressOnlyIGW

IPv6 egress-only internet gateway for private subnets.

FlowLog

VPC Flow Logs capturing network traffic metadata to S3 or CloudWatch Logs.

KeyPair

EC2 key pair. Private key returned only at creation time and not stored in status.

LaunchTemplate

EC2 launch template. Creates new versions on spec change rather than replacing the template.

AutoScalingGroup

ASG with LaunchTemplate reference, scaling config, and subnet placement.

EC2Instance

Single EC2 instance. Stores instance ID in status and terminates on delete.⏱ async

PlacementGroup

EC2 placement group for cluster, partition, or spread strategies.

ScalingPolicy

Target tracking, step, or simple scaling policy attached to an Auto Scaling Group.

SpotFleet

Spot Fleet request maintaining target capacity across instance types and AZs.

EBSVolume

EBS volume with type, size, encryption, and optional attachment to an EC2 instance.

AMI

Custom AMI registration from a snapshot or existing instance. Manages deregistration lifecycle.

DBSubnetGroup

RDS subnet group referencing Subnet CRs or direct subnet IDs.

DBParameterGroup

RDS parameter group for DB instances. Supports apply method per parameter.

DBClusterParameterGroup

RDS cluster-level parameter group for Aurora clusters.

DBInstance

RDS DB instance with full options: storage autoscaling, backup/maintenance windows, Performance Insights, Enhanced Monitoring, CloudWatch log exports, IAM auth, auto minor version upgrades, and IOPS/throughput settings.⏱ async

DBCluster

Aurora cluster with full config: backup/maintenance windows, CloudWatch exports, IAM auth, HTTP endpoint, engine mode (including Serverless v2 scaling config), backtrack window, network type, Performance Insights, and storage type.⏱ async

DBOptionGroup

RDS option group enabling engine-specific features such as Oracle OEM, SQL Server TDE, and MariaDB audit plugin.

DBSnapshot

Manual RDS snapshot with cross-region copy and share support.

DBProxy

RDS Proxy for connection pooling and failover management.

S3Bucket

S3 bucket with full feature parity: versioning, SSE, block public access, lifecycle rules, CORS, event notifications (Lambda/SQS/SNS/EventBridge), static website hosting, Transfer Acceleration, Object Lock, server access logging, and tagging.

S3BucketPolicy

Resource-based IAM policy attached to an S3 bucket. References bucket by CR name or direct name.

S3BucketNotification

Bucket event notifications to SQS, SNS, or Lambda on object create/delete.

S3BucketCORS

CORS configuration for web browser access to S3 bucket objects.

S3BucketLifecycle

Lifecycle rules for transitioning objects to Glacier or expiring old versions.

S3BucketReplication

Cross-region or same-region replication configuration between S3 buckets.

EFSFileSystem

Elastic File System with performance mode, throughput mode, and KMS encryption.

EFSMountTarget

EFS mount target in a specific subnet and security group.

EFSAccessPoint

EFS access point with POSIX user/group and root directory config for application isolation.

SQSQueue

Standard or FIFO SQS queue with visibility timeout, retention period, and redrive policy.

SNSTopic

SNS topic (standard or FIFO) with optional KMS encryption and resource policy.

SNSSubscription

Subscribes an endpoint (SQS, Lambda, HTTPS, email) to an SNS topic.

EventBus

Custom EventBridge event bus for decoupled event routing between services and accounts.

EventRule

EventBridge rule matching scheduled or pattern-based events. References EventBus CRs and supports cron/rate expressions.

EventTarget

Wires targets (Lambda, SQS, SNS, Kinesis, Step Functions) to an EventBridge rule. Supports input transformation and IAM role ARN.

EventBridgePipe

Pipes connecting event sources to targets with optional filtering and enrichment.

SESEmailIdentity

SES domain or email address identity with DKIM and MAIL FROM configuration.

SESConfigurationSet

SES configuration set for tracking opens, clicks, bounces, and complaints.

ElastiCacheSubnetGroup

Subnet group for ElastiCache clusters. Cannot be deleted while in use by a replication group.

ElastiCacheReplicationGroup

Redis or Valkey replication group with automatic failover, TLS, and at-rest encryption.⏱ async

ElastiCacheParameterGroup

ElastiCache parameter group for Redis or Memcached engine configuration.

ElastiCacheServerlessCache

ElastiCache Serverless cache that auto-scales capacity without managing nodes.⏱ async

MemoryDBCluster

MemoryDB for Redis cluster with multi-AZ durability and strong consistency.⏱ async

DAXCluster

DynamoDB Accelerator in-memory cache cluster with microsecond latency.

HostedZone

Route 53 hosted zone (public or private). Deletion blocked if non-NS/SOA records exist.

RecordSet

DNS record set. Supports A, AAAA, CNAME, TXT, MX, alias records, and weighted routing.

HealthCheck

Route 53 health check (HTTP, HTTPS, TCP) with configurable interval and failure threshold.

ResolverRule

Route 53 Resolver forwarding rule for hybrid DNS between on-premises and VPC.

ResolverEndpoint

Inbound or outbound resolver endpoint with ENIs in specified subnets.

DelegationSignerRecord

DNSSEC delegation signer records for child hosted zones.

EKSCluster

EKS control plane with VPC config, logging, encryption, access config, Kubernetes network config (serviceIPv4CIDR, IP family), upgrade support policy, and bootstrap add-ons control.⏱ async 10–15m

EKSNodeGroup

Managed node group with scaling config, instance types, AMI type, capacity type, disk size, labels, taints, update config, launch template, remote access, and node repair config.⏱ async 3–5m

EKSAddon

EKS cluster addon (vpc-cni, kube-proxy, coredns, ebs-csi, etc.). Adopts pre-existing addons.

EKSFargateProfile

Fargate profile with namespace + label selectors for serverless pods.⏱ async ~2m

EKSAccessEntry

Maps an IAM principal to Kubernetes RBAC groups or cluster-access policies. Requires API auth mode.

EKSIdentityProviderConfig

OIDC identity provider configuration for Kubernetes authentication.

LambdaFunction

Lambda function from S3 or container image with full config: runtime, handler, memory, timeout, VPC, layers, DLQ, X-Ray tracing, CloudWatch logging config, EFS mounts, SnapStart, container image config, and reserved concurrency.

LambdaEventSourceMapping

Wires an SQS queue, DynamoDB stream, or Kinesis stream to trigger a Lambda function.

LambdaPermission

Resource-based policy statement allowing a service or account to invoke a Lambda function.

LambdaAlias

Lambda function alias pointing to a specific version with optional weighted traffic splitting.

LambdaLayerVersion

Lambda layer version for shared dependencies, runtimes, and configuration.

LambdaCodeSigningConfig

Code signing configuration ensuring only trusted code is deployed to Lambda.

LambdaFunctionURL

Lambda function URL providing a dedicated HTTPS endpoint without API Gateway.

ECSCluster

ECS cluster with capacity providers (FARGATE, FARGATE_SPOT, EC2).

ECSTaskDefinition

Task definition with container definitions, CPU/memory, execution role, and log groups. Registers new revision on change.

ECSService

Long-running ECS service with desired count, load balancer config, and deployment circuit breaker.

ECSCapacityProvider

Capacity provider linking an Auto Scaling Group to an ECS cluster with managed scaling.

ECSScheduledTask

Scheduled ECS task backed by EventBridge with cron or rate expression.

LoadBalancer

Application, Network, or Gateway Load Balancer with scheme, subnets, security groups, and attribute config.⏱ async

TargetGroup

Target group for routing to instances, IPs, Lambda, or ALB with health check config and stickiness.

Listener

Load balancer listener with protocol, port, default forward/redirect/fixed-response actions, and SSL certificates.

ListenerRule

Routing rule on an ALB listener based on host, path, header, or query conditions. References Listener CRs.

Certificate

ACM TLS certificate with DNS or email validation. Stores ARN and CertificateStatus in status.⏱ async

CertificateValidation

Polls an ACM Certificate until it reaches ISSUED state. Useful as a dependency gate for Listener CRs.

CloudFrontDistribution

CloudFront distribution with origins, cache behaviors, and SSL certificate.⏱ async ~15m

CloudFrontOriginAccessControl

OAC for granting CloudFront access to S3 origins without public bucket policies.

CloudFrontCachePolicy

Reusable cache policy controlling TTLs and cache key components.

CloudFrontFunction

Lightweight JavaScript function running at the edge for URL rewrites and header manipulation.

Secret

Secrets Manager secret with optional KMS key, tags, and configurable recovery window. Value sourced from Kubernetes Secret.

SecretRotation

Automatic rotation schedule for a Secrets Manager secret using a Lambda rotation function. References Secret CRs.

SSMParameter

Systems Manager Parameter Store value (String, StringList, SecureString) with KMS encryption and tier selection.

SSMDocument

SSM automation or command document for fleet operations and instance configuration.

KMSKey

Customer-managed KMS key with key policy, optional automatic rotation, multi-region support, and scheduled deletion.

KMSAlias

Human-readable alias pointing to a KMS key for easier key reference. References KMSKey CRs.

KMSKeyPolicy

Sets the key policy document for a KMS key. References KMSKey CRs or direct key IDs.

KMSGrant

Grants specific KMS operations to a grantee principal on a per-key basis.

CloudFormationStack

CloudFormation stack from S3 template URL with parameters and rollback config.⏱ async

CloudFormationStackSet

StackSet for deploying CloudFormation stacks across multiple accounts and regions.

LogGroup

CloudWatch Logs group with configurable retention period and optional KMS encryption.

MetricFilter

Extracts metric values from log events and publishes them as custom CloudWatch metrics. References LogGroup CRs.

SubscriptionFilter

Subscription filter streaming log events to Lambda, Kinesis, or Firehose. References LogGroup CRs.

CloudWatchAlarm

Metric alarm triggering SNS notifications or Auto Scaling actions on threshold breach.

CloudWatchDashboard

CloudWatch dashboard with widgets defined as JSON body.

CompositeAlarm

Composite alarm combining multiple alarms with AND/OR logic.

ECRRepository

ECR private repository with image scanning, tag mutability, and KMS encryption. Stores ARN and repository URI in status.

ECRRepositoryPolicy

Resource-based policy granting cross-account pull access to an ECR repository. References ECRRepository CRs.

ECRLifecyclePolicy

Lifecycle policy expiring old or untagged images to control storage costs. References ECRRepository CRs.

ECRPullThroughCacheRule🔧

Pull-through cache rule proxying public registries (Docker Hub, ECR Public, GCR) through ECR.

⚙ in progress
DynamoDBTable

DynamoDB table with partition key, sort key, GSIs, billing mode, SSE, and optional point-in-time recovery.

DynamoDBGlobalTable

Multi-region active-active DynamoDB global table with replica region configuration.

DynamoDBBackup

On-demand DynamoDB backup with point-in-time recovery support.

DynamoDBTablePolicy

Resource-based policy for cross-account access to a DynamoDB table.

UserPool

Cognito User Pool with password policy, MFA configuration, email/phone auto-verification, and schema attributes.

UserPoolClient

App client for a Cognito User Pool. Configures OAuth flows, allowed scopes, callback URLs, and token validity. References UserPool CRs.

IdentityProvider

Federated identity provider (SAML, OIDC, social) attached to a Cognito User Pool. References UserPool CRs.

KinesisStream

Kinesis Data Stream with shard count or on-demand capacity mode and KMS encryption.

KinesisStreamConsumer

Enhanced fan-out consumer for a Kinesis stream with dedicated throughput.

FirehoseDeliveryStream

Kinesis Firehose delivery stream to S3, Redshift, OpenSearch, or HTTP endpoint.⏱ async

MSKCluster

Amazon MSK (Managed Kafka) cluster with broker config, storage, and TLS settings.⏱ async ~30m

MSKServerlessCluster

Serverless MSK cluster that scales automatically without managing brokers.⏱ async

MSKConfiguration

Reusable MSK configuration with Kafka broker properties.

OpenSearchDomain

OpenSearch Service domain with instance type, EBS, encryption, and VPC config.⏱ async ~15m

OpenSearchServerlessCollection

OpenSearch Serverless collection with security policies and auto-scaling.⏱ async

OpenSearchAccessPolicy

Data access policy granting principals permissions on OpenSearch Serverless collections.

WebACL

WAFv2 Web ACL (REGIONAL or CLOUDFRONT scope) with managed rule groups, custom rules, and default allow/block action. Stores LockToken for safe updates.

IPSet

WAFv2 IP set of IPv4/IPv6 CIDRs used in WAF rules for allow or block matching. Stores LockToken for safe updates.

WAFRegexPatternSet

Regex pattern set for matching request components in WAF rules.

WAFRuleGroup

Reusable rule group that can be referenced from multiple Web ACLs.

ShieldProtection

AWS Shield Advanced protection for a specific resource ARN.

StateMachine

Step Functions state machine (Standard or Express) with ASL definition and IAM role.

Activity

Step Functions activity for worker-based task execution.

CodePipeline

CI/CD pipeline with source, build, and deploy stages across AWS and third-party providers.

CodeBuildProject

CodeBuild project with build environment, source, artifacts, and cache config.

CodeDeployApplication

CodeDeploy application for EC2, Lambda, or ECS blue/green deployments.

CodeDeployDeploymentGroup

Deployment group with traffic routing config, alarms, and rollback settings.

CodeCommitRepository

CodeCommit Git repository with triggers and approval rule templates.

Installation

Up and running in three steps

Bootstrap the operator IAM role with Terraform, install with Helm, then start declaring resources.

1
Bootstrap IAM Role (Terraform)
# terraform/accounts/dev/terraform.tfvars
account_id   = "123456789012"
cluster_name = "dev-eks"
environment  = "dev"
allowed_iam_resource_paths = "/"

$ terraform init \
    -backend-config=accounts/dev/backend.conf
$ terraform apply \
    -var-file=accounts/dev/terraform.tfvars
2
Install with Helm
$ git clone https://github.com/\
    konfig-io/konfig-konector.git
$ helm install konfig-konector \
  ./konfig-konector/helm/konfig-konector \
  --namespace konfig-system \
  --create-namespace \
  --set image.repository=<your-registry>/konfig-konector \
  --set aws.region=us-east-1 \
  --set operatorRoleArn=\
    arn:aws:iam::123456789012:\
    role/dev-konfig-konector-operator

# Verify
$ kubectl get pods -n konfig-system
NAME                          READY
konfig-konector-xxx-yyy       1/1
3
Declare your first resource
apiVersion: aws.konfig.io/v1alpha1
kind: IAMRole
metadata:
  name: my-app-role
  namespace: my-team
spec:
  roleName: Prod-my-app-role
  assumeRolePolicyDocument: |
    {"Version":"2012-10-17",
    "Statement":[{"Effect":"Allow",
    "Principal":{"Service":
    "pods.eks.amazonaws.com"},
    "Action":["sts:AssumeRole",
    "sts:TagSession"]}]}
  tags:
    team: my-team

$ kubectl apply -f role.yaml
$ kubectl get iamrole my-app-role \
    -n my-team -o yaml
Architecture

How it fits into your cluster

📄
YAML in Git
kubectl apply / Argo
konfig-konector
controller-runtime
🔑
Pod Identity
temp credentials
AWS APIs
IAM · EC2 · RDS · …
🎯
Watch
Kubernetes API server notifies on CR changes
🔍
Describe
Fetch live AWS state — no caching
🔧
Reconcile
Create or update to match spec
Status
Write ARN/ID + Ready condition to CR
Reconcile Loop

Predictable. Idempotent. Safe.

Every controller follows the same 5-step loop. You can read any controller in the codebase and immediately understand it.

1

Fetch the CR

Read the current CR from the Kubernetes API. If it's gone, return immediately — nothing to do.

2

Handle deletion

If deletionTimestamp is set, call the AWS delete API and remove the finalizer. The CR stays visible in Kubernetes until AWS confirms deletion.

3

Ensure finalizer

Add aws.konfig.io/finalizer if not present. This prevents the CR from being garbage-collected before the AWS resource is deleted.

4

Describe AWS state

Fetch the live AWS resource. If it doesn't exist, create it. If it does, compare spec against current state and apply only the delta — gated on observedGeneration to avoid expensive no-op API calls.

5

Update status & requeue

Write ARN/ID, Ready: True, and lastSyncTime to the CR status. Requeue after 5 minutes for drift detection.

Comparison

Why not ACK or Crossplane?

Feature konfig-konector AWS Controllers (ACK) Crossplane
Single binary for all services one pod per service partial providers
EKS Pod Identity native auth IRSA only IRSA only
IAM role & policy management full limited
EKS Pod Identity associations
Route53 + health checks community
Automatic drift correction 5-min cycle
Generation-gated updates
Cross-resource CR references some Compositions
GitOps / ArgoCD compatible
Reference Documentation

Everything documented

Full API reference for every CRD — spec fields, status fields, deletion behavior, and examples.