Best way to separate kubernetes ingress controllers for different environments in single cluster

We currently host environments (dev, test etc.) as separate namespaces within a single cluster. Each environment has its own kong installation. We’re moving to use the Ingress controller but it obviously picks up kubernetes events for all namespaces. Are ingress classes the best way to separate Kong installations and rules for each environment? For example:

kubernetes.io/ingress.class: kong-dev

Also when installing second instance of Kong with ingressController.enabled=true in a different namespace (via stable helm chart), it fails with:

"kongconsumers.configuration.konghq.com" already exists

Setting the undocumented flag ingressController.installCRDs=false for subsequent environments works around the problem, but one environment’s Kong release still has to “own” the CRDs. Ideally there would be an option to install only the CRDs as a separate helm release so that this can be done once in the cluster.

Glad that the installCRDs flag solves the problem.

but one environment’s Kong release still has to “own” the CRDs. Ideally there would be an option to install only the CRDs as a separate helm release so that this can be done once in the cluster.

I think this is a fair assessment and I can understand how this helps regular operations.
You can have a simpler Helm chart yourself to solve this issue, maintenance burden for the helm chart that you maintain for only installing the CRD should be negligible.

PR welcome as well!

1 Like