Use a Custom Service for External Access
By default, the Helm chart deploys a NodePort Service to provide external access to the Redpanda cluster. To use a custom Service, set external.service.enabled
to false
. Then, you can create your own Services to provide external access.
-
Operator
-
Helm
redpanda-cluster.yaml
apiVersion: cluster.redpanda.com/v1alpha2
kind: Redpanda
metadata:
name: redpanda
spec:
chartRef: {}
clusterSpec:
external:
enabled: true
service:
enabled: false
addresses:
- <subdomain-or-ip-address-for-replica-0>
- <subdomain-or-ip-address-for-replica-1>
- <subdomain-or-ip-address-for-replica-2>
kubectl apply -f redpanda-cluster.yaml --namespace <namespace>
-
--values
-
--set
disable-external-service.yaml
external:
enabled: true
service:
enabled: false
addresses:
- <subdomain-or-ip-address-for-replica-0>
- <subdomain-or-ip-address-for-replica-1>
- <subdomain-or-ip-address-for-replica-2>
helm upgrade --install redpanda redpanda/redpanda --namespace <namespace> --create-namespace \
--values disable-external-service.yaml --reuse-values
helm upgrade --install redpanda redpanda/redpanda --namespace <namespace> --create-namespace \
--set external.enabled=true \
--set external.service.enabled=false \
--set "external.addresses={<subdomain-or-ip-address-for-replica-0>,<subdomain-or-ip-address-for-replica-1>,<subdomain-or-ip-address-for-replica-2>}"
Make sure to configure external.addresses
with addresses that point to the worker nodes on which each Redpanda broker is running. The addresses must be listed in order of the StatefulSet replicas. For example, the first address in the list is assigned to the first replica (redpanda-0
by default).
If you use a custom domain (external.domain
), provide subdomains for each replica in external.addresses
. This custom domain is appended to each subdomain (<subdomain-for-replica-0>.<custom-domain>
).
Make sure that your custom Service listens on the advertised ports that are configured for each listener. See Configure Listeners in Kubernetes.