Issue
-
I have deployed CloudBees CI in EKS with
.OperationsCenter.platform="eks"
and using the AWS Load Balancer Ingress Controller -
I cannot access the controller at
https/<hostname>/<controllerName>/
but not athttps/<hostname>/<controllerName>
Environment
-
CloudBees CI (CloudBees Core) on Modern Cloud Platforms < 2.277.4.2
-
AWS Load Balancer Controller < 2.2.0
-
Master Provisioning Plugin < 2.5.28
Related Issues
-
BEE-382: Update controller-provisioning-plugin to support Ingress in networking.k8s.io/v1
Explanation
Until version 1.19 of Kubernetes, Controller Ingress rules are implementation specific and using 2 rules /<controllerName>/
and /<controllerName>/*
. The Ingress Nginx Controller matches /<controllerName>
based on those rules. However, the AWS Load Balancer controller does not. Improvement in Kubernetes 1.19, CloudBees CI 2.277.4.2 and AWS Load Balancer Ingress Controller 2.2.0 fixes those discrepancies and provide an API in which the path matching can be specified:
This is the right way forward and improvements to CloudBees CI and ALB Load Balancer Controller have been introduced to support this:
-
Starting from version 2.277.4.2 of CloudBees CI, Controller ingresses are using the
networking.k8s.io/v1
if supported by the cluster. Using a single rule on/<controllerName>/
withPrefix
as thepathType
. -
Starting from version 2.2.0 of AWS Load Balancer Controller, the
pathType
valuePrefix
is supported and will create a rule for “`/<controllerName>OR
/<controllerName>/*`”