Establish external routing on the RedisEnterpriseCluster
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-IP
of your Ingress controller’sLoadBalancer
service.$ 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-IP
found 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
method
toingress
. - Set
ssl-passthrough
to “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
method
toopenShiftRoute
.
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
.