Skip to content

Conversation

@japerezjr
Copy link
Contributor

…ities

This feature adds comprehensive multi-gateway support to the Envoy Gateway setup script, enabling flexible deployments that can separate external and internal services with appropriate security configurations.

Features:

  • Configuration file mode (--config) for YAML-based multi-gateway setup
  • Namespace isolation for each gateway (improved security and organization)
  • Hybrid gateway support (external-only, internal-only, or both)
  • Flexible certificate management (Let's Encrypt or self-signed per gateway)
  • Route and listener processing for multiple gateways
  • Support for multiple MetalLB pools per gateway
  • Internal gateways accessible on port 443 (same as external)
  • Backward compatibility with legacy single gateway mode

Configuration Format:
The new --config option accepts YAML files defining multiple gateways:
gateways:
- name: external-gateway namespace: external-gateway domain: cloud.example.com type: [external] metallb_pools: external: gateway-api-external issuer: type: letsencrypt email: [email protected] routes: - keystone - nova - neutron

Key Improvements:

  • Each gateway runs in its own namespace for better isolation
  • Routes are automatically created for each gateway type
  • Listeners are applied to all gateways
  • Support for multiple DNS providers (Cloudflare, Route53, Azure DNS, etc.)
  • Comprehensive error handling and validation

Files Added:

  • examples/gateway-config.yaml: Comprehensive example configuration
  • examples/simple-gateway-config.yaml: Simple setup example
  • docs/gateway-setup.md: Complete usage documentation

Files Modified:

  • bin/setup-envoy-gateway.sh: Enhanced with multi-gateway support

Backward Compatibility:

  • Legacy single gateway mode still works unchanged
  • Existing --email, --domain, --challenge options preserved
  • Interactive mode still available
  • All DNS plugins supported in both modes

…ities

This feature adds comprehensive multi-gateway support to the Envoy Gateway setup script,
enabling flexible deployments that can separate external and internal services with
appropriate security configurations.

Features:
- Configuration file mode (--config) for YAML-based multi-gateway setup
- Namespace isolation for each gateway (improved security and organization)
- Hybrid gateway support (external-only, internal-only, or both)
- Flexible certificate management (Let's Encrypt or self-signed per gateway)
- Route and listener processing for multiple gateways
- Support for multiple MetalLB pools per gateway
- Internal gateways accessible on port 443 (same as external)
- Backward compatibility with legacy single gateway mode

Configuration Format:
The new --config option accepts YAML files defining multiple gateways:
  gateways:
    - name: external-gateway
      namespace: external-gateway
      domain: cloud.example.com
      type: [external]
      metallb_pools:
        external: gateway-api-external
      issuer:
        type: letsencrypt
        email: [email protected]
      routes:
        - keystone
        - nova
        - neutron

Key Improvements:
- Each gateway runs in its own namespace for better isolation
- Routes are automatically created for each gateway type
- Listeners are applied to all gateways
- Support for multiple DNS providers (Cloudflare, Route53, Azure DNS, etc.)
- Comprehensive error handling and validation

Files Added:
- examples/gateway-config.yaml: Comprehensive example configuration
- examples/simple-gateway-config.yaml: Simple setup example
- docs/gateway-setup.md: Complete usage documentation

Files Modified:
- bin/setup-envoy-gateway.sh: Enhanced with multi-gateway support

Backward Compatibility:
- Legacy single gateway mode still works unchanged
- Existing --email, --domain, --challenge options preserved
- Interactive mode still available
- All DNS plugins supported in both modes
@japerezjr japerezjr marked this pull request as draft November 21, 2025 06:22
@japerezjr
Copy link
Contributor Author

I've done all the testing I can. I need some help testing the different challenge modes. Also, I need to figure out how we want to create the "internal" ipaddresspools and l2advertisemnets for metallb. Right now we have to manually create that if we try to deploy with an internal httproute.
Naming could probably still use some work.

@rackerchris
Copy link
Contributor

checks failing. please fix and resubmit your pr

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add --- to beginning of file.

namespace: envoy-gateway
sectionName: longhorn-https
rules:
- backendRefs:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

incorrect indentation. You will need to run this pr through yamllint and correct any errors/warnings.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants