Feersum

 view release on metacpan or  search on metacpan

eg/envoy-stream.yaml  view on Meta::CPAN

                    private_key:
                      filename: /etc/ssl/private/server.key
                alpn_protocols: ["h2", "http/1.1"]
          filters:
            - name: envoy.filters.network.tcp_proxy
              typed_config:
                "@type": type.googleapis.com/envoy.extensions.filters.network.tcp_proxy.v3.TcpProxy
                stat_prefix: ssl_to_feersum
                cluster: feersum_proxy_protocol

                # Timeouts
                idle_timeout: 60s

    #-------------------------------------------------------------------------
    # Plain TCP passthrough (for testing)
    #-------------------------------------------------------------------------
    - name: tcp_front
      address:
        socket_address:
          address: 0.0.0.0
          port_value: 8080
      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: tcp_to_feersum
                cluster: feersum_tcp
                idle_timeout: 60s

  #===========================================================================
  # Clusters (backends)
  #===========================================================================
  clusters:

    #-------------------------------------------------------------------------
    # TCP backend with PROXY Protocol v2 wrapper
    #-------------------------------------------------------------------------
    - name: feersum_proxy_protocol
      type: STATIC
      connect_timeout: 5s
      lb_policy: ROUND_ROBIN

      # Wrap upstream connection with PROXY Protocol v2
      # Feersum will:
      #   - Set REMOTE_ADDR to real client IP
      #   - Set psgi.url_scheme to "https" (via dst_port=443)
      transport_socket:
        name: envoy.transport_sockets.upstream_proxy_protocol
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport
          config:
            version: V2
          transport_socket:
            name: envoy.transport_sockets.raw_buffer
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer

      load_assignment:
        cluster_name: feersum_proxy_protocol
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: 127.0.0.1
                      port_value: 5000
              # Add more for load balancing:
              # - endpoint:
              #     address:
              #       socket_address:
              #         address: 127.0.0.1
              #         port_value: 5001

      # Health check (TCP connect)
      health_checks:
        - timeout: 5s
          interval: 10s
          unhealthy_threshold: 3
          healthy_threshold: 2
          tcp_health_check: {}

    #-------------------------------------------------------------------------
    # Plain TCP backend (no PROXY Protocol)
    #-------------------------------------------------------------------------
    - name: feersum_tcp
      type: STATIC
      connect_timeout: 5s
      lb_policy: ROUND_ROBIN

      load_assignment:
        cluster_name: feersum_tcp
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    socket_address:
                      address: 127.0.0.1
                      port_value: 5000

    #-------------------------------------------------------------------------
    # Unix socket backend with PROXY Protocol v2
    #-------------------------------------------------------------------------
    - name: feersum_unix_proxy_protocol
      type: STATIC
      connect_timeout: 5s
      lb_policy: ROUND_ROBIN

      transport_socket:
        name: envoy.transport_sockets.upstream_proxy_protocol
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.transport_sockets.proxy_protocol.v3.ProxyProtocolUpstreamTransport
          config:
            version: V2
          transport_socket:
            name: envoy.transport_sockets.raw_buffer
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.transport_sockets.raw_buffer.v3.RawBuffer

      load_assignment:
        cluster_name: feersum_unix_proxy_protocol
        endpoints:
          - lb_endpoints:
              - endpoint:
                  address:
                    pipe:
                      path: /tmp/feersum.sock

admin:
  address:
    socket_address:
      address: 127.0.0.1
      port_value: 9901



( run in 1.322 second using v1.01-cache-2.11-cpan-16aabcbfbcb )