related-skills: cncf-aws-kms, cncf-aws-s3, cncf-aws-secrets-manager, cncf-azure-key-vault
cert-manager in Cloud-Native Engineering
Category: security
Status: Graduated
Stars: 9,000
Last Updated: 2026-04-22
Primary Language: Go
Documentation: https://cert-manager.io/
Purpose and Use Cases
cert-manager is a native Kubernetes certificate management controller that helps manage TLS certificates and their lifecycles within Kubernetes clusters.
What Problem Does It Solve?
The complexity of managing TLS certificates across multiple applications, issuers, and certificate authorities. It automates certificate issuance, renewal, and revocation for Kubernetes resources.
When to Use This Project
Use cert-manager when you need automated TLS certificate management for Kubernetes services, want to integrate with multiple CA providers (Let's Encrypt, Vault, etc.), or need certificate renewal automation.
Key Use Cases
- Automated TLS Certificates: Automatically issue and renew TLS certificates
- Multiple Issuers: Support for Let's Encrypt, Vault, Self-Signed, ACME, PKI
- Ingress Integration: Automatic certificate mounting for Ingress resources
- Service Integration: Certificate management for Services and Pods
- Certificate Lifecycle: Automatic renewal and rotation
- Multi-Cluster: Cross-cluster certificate management
- Certificate Requests: On-demand certificate issuance
Architecture Design Patterns
Core Components
- Controller: Main controller managing certificate resources
- Issuer: Cluster-scoped certificate issuer definition
- ClusterIssuer: Cluster-wide certificate issuer
- Certificate: Request for a specific certificate
- CertificateRequest: Certificate signing request
- Challenge: ACME challenge resource
- Order: ACME order resource
- Account: ACME account registration
Component Interactions
- Certificate → Controller: Request certificate
- Controller → Issuer: Request certificate from issuer
- Controller → Order: Create ACME order
- Order → Challenge: Create ACME challenge
- Challenge → DNS/HTTP: Solve ACME challenge
- Controller → CA: Submit CSR to CA
- CA → Controller: Return certificate
- Controller → Secret: Store certificate in Secret
Data Flow Patterns
- Certificate Request: Certificate CRD created → Controller validates → Issuer contacted → Certificate issued → Secret updated
- ACME Flow: Order created → Challenges created → Challenges solved → Order finalized → Certificate retrieved
- Renewal Flow: Certificate expiry check → Renewal trigger → New certificate issued → Old certificate rotated
- Ingress Integration: Ingress created → Certificate request → TLS secret created → Ingress updated
Design Principles
- Kubernetes Native: Uses CRDs and Kubernetes API patterns
- Declarative: Certificate resources defined by desired state
- Extensible: Custom issuer plugins and webhook support
- Auto-Recovery: Automatic certificate renewal
- Multi-Issuer: Support for multiple certificate authorities
- Secure: Private key management and encryption
Integration Approaches
Integration with Other CNCF Projects
- Kubernetes: Core platform for certificate management
- Ingress-Nginx: Automatic TLS for Ingress
- Traefik: Integration with Traefik Ingress controller
- NGINX Ingress: NGINX Ingress controller integration
- Helm: Chart deployment with cert-manager
- Vault: HashiCorp Vault as certificate issuer
- OpenTelemetry: Tracing for certificate operations
- Prometheus: Metrics collection
API Patterns
- Kubernetes API: CRD operations for certificates
- Webhook API: Admission webhooks for validation
- ACME API: ACME protocol for Let's Encrypt
- REST API: Certificate management API
Configuration Patterns
- Issuer/ClusterIssuer YAML: Issuer configuration
- Certificate YAML: Certificate request configuration
- Ingress Annotations: Automatic certificate annotation
- Challenge Configuration: ACME challenge settings
Extension Mechanisms
- Custom Issuers: Implement custom certificate issuers
- Webhooks: Custom validation and mutation webhooks
- Certificate Providers: Add new CA providers
Common Pitfalls and How to Avoid Them
Configuration Issues
- Issuer Configuration: Incorrect issuer configuration
- Certificate Annotations: Missing or incorrect annotations
- Challenge Solving: DNS or HTTP challenge failures
- ACME Account: Lost or misconfigured ACME account
- Secret Permissions: Certificate Secret not accessible
Performance Issues
- Certificate Latency: Slow certificate issuance
- ACME Rate Limits: Let's Encrypt rate limiting
- Controller Load: High reconciliation overhead
- Database Size: Certificate storage growth
Operational Challenges
- Certificate Expiry: Missing expiry monitoring
- Issuer Failures: Issuer unavailability
- ACME Rate Limits: Plan for rate limits
- Certificate Rotation: Manual rotation when needed
- Multi-Cluster: Certificate synchronization
Security Pitfalls
- Private Key Exposure: Secrets not encrypted at rest
- Certificate Trust: Untrusted certificate authorities
- Access Control: Overly permissive certificate access
- ACME Account Security: Compromised ACME account
Coding Practices
Idiomatic Configuration
- Certificate CRDs: Declarative certificate definitions
- Issuer CRDs: Declarative issuer definitions
- Annotations: Ingress and Service annotations
- Webhooks: Custom webhook configurations
API Usage Patterns
- kubectl apply: Create and update certificates
- Controller API: Programmatic certificate management
- ACME API: ACME protocol interactions
- Secret API: Certificate storage
Observability Best Practices
- Metrics: Certificate expiry, issuance success, ACME challenges
- Logging: Certificate operations logging
- Tracing: Certificate request tracing
- Alerting: Certificate expiry alerts
Development Workflow
- Local Testing: minikube/kind for development
- Debugging: Certificate log inspection
- Testing: Certificate issuance testing
- CI/CD: Automated certificate testing
- Tools: kubectl, cert-manager, openssl
Fundamentals
Essential Concepts
- Issuer: Cluster-scoped certificate issuer
- ClusterIssuer: Cluster-wide issuer
- Certificate: Request for a specific certificate
- CertificateRequest: Certificate signing request
- Challenge: ACME challenge resource
- Order: ACME order resource
- Account: ACME account registration
- Secret: Kubernetes Secret storing certificate
Terminology Glossary
- Issuer: Certificate issuer definition
- ClusterIssuer: Cluster-wide issuer
- Certificate: Certificate request
- Challenge: ACME challenge
- Order: ACME order
- Account: ACME account
- CSR: Certificate signing request
Data Models and Types
- Issuer: Issuer configuration
- ClusterIssuer: Cluster issuer configuration
- Certificate: Certificate request configuration
- CertificateRequest: Certificate signing request
- Challenge: Challenge configuration
- Order: Order configuration
- Account: ACME account configuration
Lifecycle Management
- Certificate Lifecycle: Request → Issued → Renewed → Expired
- ACME Lifecycle: Order → Challenges → Finalize → Certificate
- Renewal Lifecycle: Expiry check → Renewal trigger → New certificate
- Issuer Lifecycle: Configure → Validate → Issue → Renew
State Management
- Certificate State: Current certificate status
- Challenge State: ACME challenge status
- Order State: ACME order status
- Account State: ACME account configuration
- Secret State: Certificate storage state
Scaling and Deployment Patterns
Horizontal Scaling
- Controller Scaling: Multiple controller replicas
- Issue Scaling: Multiple issuer instances
- Certificate Processing: Parallel certificate processing
High Availability
- Controller HA: Multiple controller replicas
- Storage HA: etcd HA for certificate state
- Issuer HA: Issuer service HA
- Service Discovery: Kubernetes service discovery
Production Deployments
- Controller Deployment: Production-ready controller deployment
- Issuer Configuration: Trusted CA configuration
- Certificate Storage: Secret encryption at rest
- Monitoring: Certificate expiry monitoring
- Security: RBAC and network policies
Upgrade Strategies
- CRD Migration: Handle CRD schema changes
- Controller Rolling Update: Zero-downtime controller updates
- Certificate Reconciliation: Reconcile certificates after upgrade
- Issuer Configuration: Update issuer configurations
Resource Management
- CPU/Memory Limits: Appropriate resource requests
- Certificate Storage: Secret storage management
- ACME Rate Limits: Plan for rate limits
- Network: Controller to issuer communication
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: cert-manager3description: "cert-manager in Cloud-Native Engineering - Certificate Management for" Kubernetes4license: MIT5---678910 related-skills: cncf-aws-kms, cncf-aws-s3, cncf-aws-secrets-manager, cncf-azure-key-vault1112# cert-manager in Cloud-Native Engineering1314**Category:** security 15**Status:** Graduated 16**Stars:** 9,000 17**Last Updated:** 2026-04-22 18**Primary Language:** Go 19**Documentation:** [https://cert-manager.io/](https://cert-manager.io/) 2021---2223## Purpose and Use Cases2425cert-manager is a native Kubernetes certificate management controller that helps manage TLS certificates and their lifecycles within Kubernetes clusters.2627### What Problem Does It Solve?2829The complexity of managing TLS certificates across multiple applications, issuers, and certificate authorities. It automates certificate issuance, renewal, and revocation for Kubernetes resources.3031### When to Use This Project3233Use cert-manager when you need automated TLS certificate management for Kubernetes services, want to integrate with multiple CA providers (Let's Encrypt, Vault, etc.), or need certificate renewal automation.3435### Key Use Cases363738- **Automated TLS Certificates**: Automatically issue and renew TLS certificates39- **Multiple Issuers**: Support for Let's Encrypt, Vault, Self-Signed, ACME, PKI40- **Ingress Integration**: Automatic certificate mounting for Ingress resources41- **Service Integration**: Certificate management for Services and Pods42- **Certificate Lifecycle**: Automatic renewal and rotation43- **Multi-Cluster**: Cross-cluster certificate management44- **Certificate Requests**: On-demand certificate issuance454647---4849## Architecture Design Patterns5051### Core Components5253- **Controller**: Main controller managing certificate resources54- **Issuer**: Cluster-scoped certificate issuer definition55- **ClusterIssuer**: Cluster-wide certificate issuer56- **Certificate**: Request for a specific certificate57- **CertificateRequest**: Certificate signing request58- **Challenge**: ACME challenge resource59- **Order**: ACME order resource60- **Account**: ACME account registration6162### Component Interactions63641. **Certificate → Controller**: Request certificate652. **Controller → Issuer**: Request certificate from issuer663. **Controller → Order**: Create ACME order674. **Order → Challenge**: Create ACME challenge685. **Challenge → DNS/HTTP**: Solve ACME challenge696. **Controller → CA**: Submit CSR to CA707. **CA → Controller**: Return certificate718. **Controller → Secret**: Store certificate in Secret7273### Data Flow Patterns74751. **Certificate Request**: Certificate CRD created → Controller validates → Issuer contacted → Certificate issued → Secret updated762. **ACME Flow**: Order created → Challenges created → Challenges solved → Order finalized → Certificate retrieved773. **Renewal Flow**: Certificate expiry check → Renewal trigger → New certificate issued → Old certificate rotated784. **Ingress Integration**: Ingress created → Certificate request → TLS secret created → Ingress updated7980### Design Principles8182- **Kubernetes Native**: Uses CRDs and Kubernetes API patterns83- **Declarative**: Certificate resources defined by desired state84- **Extensible**: Custom issuer plugins and webhook support85- **Auto-Recovery**: Automatic certificate renewal86- **Multi-Issuer**: Support for multiple certificate authorities87- **Secure**: Private key management and encryption8889---9091## Integration Approaches9293### Integration with Other CNCF Projects9495- **Kubernetes**: Core platform for certificate management96- **Ingress-Nginx**: Automatic TLS for Ingress97- **Traefik**: Integration with Traefik Ingress controller98- **NGINX Ingress**: NGINX Ingress controller integration99- **Helm**: Chart deployment with cert-manager100- **Vault**: HashiCorp Vault as certificate issuer101- **OpenTelemetry**: Tracing for certificate operations102- **Prometheus**: Metrics collection103104### API Patterns105106- **Kubernetes API**: CRD operations for certificates107- **Webhook API**: Admission webhooks for validation108- **ACME API**: ACME protocol for Let's Encrypt109- **REST API**: Certificate management API110111### Configuration Patterns112113- **Issuer/ClusterIssuer YAML**: Issuer configuration114- **Certificate YAML**: Certificate request configuration115- **Ingress Annotations**: Automatic certificate annotation116- **Challenge Configuration**: ACME challenge settings117118### Extension Mechanisms119120- **Custom Issuers**: Implement custom certificate issuers121- **Webhooks**: Custom validation and mutation webhooks122- **Certificate Providers**: Add new CA providers123124---125126## Common Pitfalls and How to Avoid Them127128### Configuration Issues129130- **Issuer Configuration**: Incorrect issuer configuration131- **Certificate Annotations**: Missing or incorrect annotations132- **Challenge Solving**: DNS or HTTP challenge failures133- **ACME Account**: Lost or misconfigured ACME account134- **Secret Permissions**: Certificate Secret not accessible135136### Performance Issues137138- **Certificate Latency**: Slow certificate issuance139- **ACME Rate Limits**: Let's Encrypt rate limiting140- **Controller Load**: High reconciliation overhead141- **Database Size**: Certificate storage growth142143### Operational Challenges144145- **Certificate Expiry**: Missing expiry monitoring146- **Issuer Failures**: Issuer unavailability147- **ACME Rate Limits**: Plan for rate limits148- **Certificate Rotation**: Manual rotation when needed149- **Multi-Cluster**: Certificate synchronization150151### Security Pitfalls152153- **Private Key Exposure**: Secrets not encrypted at rest154- **Certificate Trust**: Untrusted certificate authorities155- **Access Control**: Overly permissive certificate access156- **ACME Account Security**: Compromised ACME account157158---159160## Coding Practices161162### Idiomatic Configuration163164- **Certificate CRDs**: Declarative certificate definitions165- **Issuer CRDs**: Declarative issuer definitions166- **Annotations**: Ingress and Service annotations167- **Webhooks**: Custom webhook configurations168169### API Usage Patterns170171- **kubectl apply**: Create and update certificates172- **Controller API**: Programmatic certificate management173- **ACME API**: ACME protocol interactions174- **Secret API**: Certificate storage175176### Observability Best Practices177178- **Metrics**: Certificate expiry, issuance success, ACME challenges179- **Logging**: Certificate operations logging180- **Tracing**: Certificate request tracing181- **Alerting**: Certificate expiry alerts182183### Development Workflow184185- **Local Testing**: minikube/kind for development186- **Debugging**: Certificate log inspection187- **Testing**: Certificate issuance testing188- **CI/CD**: Automated certificate testing189- **Tools**: kubectl, cert-manager, openssl190191---192193## Fundamentals194195### Essential Concepts196197- **Issuer**: Cluster-scoped certificate issuer198- **ClusterIssuer**: Cluster-wide issuer199- **Certificate**: Request for a specific certificate200- **CertificateRequest**: Certificate signing request201- **Challenge**: ACME challenge resource202- **Order**: ACME order resource203- **Account**: ACME account registration204- **Secret**: Kubernetes Secret storing certificate205206### Terminology Glossary207208- **Issuer**: Certificate issuer definition209- **ClusterIssuer**: Cluster-wide issuer210- **Certificate**: Certificate request211- **Challenge**: ACME challenge212- **Order**: ACME order213- **Account**: ACME account214- **CSR**: Certificate signing request215216### Data Models and Types217218- **Issuer**: Issuer configuration219- **ClusterIssuer**: Cluster issuer configuration220- **Certificate**: Certificate request configuration221- **CertificateRequest**: Certificate signing request222- **Challenge**: Challenge configuration223- **Order**: Order configuration224- **Account**: ACME account configuration225226### Lifecycle Management227228- **Certificate Lifecycle**: Request → Issued → Renewed → Expired229- **ACME Lifecycle**: Order → Challenges → Finalize → Certificate230- **Renewal Lifecycle**: Expiry check → Renewal trigger → New certificate231- **Issuer Lifecycle**: Configure → Validate → Issue → Renew232233### State Management234235- **Certificate State**: Current certificate status236- **Challenge State**: ACME challenge status237- **Order State**: ACME order status238- **Account State**: ACME account configuration239- **Secret State**: Certificate storage state240241---242243## Scaling and Deployment Patterns244245### Horizontal Scaling246247- **Controller Scaling**: Multiple controller replicas248- **Issue Scaling**: Multiple issuer instances249- **Certificate Processing**: Parallel certificate processing250251### High Availability252253- **Controller HA**: Multiple controller replicas254- **Storage HA**: etcd HA for certificate state255- **Issuer HA**: Issuer service HA256- **Service Discovery**: Kubernetes service discovery257258### Production Deployments259260- **Controller Deployment**: Production-ready controller deployment261- **Issuer Configuration**: Trusted CA configuration262- **Certificate Storage**: Secret encryption at rest263- **Monitoring**: Certificate expiry monitoring264- **Security**: RBAC and network policies265266### Upgrade Strategies267268- **CRD Migration**: Handle CRD schema changes269- **Controller Rolling Update**: Zero-downtime controller updates270- **Certificate Reconciliation**: Reconcile certificates after upgrade271- **Issuer Configuration**: Update issuer configurations272273### Resource Management274275- **CPU/Memory Limits**: Appropriate resource requests276- **Certificate Storage**: Secret storage management277- **ACME Rate Limits**: Plan for rate limits278- **Network**: Controller to issuer communication279280---281282## Additional Resources283284- **Official Documentation:** [https://cert-manager.io/docs/](https://cert-manager.io/docs/)285- **GitHub Repository:** [github.com/cert-manager/cert-manager](https://github.com/cert-manager/cert-manager)286- **CNCF Project Page:** [cncf.io/projects/cert-manager/](https://www.cncf.io/projects/cert-manager/)287- **Community:** Check the GitHub repository for community channels288- **Versioning:** Refer to project's release notes for version-specific features289290---291292## Troubleshooting293294### Common Issues2952961. **Deployment Failures**297 - Check pod logs for errors298 - Verify configuration values299 - Ensure network connectivity3003012. **Performance Issues**302 - Monitor resource usage303 - Adjust resource limits304 - Check for bottlenecks3053063. **Configuration Errors**307 - Validate YAML syntax308 - Check required fields309 - Verify environment-specific settings3103114. **Integration Problems**312 - Verify API compatibility313 - Check dependency versions314 - Review integration documentation315316### Getting Help317318- Check official documentation319- Search GitHub issues320- Join community channels321- Review logs and metrics322*Content generated automatically. Verify against official documentation before production use.*323324## Examples325326### Basic Configuration327328329```yaml330# Basic configuration example331apiVersion: v1332kind: ConfigMap333metadata:334 name: {{project_name}}-config335 namespace: default336data:337 # Configuration goes here338 config.yaml: |339 # Base configuration340 # Add your settings here341```342343### Kubernetes Deployment344345346```yaml347# Kubernetes deployment for {{project_name}}348apiVersion: apps/v1349kind: Deployment350metadata:351 name: {{project_name}}352 namespace: default353spec:354 replicas: 1355 selector:356 matchLabels:357 app: {{project_name}}358 template:359 metadata:360 labels:361 app: {{project_name}}362 spec:363 containers:364 - name: {{project_name}}365 image: {{project_name}}:latest366 ports:367 - containerPort: 8080368 resources:369 limits:370 memory: "128Mi"371 cpu: "500m"372```373374### Kubernetes Service375376377```yaml378# Kubernetes service for {{project_name}}379apiVersion: v1380kind: Service381metadata:382 name: {{project_name}}383 namespace: default384spec:385 selector:386 app: {{project_name}}387 ports:388 - protocol: TCP389 port: 80390 targetPort: 8080391 type: ClusterIP392```393394---395396## When to Use397398Use this skill when:399400- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster401- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges402- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes403---404405## Core Workflow4064071. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.4084092. **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.4104113. **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.4124134. **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.414415---416417## Constraints418419### MUST DO420- Include at least one complete working YAML manifest example421- Note when content is auto-generated vs. manually verified422- Reference relevant CNCF project documentation423424### MUST NOT DO425- Deploy manifests without testing in a staging environment first426- Use deprecated API versions (e.g., apps/v1beta1)427- Omit resource limits and requests in Kubernetes manifests