Establish external routing on the RedisEnterpriseCluster
| Redis Enterprise for Kubernetes | 
|---|
An Ingress is an API resource that provides a standardized and flexible way to manage external access to services running within a Kubernetes cluster.
Install Ingress controller
Redis Enterprise for Kubernetes supports the Ingress controllers below:
OpenShift users can use routes instead of an Ingress.
Install your chosen Ingress controller, making sure ssl-passthrough is enabled. ssl-passthrough is turned off by default for NGINX but enabled by default for HAProxy.
Configure DNS
- 
Choose the hostname (FQDN) you will use to access your database according to the recommended naming conventions below, replacing
<placeholders>with your own values.REC API hostname:
api-<rec-name>-<rec-namespace>.<subdomain>REAADB hostname:-db-<rec-name>-<rec-namespace>.<subdomain>We recommend using a wildcard (
*) in place of the database name, followed by the hostname suffix. - 
Retrieve the
EXTERNAL-IPof your Ingress controller'sLoadBalancerservice.$ kubectl get svc <haproxy-ingress | ingress-ngnix-controller> \ -n <ingress-ctrl-namespace>Below is example output for an HAProxy ingress controller running on a K8s cluster hosted by AWS.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE haproxy-ingress LoadBalancer 10.43.62.53 a56e24df8c6173b79a63d5da54fd9cff-676486416.us-east-1.elb.amazonaws.com 80:30610/TCP,443:31597/TCP 21m - 
Create DNS records to resolve your chosen REC API hostname and database hostname to the
EXTERNAL-IPfound in the previous step. 
Edit the REC spec
Edit the RedisEnterpriseCluster (REC) spec to add the ingressOrRouteSpec field, replacing <placeholders> below with your own values.
NGINX or HAproxy ingress controllers
- Define the REC API hostname (
apiFqdnUrl) and database hostname suffix (dbFqdnSuffix) you chose when configuring DNS. - Set 
methodtoingress. - Set 
ssl-passthroughto "true". - Add any additional annotations required for your ingress controller. See NGINX docs or HAproxy docs for more information.
 
kubectl patch rec  <rec-name> --type merge --patch "{\"spec\": \
    {\"ingressOrRouteSpec\": \
      {\"apiFqdnUrl\": \"api-<rec-name>-<rec-namespace>.example.com\", \
      \"dbFqdnSuffix\": \"-db-<rec-name>-<rec-namespace>.example.com\", \
      \"ingressAnnotations\": \
       {\"<kubernetes | github>.io/ingress.class\": \
       \"<ingress-controller>\", \
       \"<ingress-controller-annotation>/ssl-passthrough\": \ \"true\"}, \
      \"method\": \"ingress\"}}}"
OpenShift routes
- Define the REC API hostname (
apiFqdnUrl) and database hostname suffix (dbFqdnSuffix) you chose when configuring DNS. - Set 
methodtoopenShiftRoute. 
kubectl patch rec <rec-name> --type merge --patch "{\"spec\": \
     {\"ingressOrRouteSpec\": \
     {\"apiFqdnUrl\": \"api-<rec-name>-<rec-namespace>.example.com\" \ 
     \"dbFqdnSuffix\": \"-db-<rec-name>-<rec-namespace>.example.com\", \
     \"method\": \"openShiftRoute\"}}}"
OpenShift routes do not require any ingressAnnotations in the ingressOrRouteSpec.