You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
cert-manager is started without --enable-gateway-api=true when gateway is enabled on platform and tenant level #3725
Describe the bug
When gateway api is enabled on platform and tenant level, the cert-manager is not started with --enable-gateway-api=true, causing the acme http challenge process failed.
Environment
Cozystack version: v1.6.1
Provider: on-prem
To Reproduce
Steps to reproduce the behavior:
Freshly install cozystack v1.6.1
setup and configure the platform as documentation mentioned, but keep .spec.ingress: false in tenant-root
enable gateway on platform level and tenant level as documentation mentioned.
wait for all gateway related resources reconciled.
check the certs for dashboard and bucket-cozy-backups-ui.
Expected behaviour
The acme challenge should complete successfully and the certificates become valid.
Actual behaviour
The certificates never become valid.
Logs
E0809 03:21:03.651853 1 controller.go:155] "re-queuing item due to error processing" err="couldn't Present challenge tenant-root/cozystack-xxxxxx-655084b1-tls-1-3139820371-2206439728: gateway api is not enabled" logger="cert-manager.controller"
This looks like a valid bug. The cert-manager deployment in Cozystack (v1.20.2) does not explicitly enable Gateway API support — featureGates is set to an empty string and config is {}, so neither --enable-gateway-api nor enableGatewayAPI in the controller config is being passed [1][2]. There are also no overrides in the wrapper chart's values.yaml[3].
The error you're seeing — gateway api is not enabled — confirms cert-manager doesn't know it should use Gateway API HTTPRoutes for the HTTP-01 ACME challenge solver.
The fix would be to set enableGatewayAPI: true in cert-manager's controller configuration. In Cozystack's chart structure, this would go in packages/system/cert-manager/values.yaml under the cert-manager key, something like:
This config gets rendered into a ConfigMap and mounted into the controller via --config[4][5].
Ideally this should be conditionally enabled based on whether gateway.enabled: true is set in the platform values, since the Gateway API CRDs may not be present when gateway is disabled.
Confirmed, and the two halves of this already disagree in the tree.
packages/system/cert-manager-issuers/templates/cluster-issuers.yaml renders http01.gatewayHTTPRoute with a parentRef to the cozystack Gateway whenever gateway-enabled is true, so the ClusterIssuer does ask for the Gateway solver. The controller then refuses it, because packages/system/cert-manager/values.yaml sets no config block and --enable-gateway-api is off by default. That produces the couldn't Present challenge ...: gateway api is not enabled line on every challenge for as long as the Gateway is enabled.
Enabling it unconditionally is safe. The controller only needs the Gateway API CRDs to exist at startup, and cozystack.cert-manager already declares dependsOn: cozystack.gateway-api-crds in the platform sources, so they land first in every variant that ships cert-manager.
Correction to my note above: the config block must not become a default of system/cert-manager. The same chart is installed into tenant Kubernetes clusters, where the Gateway API CRDs are an opt-in addon, and cert-manager v1.20 fails to start when the flag is on and the CRDs are missing (buildClients in pkg/controller/context.go returns an error on purpose). #4039 threads the flag from the platform bundle into the host cert-manager instead, the same way the tenant addon already does it under addons.gatewayAPI.enabled.
Activity
dosubot commentedon Aug 10, 2026
This looks like a valid bug. The cert-manager deployment in Cozystack (v1.20.2) does not explicitly enable Gateway API support —
featureGatesis set to an empty string andconfigis{}, so neither--enable-gateway-apinorenableGatewayAPIin the controller config is being passed [1] [2]. There are also no overrides in the wrapper chart'svalues.yaml[3].The error you're seeing —
gateway api is not enabled— confirms cert-manager doesn't know it should use Gateway API HTTPRoutes for the HTTP-01 ACME challenge solver.The fix would be to set
enableGatewayAPI: truein cert-manager's controller configuration. In Cozystack's chart structure, this would go inpackages/system/cert-manager/values.yamlunder thecert-managerkey, something like:This config gets rendered into a ConfigMap and mounted into the controller via
--config[4] [5].Ideally this should be conditionally enabled based on whether
gateway.enabled: trueis set in the platform values, since the Gateway API CRDs may not be present when gateway is disabled.To reply, just mention @dosu.
Share context across your team and agents. Try Dosu.
lexfrei commentedon Aug 14, 2026
Confirmed, and the two halves of this already disagree in the tree.
packages/system/cert-manager-issuers/templates/cluster-issuers.yamlrendershttp01.gatewayHTTPRoutewith a parentRef to thecozystackGateway whenevergateway-enabledis true, so the ClusterIssuer does ask for the Gateway solver. The controller then refuses it, becausepackages/system/cert-manager/values.yamlsets noconfigblock and--enable-gateway-apiis off by default. That produces thecouldn't Present challenge ...: gateway api is not enabledline on every challenge for as long as the Gateway is enabled.The fix is small:
Enabling it unconditionally is safe. The controller only needs the Gateway API CRDs to exist at startup, and
cozystack.cert-manageralready declaresdependsOn: cozystack.gateway-api-crdsin the platform sources, so they land first in every variant that ships cert-manager.lexfrei commentedon Sep 2, 2026
Correction to my note above: the config block must not become a default of system/cert-manager. The same chart is installed into tenant Kubernetes clusters, where the Gateway API CRDs are an opt-in addon, and cert-manager v1.20 fails to start when the flag is on and the CRDs are missing (buildClients in pkg/controller/context.go returns an error on purpose). #4039 threads the flag from the platform bundle into the host cert-manager instead, the same way the tenant addon already does it under addons.gatewayAPI.enabled.
fix(cert-manager): enable the Gateway API solver in the host cert-man…