Expose AntFlow over HTTPS¶
Installation with Helm uses local port-forwarding. For shared
access, expose AntFlow through either Ingress or Gateway API HTTPRoutes. The
examples below use one hostname, routing / to the UI and /api/ to the server.
Choose one exposure method rather than enabling both.
The YAML blocks are deployment templates. Replace antflow.example.com with
your chosen hostname and use your controller, Gateway, and TLS Secret names.
Unlike shell commands, these blocks do not expand environment variables.
Prerequisites¶
Before applying either example:
- Create a DNS record pointing your AntFlow hostname to the controller's address.
- Provision a TLS certificate covering that hostname. The chart does not issue certificates; use your certificate-management tooling.
- Register
https://antflow.example.com/as an allowed redirect URI in the identity provider, replacing the example domain with yours. For Keycloak, also allowhttps://antflow.example.comas a web origin. See Authentication.
Ingress¶
Install an Ingress controller and identify its IngressClass. Create the TLS
Secret in the antflow namespace, then add these values to your deployment's
values file:
global:
domain: antflow.example.com
server:
ingress:
enabled: true
className: "<ingress-class>"
tls: true
tlsSecretName: antflow-tls
ui:
ingress:
enabled: true
className: "<ingress-class>"
tls: true
tlsSecretName: antflow-tls
The chart's default paths are /api/ for the server and / for the UI. Keep
those paths intact; do not add a rewrite that strips the server's API prefix.
Gateway API HTTPRoutes¶
Install the Gateway API CRDs and a compatible controller. Use an existing
Gateway with an HTTPS listener named https, a valid TLS certificate, and
permission to accept routes from the antflow namespace.
For a Gateway named shared-gateway in the gateway-system namespace:
global:
domain: antflow.example.com
server:
httproute:
enabled: true
parentRefs:
- name: shared-gateway
namespace: gateway-system
sectionName: https
ui:
httproute:
enabled: true
parentRefs:
- name: shared-gateway
namespace: gateway-system
sectionName: https
The chart creates the routes, not the Gateway. Configure TLS on the Gateway's
HTTPS listener; normally its certificate Secret belongs in the Gateway's
namespace. Check the controller's documentation for certificate-reference rules.
The Gateway listener's allowedRoutes must permit the AntFlow namespace.
Optional ListenerSet¶
If the controller supports ListenerSet and its CRD is installed, the chart can
create a dedicated HTTPS listener attached to an existing Gateway. Use this
instead of the explicit route parentRefs above:
global:
domain: antflow.example.com
listenerset:
enabled: true
parentRef:
name: shared-gateway
namespace: gateway-system
tls:
secretName: antflow-tls
server:
httproute:
enabled: true
ui:
httproute:
enabled: true
Create antflow-tls in the antflow namespace. The chart creates a ListenerSet
with an HTTPS listener named https and attaches both HTTPRoutes to it. The
parent Gateway must permit the ListenerSet attachment; follow the controller's
configuration requirements. No Gateway or certificate is created by the chart.
Apply and verify¶
After adding the chosen exposure settings to your existing values file:
helm upgrade antflow \
oci://registry.gitlab.com/csgroup-oss/antflow/antflow/charts/antflow \
--namespace antflow \
--values antflow-values.yaml
For Ingress, check the controller-assigned address:
For Gateway API, check that both routes have Accepted=True and
ResolvedRefs=True for their intended parent:
Open your configured HTTPS UI URL and sign in. With the shared-host paths above,
the API base URL is the same origin followed by /api. Follow
Access the API to configure that URL and check
connectivity and authentication. Verify the certificate is trusted and the
browser reports no CORS errors. If the UI and API use different origins, follow
Configure cross-origin access.
Browser API endpoint¶
The Helm chart derives SERVER_CONFIG.apiUrl in the browser's
config.js from the server exposure settings. When the server is exposed through
ingress or HTTPRoute, it uses the server's public base URL. Otherwise it uses
http://localhost:8000 for local port-forward access.
The chart does not expose a ui.apiUrl override. The UI also defines
SERVER_CONFIG.apiPrefix, but the Helm chart does not expose a corresponding
value. An additional configs.apiPrefix value will not appear in the generated
configuration.
Browser configuration is public: do not put credentials or secrets in it. Endpoint changes do not require rebuilding the UI image.
For all exposure settings and alternative topologies, see the Helm chart reference.