L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

envoy

envoy

"Envoy in Cloud-Native Engineering - Cloud-native high-performance edge/middle/service" proxy

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: envoy compatibility: opencode completeness: 95 content-types:

  • guidance
  • examples
  • do-dont
  • config description: '"Envoy in Cloud-Native Engineering - Cloud-native high-performance edge/middle/service" proxy' license: MIT maturity: stable metadata: domain: cncf output-format: manifests related-skills: null role: reference scope: infrastructure triggers: cloud-native, engineering, envoy, high-performance, optimization, performance, speed archetypes:
    • educational
    • strategic anti_triggers:
    • brainstorming
    • vague ideation
    • non-containerized architecture response_profile: verbosity: medium directive_strength: low abstraction_level: strategic version: "1.0.0"

Envoy in Cloud-Native Engineering

Category: cars
Status: Active
Stars: 27,866
Last Updated: 2026-04-22
Primary Language: C++
Documentation: https://www.envoyproxy.io/docs/


Purpose and Use Cases

Envoy is a core component of the cloud-native ecosystem, serving as a cloud-native edge/middle/service proxy providing advanced traffic management, observability, and security for service-to-service communication.

What Problem Does It Solve?

The complexity of service-to-service communication in distributed systems, including load balancing, circuit breaking, retries, timeouts, mutual TLS, and observability.

When to Use This Project

Use Envoy as a sidecar proxy in a service mesh, as an edge router for ingress traffic, or as a proxy for service-to-service communication. It's ideal when you need advanced traffic management, mutual TLS, or observability features.

Key Use Cases

  • API gateway and ingress controller
  • Service mesh sidecar proxy
  • Rate limiting and request routing
  • Mutual TLS termination
  • Distributed tracing integration

Architecture Design Patterns

Core Components

  • Listener: Network endpoint that accepts incoming connections
  • Filter Chain: Sequence of filters that process connections
  • Cluster: Logical group of downstream services
  • Cluster Manager: Manages clusters and health checking
  • HTTP Connection Manager: HTTP-specific processing
  • Service Discovery: Dynamic configuration of upstream hosts
  • Statistics: Fine-grained metrics collection

Component Interactions

  1. Client → Listener: Incoming connection
  2. Listener → Filter Chain: Processes connection
  3. Filter → Cluster: Routes to upstream
  4. Cluster Manager → Health Check: Monitors host health
  5. Service Discovery → Cluster Manager: Updates host list
  6. Stats → Monitoring System: Exports metrics

Data Flow Patterns

  1. Request Flow: Client → Listener → Filter → Cluster → Upstream
  2. Filter Processing: Request headers → Request body → Response headers → Response body
  3. Health Checking: Active checks → Host status update → Cluster manager → Route updates
  4. Configuration: Admin API/XDS → Management server → Filter chain → Listener

Design Principles

  • Data Plane/Control Plane Separation: Independent evolution
  • Extensibility: Custom filters and extensions
  • L7 Awareness: HTTP and gRPC handling
  • ** observability First**: Built-in stats, tracing, logging
  • Graceful Shutdowns: Zero-downtime configuration changes
  • Async, Event-Driven: Non-blocking architecture

Integration Approaches

Integration with Other CNCF Projects

  • Kubernetes: Ingress controllers, service mesh sidecars
  • Istio: Primary proxy for service mesh
  • Linkerd: Alternative service mesh using Envoy
  • API Gateways: Edge routing and gateway functionality
  • Service Meshes: Data plane for traffic management
  • Distributed Tracing: Integration with Jaeger, Zipkin
  • Monitoring: Metrics for Prometheus

API Patterns

  • GRPC/XDS: Dynamic configuration protocol
  • Admin API: Management and debugging
  • HTTP/2: Client communication
  • RESTful Admin: Configuration management
  • Extension API: Custom filter development

Configuration Patterns

  • Bootstrap Configuration: Initial configuration
  • XDS Protocol: Dynamic configuration
  • Admin Configuration: Management interface
  • JSON/YAML: Human-readable formats

Extension Mechanisms

  • Custom Filters: HTTP and network filters
  • Custom Clusters: Custom cluster types
  • Extensions: C++ and WebAssembly
  • Lua Scripts: Runtime extensibility
  • Filters Chain: Ordered filter processing

Common Pitfalls and How to Avoid Them

Misconfigurations

  • Route Configuration: Incorrect route matching
  • Cluster Configuration: Wrong health checks
  • Filter Chain: Incorrect filter ordering
  • TLS Configuration: Misconfigured certificates
  • Rate Limiting: Incorrect limits
  • Circuit Breakers: Not configured

Performance Issues

  • Memory Usage: High memory for connections
  • CPU Usage: High CPU for request processing
  • Latency: Proxy overhead
  • Connection Limits: Connection pooling issues
  • Filter Performance: Slow filter chains
  • Configuration Reload: Frequent config changes

Operational Challenges

  • Configuration Management: XDS complexity
  • Debugging: Complex traffic issues
  • Resource Tuning: Memory and CPU optimization
  • Security: Certificate management
  • Rollouts: Zero-downtime configuration changes

Security Pitfalls

  • TLS Configuration: Weak cipher suites
  • Access Control: Missing authorization filters
  • Rate Limiting: Not configured
  • XDS Security: Unauthorized configuration changes
  • Certificate Management: Stale certificates

Coding Practices

Idiomatic Configuration

  • Bootstrap Configuration: Initial setup
  • XDS for Dynamic Config: Runtime updates
  • JSON/YAML: Human-readable formats
  • Admin API: Runtime management

API Usage Patterns

  • GRPC/XDS API: Configuration
  • Admin API: Management and debugging
  • HTTP API: Service communication
  • Extension API: Custom development

Observability Best Practices

  • Stats: Fine-grained metrics
  • Tracing: Distributed tracing support
  • Access Logs: Request logging
  • Admin Interface: Debugging information
  • Observability Plugins: Custom extensions

Testing Strategies

  • Unit Tests: Filter and plugin tests
  • Integration Tests: Proxy behavior
  • Fuzz Tests: Security testing
  • Performance Tests: Throughput measurement
  • Compatibility Tests: API compatibility

Development Workflow

  • Development: envoy-dev container
  • Testing: GoogleTest framework
  • Debugging: Admin interface, logging
  • Deployment: Docker, K8s deployments
  • CI/CD: GitHub Actions, buildkite
  • Tools: envoy-filter, envoy-bazel

Fundamentals

Essential Concepts

  • Listener: Network listener accepting connections
  • Filter: Processes connection/request data
  • Cluster: Logical group of upstream hosts
  • Host: Individual upstream server
  • Route: Rule matching requests to clusters
  • Virtual Host: Set of routes with same FQDN
  • HTTP Connection Manager: HTTP-specific filter
  • Circuit Breaker: Protection against failures
  • Rate Limiter: Request rate control
  • Health Check: Upstream host health monitoring

Terminology Glossary

  • Listener: Network endpoint
  • Filter: Connection/request processor
  • Cluster: Upstream service group
  • Host: Individual upstream server
  • Route: Request-to-cluster mapping
  • Virtual Host: FQDN-based routing
  • Circuit Breaker: Failure protection
  • Rate Limiter: Request rate control
  • Health Check: Upstream health monitoring
  • Admin Interface: Management endpoint

Data Models and Types

  • Listener Config: Listener configuration
  • Cluster Config: Cluster configuration
  • Route Config: Route configuration
  • Filter Config: Filter configuration
  • Health Check: Health check configuration
  • Rate Limit Config: Rate limit configuration
  • Circuit Breaker Config: Circuit breaker settings
  • Host: Upstream host definition
  • Route: Route entry
  • Virtual Host: Virtual host configuration

Lifecycle Management

  • Connection Lifecycle: Accept → Process → Close
  • Request Lifecycle: Headers → Body → Trailers
  • Configuration Lifecycle: Load → Validate → Apply
  • Health Check Lifecycle: Start → Check → Update
  • Rate Limit Lifecycle: Request → Limit → Allow/Deny
  • Circuit Breaker Lifecycle: Active → Breaking → Recovering

State Management

  • Connection State: Active connections
  • Cluster State: Upstream host health
  • Route State: Route matches
  • Stats: Runtime statistics
  • Cache: Response caching state
  • Configuration: Applied configuration

Scaling and Deployment Patterns

Horizontal Scaling

  • Instance Scaling: Multiple Envoy instances
  • Load Balancing: Client-side load balancing
  • Cluster Scaling: Upstream cluster scaling
  • Circuit Breaker Scaling: Concurrent connection limits

High Availability

  • Multiple Instances: Load balanced Envoy proxies
  • Health Checking: Automatic failover
  • Circuit Breaking: Failure isolation
  • Rate Limiting: Distributed rate limits

Production Deployments

  • Production Configuration: Bootstrap and dynamic config
  • Load Balancing: Multiple instances behind load balancer
  • TLS Configuration: Production certificates
  • Rate Limiting: Protection against DDoS
  • Monitoring: Integration with monitoring stack
  • Security: WAF integration, bot detection

Upgrade Strategies

  • Hot Restart: Zero-downtime configuration changes
  • Version Compatibility: API compatibility
  • Rolling Update: Gradual proxy updates
  • Config Validation: Configuration drift checks

Resource Management

  • Memory Configuration: Connection and buffer memory
  • CPU Configuration: Request processing threads
  • Rate Limiting: Request rate and quota management
  • Circuit Breaker: Concurrent request limits

Additional Resources


Troubleshooting

Common Issues

  1. Deployment Failures

    • Check pod logs for errors
    • Verify configuration values
    • Ensure network connectivity
  2. Performance Issues

    • Monitor resource usage
    • Adjust resource limits
    • Check for bottlenecks
  3. Configuration Errors

    • Validate YAML syntax
    • Check required fields
    • Verify environment-specific settings
  4. 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

HTTP Route Configuration

# Envoy HTTP route configuration
static_resources:
  listeners:
  - name: http_listener
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 8080
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains: ["*"]
              routes:
              - match:
                  prefix: "/api"
                route:
                  cluster: api_service
                  timeout: 30s
                  retry_policy:
                    retry_on: 5xx
                    num_retries: 3
              - match:
                  prefix: "/"
                route:
                  cluster: static_content
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

TCP Filter with Connection Load Balancing

# Envoy TCP filter configuration
static_resources:
  listeners:
  - name: tcp_listener
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 5432
    filter_chains:
    - filters:
      - name: envoy.filters.network.tcp_proxy
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
          stat_prefix: postgresql_proxy
          cluster: postgresql_cluster
          access_log:
          - name: envoy.access_loggers.file
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.access_loggers.file.v3.FileAccessLog
              path: /var/log/envoy/tcp.log
          load_balancing_policy:
            policy:
              ring_hash_lb_config:
                hash_function: XX_HASH
                minimum_ring_size: 1024

gRPC Route with Rate Limiting

# Envoy gRPC route configuration with rate limiting
static_resources:
  listeners:
  - name: grpc_listener
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 50051
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          codec_type: AUTO
          route_config:
            name: local_route
            virtual_hosts:
            - name: grpc_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                  headers:
                  - name: content-type
                    exact_match: application/grpc
                route:
                  cluster: grpc_backend
                  timeout: 60s
                  retry_policy:
                    retry_on: 5xx
                    num_retries: 3
          http_filters:
          - name: envoy.filters.http.local_ratelimit
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
              stat_prefix: http_local_rate_limiter
              token_bucket:
                max_tokens: 100
                tokens_per_fill: 10
                fill_interval: 1s
              filter_enabled:
                runtime_key: local_rate_limit_enabled
                default_value:
                  numerator: 100
                  denominator: HUNDRED
              rate_limit:
                - name: envoy.filters.http.local_ratelimit
                  descriptor: { key: key, value: "local_rate_limiter" }
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router

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

  1. Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.

  2. 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.

  3. 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.

  4. 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
Skills enregistrées