원클릭으로
eg-api-gateway
Set up Envoy Gateway as an API gateway with authentication, rate limiting, and backend resilience
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Set up Envoy Gateway as an API gateway with authentication, rate limiting, and backend resilience
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Configure client-facing traffic policies -- timeouts, connection limits, TLS settings, HTTP behavior
Production-grade Envoy Gateway setup with comprehensive security, observability, high availability, and operational best practices
Integrate Envoy Gateway with Istio ambient mesh or Cilium for unified ingress and service mesh
Envoy Gateway version information, compatibility matrix, and upgrade readiness checks
Envoy AI Gateway contribution orchestrator — interviews you about your contribution and guides you through the correct workflow using contributor skills
Envoy Gateway contribution orchestrator — interviews you about your contribution and guides you through the correct workflow using contributor skills
| name | eg-api-gateway |
| description | Set up Envoy Gateway as an API gateway with authentication, rate limiting, and backend resilience |
You set up Envoy Gateway as a production API gateway -- protecting backend APIs with authentication, rate limiting, and backend resilience. This is the right setup for teams that need to expose APIs to external consumers or frontend clients with proper access control and traffic management.
Ask these questions before generating configuration. Skip any that the user or the orchestrator has already answered.
API hostname: What is your API base URL? (e.g., api.example.com)
API services: How many API services or versions do you need to route?
/v1/users -> user-service:8080, /v1/orders -> order-service:8080Authentication: What authentication method do you need?
https://auth.example.com/.well-known/jwks.json)Rate limiting: Do you need per-client rate limiting?
sub or client_id, source IP)Request transformation: Do you need request or response transformation?
X-Request-ID, X-Client-ID from JWT claims)/api prefix before forwarding)Server header)Traffic volume: What is your expected traffic volume?
API versioning: Do you need canary or weighted routing for API versions?
/v2/* traffic to a new backend for testingExecute these phases in order. Each phase builds on the previous one and uses specific skills to generate resources.
Skills: /eg-install, /eg-gateway, /eg-tls
Set up the foundation:
Skill: /eg-route
Create HTTPRoute resources for each API service:
/v1/users, /v1/orders)/v1/* and /v2/*Order rules from most specific to least specific. The Gateway API evaluates rules by specificity, but explicit ordering improves readability.
Skill: /eg-auth
Create SecurityPolicy resources for API authentication:
sub, scope, or client_id) into request headers so backend services can use them for authorization.X-API-Key) or a query parameter.For APIs with mixed authentication needs, attach different SecurityPolicies to different HTTPRoutes:
Skill: /eg-rate-limit
Create rate limiting configuration based on the user's requirements:
Local rate limits (no Redis required): Create a BackendTrafficPolicy with local rate limit rules. These are per-Envoy-replica, so actual limits scale with the number of replicas.
Global rate limits (requires Redis): Configure global rate limiting with a Redis backend for consistent limits across all Envoy replicas. This requires:
Rate limit by the key the user specified:
x-api-key header valuex-jwt-claim-client-id)remote_addressInclude X-RateLimit-Limit and X-RateLimit-Remaining response headers so API consumers can track their usage.
Skill: /eg-backend-policy
Create BackendTrafficPolicy resources for each critical backend:
Skills: /eg-client-policy, /eg-observability
Configure client-facing policies for API traffic:
Set up observability:
After generating all manifests, provide curl commands to verify each layer:
# Get the Gateway address
export GATEWAY_HOST=$(kubectl get gateway/eg -o jsonpath='{.status.addresses[0].value}')
export API_HOST="<api-hostname>"
# 1. Verify Gateway is programmed
kubectl get gateway eg -o wide
# 2. Verify all routes are accepted
kubectl get httproute -A
kubectl get backendtrafficpolicy -A
kubectl get securitypolicy -A
# 3. Test unauthenticated request (should be rejected)
curl -v https://$API_HOST/v1/users \
--resolve "$API_HOST:443:$GATEWAY_HOST"
# Expected: 401 Unauthorized
# 4. Test authenticated request
curl -v https://$API_HOST/v1/users \
-H "Authorization: Bearer <valid-jwt-token>" \
--resolve "$API_HOST:443:$GATEWAY_HOST"
# Expected: 200 OK with response from user-service
# 5. Test rate limiting (send requests in a loop)
for i in $(seq 1 20); do
curl -s -o /dev/null -w "%{http_code} " \
https://$API_HOST/v1/users \
-H "Authorization: Bearer <valid-jwt-token>" \
--resolve "$API_HOST:443:$GATEWAY_HOST"
done
echo
# Expected: 200s followed by 429 Too Many Requests when limit is hit
# 6. Check rate limit headers
curl -v https://$API_HOST/v1/users \
-H "Authorization: Bearer <valid-jwt-token>" \
--resolve "$API_HOST:443:$GATEWAY_HOST" 2>&1 | grep -i x-ratelimit
# Expected: X-RateLimit-Limit and X-RateLimit-Remaining headers
# 7. Verify backend health checks
kubectl get backendtrafficpolicy -A -o yaml | grep -A5 healthCheck
# 8. Check access logs
kubectl logs -n envoy-gateway-system -l gateway.envoyproxy.io/owning-gateway-name=eg -c envoy --tail=20
Replace <api-hostname> and <valid-jwt-token> with actual values in the output.
failure_mode_deny: false (fail open) if API availability is more important than strict rate enforcement, or failure_mode_deny: true (fail closed) if rate enforcement is critical.x-jwt-claim-sub) so backend services can use them without re-validating the token.