NATS in Cloud-Native Engineering
Category: messaging
Status: Incubating
Stars: 14,500
Last Updated: 2026-04-22
Primary Language: Go
Documentation: https://nats.io/
Purpose and Use Cases
What Problem Does It Solve?
NATS addresses the critical need for lightweight, high-performance messaging in distributed systems. Traditional messaging systems like RabbitMQ or Kafka often introduce complexity, overhead, and operational burden that are unnecessary for many cloud-native workloads. NATS provides a simple, fast, and secure messaging infrastructure that scales effortlessly from microservices to large distributed systems.
When to Use This Project
Use NATS when you need:
- Low-latency, high-throughput messaging
- Simple pub/sub messaging patterns
- Request-reply patterns for RPC
- Microservice communication with minimal overhead
- Edge and IoT messaging with constrained resources
- Cloud-native service discovery and health checks
- Streaming with durable subscriptions and at-least-once delivery
Key Use Cases
- Microservice Communication: Lightweight service-to-service messaging
- Event-Driven Architecture: Publish-subscribe event distribution
- Request-Reply Patterns: Synchronous RPC over NATS
- Configuration Management: Distributed configuration updates
- Health Monitoring: Service health and status broadcasting
- IoT Messaging: Edge device communication with low latency
- Serverless Triggering: Event-based function invocation
- Streaming Analytics: High-throughput event streaming
Architecture Design Patterns
Core Components
- NATS Server: Lightweight message broker for pub/sub and request-reply
- NATS Streaming (Streaming): Persistent message streaming with durability
- JetStream: Native streaming and queue subscription support
- NATS Client: Language-specific client libraries for message operations
- Leaf Nodes: Connect separate NATS clusters for federation
- Gateways: Wide area network (WAN) cluster connections
- NATS Resolver: Dynamic cluster configuration and discovery
- User Authentication: JWT-based user and account management
Component Interactions
- Publisher → NATS Server: Publish messages to subjects
- NATS Server → Subscriber: Deliver messages to interested subscribers
- Client → NATS Server: Connect, subscribe, publish, and receive messages
- Server → Server: Interconnect for clustering and federation
- JetStream → Storage: Persist messages to file-based storage
- NATS Resolver → Server: Dynamic configuration distribution
Data Flow Patterns
- Publish-Subscribe: Publisher sends to subject → Server routes to all subscribers
- Request-Reply: Request sent → Server routes → Reply from one service
- Queue Subscription: Message delivered to one worker from queue group
- JetStream Production: Message published → Stored → Available for consumers
- Consumer Group: Multiple consumers share message processing load
- Federation: Leaf node connects → Cluster sync → Cross-cluster messaging
Design Principles
- Simplicity: Minimal concepts (subjects, subscribers, publishers)
- Speed: Zero-copy architecture for maximum throughput
- Reliability: At-least-once delivery with JetStream
- Scalability: Stateless servers with horizontal scaling
- Flexibility: Multiple messaging patterns and delivery modes
- Security: JWT-based authentication and authorization
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Service discovery via NATS Service Import/Export
- Prometheus: Expose server metrics for monitoring
- Grafana: Pre-built dashboards for NATS metrics
- Tekton: Event-driven pipeline triggering
- Helm: Deploy NATS using Helm chart
- Istio: Service mesh integration for mTLS
- OpenTelemetry: Distributed tracing support
- Cert-Manager: TLS certificate management
API Patterns
- Subject-Based Routing: Messages routed by subject patterns
- Queue Groups: Load balance across multiple subscribers
- JetStream API: Advanced streaming with durable consumers
- NATS RPC: Request-reply pattern for RPC
- Websocket API: Browser-based client access
- HTTP API: REST-style interface for simple clients
Configuration Patterns
- Server Configuration: YAML-based server configuration
- JetStream Settings: Configure streams and consumers
- Authorization: JWT-based user and permission management
- Clustering: Configure server cluster for HA
- Leaf Node: Connect separate NATS clusters
- Gateway: Configure wide area clustering
Extension Mechanisms
- NATS Scripts: Execute NATS script for automation
- Webhooks: Integrate with webhook-based systems
- Custom Clients: Implement custom NATS protocol clients
- Metrics Export: Extend metrics with custom data
Common Pitfalls and How to Avoid Them
Configuration Issues
- Subject Design: Plan subjects carefully for scalability and organization
- Memory Limits: Configure memory limits to prevent server overload
- JetStream Storage: Allocate sufficient disk space for persistent streams
- TLS Configuration: Properly configure TLS certificates and verification
- Authentication: Set up JWT authentication correctly
Performance Issues
- Subscriber Overload: Scale subscribers to handle message volume
- Message Batching: Batch messages for high-throughput scenarios
- Connection Limits: Monitor and limit concurrent connections
- Flow Control: Implement flow control for slow consumers
- Network Latency: Optimize network topology for latency-sensitive apps
Operational Challenges
- Server Clustering: Configure cluster for proper quorum and failover
- JetStream Recovery: Plan for stream and consumer recovery
- Log Rotation: Configure log rotation to prevent disk exhaustion
- Backup and Restore: Implement backup strategy for JetStream data
- Version Upgrades: Plan zero-downtime upgrades
Security Pitfalls
- Subject Permissions: Carefully manage subject-level permissions
- JWT Security: Secure JWT signing keys and distribution
- Anonymous Connections: Disable anonymous connections in production
- TLS Verification: Always verify certificates in production
- Audit Logging: Enable audit logging for compliance
Coding Practices
Idiomatic Configuration
- Server YAML: Declarative server configuration
- JetStream Streams: Define streams with retention policies
- Consumer Groups: Configure durable consumers withacks
- Authorization: Use JWT for fine-grained permissions
API Usage Patterns
- Basic Pub/Sub: Subscribe to subjects, publish messages
- Queue Subscriptions: Load balance across workers
- Request-Reply: Use NATS for RPC patterns
- JetStream API: Advanced streaming with durable consumers
- Flow Control: Implement backpressure handling
Observability Best Practices
- Metrics Collection: Prometheus scrape NATS metrics endpoint
- Alerting: Set up alerts for slow consumers and connection issues
- Dashboard: Use Grafana dashboards for NATS monitoring
- Log Analysis: Monitor server logs for errors and warnings
- Tracing: Integrate OpenTelemetry for distributed tracing
Development Workflow
- Local Development: Use NATS server in Docker for testing
- Testing: Test messaging patterns in staging environment
- CI/CD Integration: Integrate NATS in CI/CD workflows
- Rollback Plans: Test rollback procedures for configuration changes
Fundamentals
Essential Concepts
- Subject: Topic or channel for message routing
- Subscriber: Client that receives messages for a subject
- Publisher: Client that sends messages to a subject
- Queue Group: Multiple subscribers sharing message load
- JetStream: Native streaming with durability and persistence
- Consumer: JetStream consumer that processes messages
- Stream: JetStream stream that stores messages
- Delivery Policy: Define how messages are delivered to consumers
Terminology Glossary
- Subject: Message routing key
- Queue: Group of subscribers sharing message load
- JetStream: Native streaming engine
- Stream: Log of messages with retention policy
- Consumer: Reader of messages from a stream
- Ack Policy: Acknowledgment requirements for consumers
- Durable Consumer: Consumer with state persistence
- Redelivery: Re-send messages that weren't acknowledged
Data Models and Types
- Message: Subject, payload, headers, and metadata
- Stream: Name, subjects, retention, storage type
- Consumer: Name, filter subject, acknowledgment policy
- Subscription: Client subscription to subject(s)
- Connection: Client connection to NATS server
Lifecycle Management
- Publisher Lifecycle: Connect → Publish → Disconnect
- Subscriber Lifecycle: Connect → Subscribe → Receive → Unsubscribe
- JetStream Producer: Create stream → Publish → Manage
- JetStream Consumer: Create consumer → Subscribe → Process
State Management
- Connection State: Connected, disconnected, reconnecting
- Subscription State: Active, inactive, paused
- Stream State: Messages stored, bytes, first/last sequence
- Consumer State: Deliver sequence, ack floor, pending
Scaling and Deployment Patterns
Horizontal Scaling
- Server Clustering: Add servers to increase capacity
- Queue Groups: Scale consumers for message processing
- JetStream Clusters: Scale streaming capacity
- Leaf Nodes: Federate clusters for cross-region messaging
High Availability
- Server Redundancy: Deploy multiple servers for failover
- JetStream Quorum: Use multiple replicas for stream durability
- Consumer Failover: Automatic consumer failover
- Cluster Rebalancing: Automatically rebalance during failures
Production Deployments
- Production Cluster: Deploy multiple servers with clustering
- JetStream Replication: Configure stream replication across nodes
- TLS Encryption: Enable TLS for all connections
- Monitoring: Set up Prometheus and Grafana for monitoring
Upgrade Strategies
- Rolling Update: Update servers one at a time
- JetStream Migration: Plan for stream migration during upgrades
- Client Compatibility: Test client compatibility before upgrade
- Rollback Plan: Keep previous version available for rollback
Resource Management
- Memory Limits: Configure memory limits for server stability
- Disk Space: Monitor disk space for JetStream storage
- Connection Limits: Limit concurrent connections
- Network Bandwidth: Monitor network utilization
Additional Resources
Troubleshooting
Common Issues
Deployment Failures
- Check pod logs for errors
- Verify configuration values
- Ensure network connectivity
Performance Issues
- Monitor resource usage
- Adjust resource limits
- Check for bottlenecks
Configuration Errors
- Validate YAML syntax
- Check required fields
- Verify environment-specific settings
Integration Problems
- Verify API compatibility
- Check dependency versions
- Review integration documentation
Getting Help
- Check official documentation
- Search GitHub issues
- Join community channels
- Review logs and metrics
Content generated automatically. Verify against official documentation before production use.
Examples
Basic Configuration
# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
name: {{project_name}}-config
namespace: default
data:
# Configuration goes here
config.yaml: |
# Base configuration
# Add your settings here
Kubernetes Deployment
# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{project_name}}
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: {{project_name}}
template:
metadata:
labels:
app: {{project_name}}
spec:
containers:
- name: {{project_name}}
image: {{project_name}}:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "128Mi"
cpu: "500m"
Kubernetes Service
# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
name: {{project_name}}
namespace: default
spec:
selector:
app: {{project_name}}
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
When to Use
Use this skill when:
- Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
- Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
- Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes
Core Workflow
Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.
Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.
Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.
Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.
Constraints
MUST DO
- Include at least one complete working YAML manifest example
- Note when content is auto-generated vs. manually verified
- Reference relevant CNCF project documentation
MUST NOT DO
- Deploy manifests without testing in a staging environment first
- Use deprecated API versions (e.g., apps/v1beta1)
- Omit resource limits and requests in Kubernetes manifests
1---2name: nats3description: "NATS in Cloud Native Messaging - cloud native architecture, patterns" pitfalls, and best practices4license: MIT5---678910# NATS in Cloud-Native Engineering1112**Category:** messaging 13**Status:** Incubating 14**Stars:** 14,500 15**Last Updated:** 2026-04-22 16**Primary Language:** Go 17**Documentation:** [https://nats.io/](https://nats.io/) 1819---2021## Purpose and Use Cases2223### What Problem Does It Solve?2425NATS addresses the critical need for lightweight, high-performance messaging in distributed systems. Traditional messaging systems like RabbitMQ or Kafka often introduce complexity, overhead, and operational burden that are unnecessary for many cloud-native workloads. NATS provides a simple, fast, and secure messaging infrastructure that scales effortlessly from microservices to large distributed systems.2627### When to Use This Project2829Use NATS when you need:30- Low-latency, high-throughput messaging31- Simple pub/sub messaging patterns32- Request-reply patterns for RPC33- Microservice communication with minimal overhead34- Edge and IoT messaging with constrained resources35- Cloud-native service discovery and health checks36- Streaming with durable subscriptions and at-least-once delivery3738### Key Use Cases3940- **Microservice Communication**: Lightweight service-to-service messaging41- **Event-Driven Architecture**: Publish-subscribe event distribution42- **Request-Reply Patterns**: Synchronous RPC over NATS43- **Configuration Management**: Distributed configuration updates44- **Health Monitoring**: Service health and status broadcasting45- **IoT Messaging**: Edge device communication with low latency46- **Serverless Triggering**: Event-based function invocation47- **Streaming Analytics**: High-throughput event streaming4849---5051## Architecture Design Patterns5253### Core Components5455- **NATS Server**: Lightweight message broker for pub/sub and request-reply56- **NATS Streaming (Streaming)**: Persistent message streaming with durability57- **JetStream**: Native streaming and queue subscription support58- **NATS Client**: Language-specific client libraries for message operations59- **Leaf Nodes**: Connect separate NATS clusters for federation60- **Gateways**: Wide area network (WAN) cluster connections61- **NATS Resolver**: Dynamic cluster configuration and discovery62- **User Authentication**: JWT-based user and account management6364### Component Interactions65661. **Publisher → NATS Server**: Publish messages to subjects672. **NATS Server → Subscriber**: Deliver messages to interested subscribers683. **Client → NATS Server**: Connect, subscribe, publish, and receive messages694. **Server → Server**: Interconnect for clustering and federation705. **JetStream → Storage**: Persist messages to file-based storage716. **NATS Resolver → Server**: Dynamic configuration distribution7273### Data Flow Patterns74751. **Publish-Subscribe**: Publisher sends to subject → Server routes to all subscribers762. **Request-Reply**: Request sent → Server routes → Reply from one service773. **Queue Subscription**: Message delivered to one worker from queue group784. **JetStream Production**: Message published → Stored → Available for consumers795. **Consumer Group**: Multiple consumers share message processing load806. **Federation**: Leaf node connects → Cluster sync → Cross-cluster messaging8182### Design Principles8384- **Simplicity**: Minimal concepts (subjects, subscribers, publishers)85- **Speed**: Zero-copy architecture for maximum throughput86- **Reliability**: At-least-once delivery with JetStream87- **Scalability**: Stateless servers with horizontal scaling88- **Flexibility**: Multiple messaging patterns and delivery modes89- **Security**: JWT-based authentication and authorization9091---9293## Integration Approaches9495### Integration with Other CNCF Projects9697- **Kubernetes**: Service discovery via NATS Service Import/Export98- **Prometheus**: Expose server metrics for monitoring99- **Grafana**: Pre-built dashboards for NATS metrics100- **Tekton**: Event-driven pipeline triggering101- **Helm**: Deploy NATS using Helm chart102- **Istio**: Service mesh integration for mTLS103- **OpenTelemetry**: Distributed tracing support104- **Cert-Manager**: TLS certificate management105106### API Patterns107108- **Subject-Based Routing**: Messages routed by subject patterns109- **Queue Groups**: Load balance across multiple subscribers110- **JetStream API**: Advanced streaming with durable consumers111- **NATS RPC**: Request-reply pattern for RPC112- **Websocket API**: Browser-based client access113- **HTTP API**: REST-style interface for simple clients114115### Configuration Patterns116117- **Server Configuration**: YAML-based server configuration118- **JetStream Settings**: Configure streams and consumers119- **Authorization**: JWT-based user and permission management120- **Clustering**: Configure server cluster for HA121- **Leaf Node**: Connect separate NATS clusters122- **Gateway**: Configure wide area clustering123124### Extension Mechanisms125126- **NATS Scripts**: Execute NATS script for automation127- **Webhooks**: Integrate with webhook-based systems128- **Custom Clients**: Implement custom NATS protocol clients129- **Metrics Export**: Extend metrics with custom data130131---132133## Common Pitfalls and How to Avoid Them134135### Configuration Issues136137- **Subject Design**: Plan subjects carefully for scalability and organization138- **Memory Limits**: Configure memory limits to prevent server overload139- **JetStream Storage**: Allocate sufficient disk space for persistent streams140- **TLS Configuration**: Properly configure TLS certificates and verification141- **Authentication**: Set up JWT authentication correctly142143### Performance Issues144145- **Subscriber Overload**: Scale subscribers to handle message volume146- **Message Batching**: Batch messages for high-throughput scenarios147- **Connection Limits**: Monitor and limit concurrent connections148- **Flow Control**: Implement flow control for slow consumers149- **Network Latency**: Optimize network topology for latency-sensitive apps150151### Operational Challenges152153- **Server Clustering**: Configure cluster for proper quorum and failover154- **JetStream Recovery**: Plan for stream and consumer recovery155- **Log Rotation**: Configure log rotation to prevent disk exhaustion156- **Backup and Restore**: Implement backup strategy for JetStream data157- **Version Upgrades**: Plan zero-downtime upgrades158159### Security Pitfalls160161- **Subject Permissions**: Carefully manage subject-level permissions162- **JWT Security**: Secure JWT signing keys and distribution163- **Anonymous Connections**: Disable anonymous connections in production164- **TLS Verification**: Always verify certificates in production165- **Audit Logging**: Enable audit logging for compliance166167---168169## Coding Practices170171### Idiomatic Configuration172173- **Server YAML**: Declarative server configuration174- **JetStream Streams**: Define streams with retention policies175- **Consumer Groups**: Configure durable consumers withacks176- **Authorization**: Use JWT for fine-grained permissions177178### API Usage Patterns179180- **Basic Pub/Sub**: Subscribe to subjects, publish messages181- **Queue Subscriptions**: Load balance across workers182- **Request-Reply**: Use NATS for RPC patterns183- **JetStream API**: Advanced streaming with durable consumers184- **Flow Control**: Implement backpressure handling185186### Observability Best Practices187188- **Metrics Collection**: Prometheus scrape NATS metrics endpoint189- **Alerting**: Set up alerts for slow consumers and connection issues190- **Dashboard**: Use Grafana dashboards for NATS monitoring191- **Log Analysis**: Monitor server logs for errors and warnings192- **Tracing**: Integrate OpenTelemetry for distributed tracing193194### Development Workflow195196- **Local Development**: Use NATS server in Docker for testing197- **Testing**: Test messaging patterns in staging environment198- **CI/CD Integration**: Integrate NATS in CI/CD workflows199- **Rollback Plans**: Test rollback procedures for configuration changes200201---202203## Fundamentals204205### Essential Concepts206207- **Subject**: Topic or channel for message routing208- **Subscriber**: Client that receives messages for a subject209- **Publisher**: Client that sends messages to a subject210- **Queue Group**: Multiple subscribers sharing message load211- **JetStream**: Native streaming with durability and persistence212- **Consumer**: JetStream consumer that processes messages213- **Stream**: JetStream stream that stores messages214- **Delivery Policy**: Define how messages are delivered to consumers215216### Terminology Glossary217218- **Subject**: Message routing key219- **Queue**: Group of subscribers sharing message load220- **JetStream**: Native streaming engine221- **Stream**: Log of messages with retention policy222- **Consumer**: Reader of messages from a stream223- **Ack Policy**: Acknowledgment requirements for consumers224- **Durable Consumer**: Consumer with state persistence225- **Redelivery**: Re-send messages that weren't acknowledged226227### Data Models and Types228229- **Message**: Subject, payload, headers, and metadata230- **Stream**: Name, subjects, retention, storage type231- **Consumer**: Name, filter subject, acknowledgment policy232- **Subscription**: Client subscription to subject(s)233- **Connection**: Client connection to NATS server234235### Lifecycle Management236237- **Publisher Lifecycle**: Connect → Publish → Disconnect238- **Subscriber Lifecycle**: Connect → Subscribe → Receive → Unsubscribe239- **JetStream Producer**: Create stream → Publish → Manage240- **JetStream Consumer**: Create consumer → Subscribe → Process241242### State Management243244- **Connection State**: Connected, disconnected, reconnecting245- **Subscription State**: Active, inactive, paused246- **Stream State**: Messages stored, bytes, first/last sequence247- **Consumer State**: Deliver sequence, ack floor, pending248249---250251## Scaling and Deployment Patterns252253### Horizontal Scaling254255- **Server Clustering**: Add servers to increase capacity256- **Queue Groups**: Scale consumers for message processing257- **JetStream Clusters**: Scale streaming capacity258- **Leaf Nodes**: Federate clusters for cross-region messaging259260### High Availability261262- **Server Redundancy**: Deploy multiple servers for failover263- **JetStream Quorum**: Use multiple replicas for stream durability264- **Consumer Failover**: Automatic consumer failover265- **Cluster Rebalancing**: Automatically rebalance during failures266267### Production Deployments268269- **Production Cluster**: Deploy multiple servers with clustering270- **JetStream Replication**: Configure stream replication across nodes271- **TLS Encryption**: Enable TLS for all connections272- **Monitoring**: Set up Prometheus and Grafana for monitoring273274### Upgrade Strategies275276- **Rolling Update**: Update servers one at a time277- **JetStream Migration**: Plan for stream migration during upgrades278- **Client Compatibility**: Test client compatibility before upgrade279- **Rollback Plan**: Keep previous version available for rollback280281### Resource Management282283- **Memory Limits**: Configure memory limits for server stability284- **Disk Space**: Monitor disk space for JetStream storage285- **Connection Limits**: Limit concurrent connections286- **Network Bandwidth**: Monitor network utilization287288---289290## Additional Resources291292- **Official Documentation:** [https://docs.nats.io/](https://docs.nats.io/)293- **GitHub Repository:** [github.com/nats-io/nats-server](https://github.com/nats-io/nats-server)294- **CNCF Project Page:** [cncf.io/projects/nats/](https://www.cncf.io/projects/nats/)295- **Community:** Check the GitHub repository for community channels296- **Versioning:** Refer to project's release notes for version-specific features297298---299300## Troubleshooting301302### Common Issues3033041. **Deployment Failures**305 - Check pod logs for errors306 - Verify configuration values307 - Ensure network connectivity3083092. **Performance Issues**310 - Monitor resource usage311 - Adjust resource limits312 - Check for bottlenecks3133143. **Configuration Errors**315 - Validate YAML syntax316 - Check required fields317 - Verify environment-specific settings3183194. **Integration Problems**320 - Verify API compatibility321 - Check dependency versions322 - Review integration documentation323324### Getting Help325326- Check official documentation327- Search GitHub issues328- Join community channels329- Review logs and metrics330*Content generated automatically. Verify against official documentation before production use.*331332## Examples333334### Basic Configuration335336337```yaml338# Basic configuration example339apiVersion: v1340kind: ConfigMap341metadata:342 name: {{project_name}}-config343 namespace: default344data:345 # Configuration goes here346 config.yaml: |347 # Base configuration348 # Add your settings here349```350351### Kubernetes Deployment352353354```yaml355# Kubernetes deployment for {{project_name}}356apiVersion: apps/v1357kind: Deployment358metadata:359 name: {{project_name}}360 namespace: default361spec:362 replicas: 1363 selector:364 matchLabels:365 app: {{project_name}}366 template:367 metadata:368 labels:369 app: {{project_name}}370 spec:371 containers:372 - name: {{project_name}}373 image: {{project_name}}:latest374 ports:375 - containerPort: 8080376 resources:377 limits:378 memory: "128Mi"379 cpu: "500m"380```381382### Kubernetes Service383384385```yaml386# Kubernetes service for {{project_name}}387apiVersion: v1388kind: Service389metadata:390 name: {{project_name}}391 namespace: default392spec:393 selector:394 app: {{project_name}}395 ports:396 - protocol: TCP397 port: 80398 targetPort: 8080399 type: ClusterIP400```401402---403404## When to Use405406Use this skill when:407408- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster409- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges410- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes411---412413## Core Workflow4144151. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.4164172. **Design Architecture** — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. **Checkpoint:** Verify the architecture addresses all requirements and follows CNCF conventions.4184193. **Implement & Configure** — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. **Checkpoint:** Validate all YAML against schema and test in a staging environment.4204214. **Deploy & Monitor** — Apply manifests to the cluster, verify component health, and confirm observability is working. **Checkpoint:** Confirm all pods/services are running, probes passing, and metrics/alerts configured.422423---424425## Constraints426427### MUST DO428- Include at least one complete working YAML manifest example429- Note when content is auto-generated vs. manually verified430- Reference relevant CNCF project documentation431432### MUST NOT DO433- Deploy manifests without testing in a staging environment first434- Use deprecated API versions (e.g., apps/v1beta1)435- Omit resource limits and requests in Kubernetes manifests