What I want to do is have a service in the default
namespace and ingresses in my other namespaces, which point to that service. I tried implementing the service and Ingress shown below, but it didn't work.
kind: Service
apiVersion: v1
metadata:
name: serviceX
namespace: default
spec:
type: ExternalName
externalName: serviceX.default.svc.cluster.local
ports:
- port: 123
kind: Ingress
apiVersion: extensions/v1beta1
metadata:
name: web-ingress-test-vpndev
namespace: my-namespace
spec:
tls:
- hosts:
- abc.my-namespace.domain.com
secretName: tls-secret-my-namespace
rules:
- http:
paths:
- path: "/"
backend:
serviceName: serviceX
servicePort: 123
status:
loadBalancer:
ingress: {}
I know that I could implement the service in every namespace, but I was wondering if it's possible to have a single service. If I try to type the externalName
of the service in the backend->serviceName
handler of the ingress, I get and error saying that the name of the service can only contain numbers, letter and '-'.
A couple of things to notice about those ingress rules: They are deployed in the same namespace as the service they point to. They use URL-based routing.
The Ingress rules, however, must reside in the namespace where the app that they configure reside.
Yes you can multiple ingress backed by single ingress controller nginx, or else you can multiple ingress controller also as per required you can configure.
The Ingress Controller handles configuration resources created in any namespace of the cluster. As NGINX is a high-performance load balancer capable of serving many applications at the same time, this option is used by default in our installation manifests and Helm chart. Single-namespace Ingress Controller.
I don't think this is possible and also don't think it's a good idea. Ingress is not a cluster level resource. Each namespace should have its own instance.
I would have to say that this isnt a good way. as all of ingress in different NS would be convert to Nginx Rule and take effect in ingress-controller pod.
And if you take a look the Nginx Rule(nginx.conf
in ingress-controller pod), you will see each block of location
in nginx.conf
has variable set $namespace "****";
which means the ingress has been isolated by NS
Also, if you still want to implement your idea, might need to modify the ingress-contoller.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With