ingress¶
Ingress is an API object that manages external access to the services in a cluster, typically HTTP.
Ingress may provide load balancing, SSL termination and name-based virtual hosting. In short, Ingress is a way to map your application to publicly available domain name.
ingress
value in Kubedeploy allows you to control parameters for Ingress object that would be created by the chart.
Note
By default ingress
is disabled.
Available values for ingress
in Kubedeploy:
ingress:
enabled: false # (1)
className: "haproxy" # (2)
pathType: ImplementationSpecific # (3)
withSSL: true # (4)
svcPort: "" # (5)
annotations: # (6)
cert-manager.io/cluster-issuer: letsencrypt
hosts: # (7)
- host: "" # (8)
paths: [] # (9)
tls: [] # (10)
- Enable Ingres object
- Ingress class name. In case you have multiple Ingress controllers you can specifically target desired one. Defaults to "haproxy"
- Default Ingress pathType
- (Feature state: 1.1.0) Deploy Ingress object with SSL support. Automatically configures the Ingress
tls
spec. - (Feature state: 1.1.0) Define default Service port that will be targeted by Ingress. If left undefined Ingress will use first port from
service.ports
(or first port fromports
) to route traffic to. - Additional Ingress annotations, can be used to define custom Ingress controller configuration. By default, it sets the cert-manager annotation to use
letsencrypt
cluster-issuer for issuing SSL certificates for configured ingress domain. - (list) Ingress host list.
- (string, required) Define Ingress hostname
-
(list, optional) Ingress host paths. example usage: (Feature state: 1.1.0)
-
(list, optional) Ingress TLS list. overrides any auto configured tls config created by withSSL.
Allows for custom secretName and host list to be defined. In case when you have pre-configured SSL stored in Kubernetes Secret. If secret does not exist, new one will be created by cert-manager.
example usage:
ingress
values might look overwhelming at first. However, it should be fairly simple to expose your app on custom domain.
Simple ingress object
values.yaml | |
---|---|
As a result of the above configuration, Ingress object is created using haproxy
ingressClass. tls
section is automatically configured enabling SSL coverage for your domain. letsencrypt
cluster issuer provided by cert-manager will be used to issue valid SSL certificate. And finally, all traffic for my-domain.com
is routed to our Service objects port 80.
A more complex example, would be application with frontend and backend service ports. For that we will use additional containers. Our additional container will expose static frontend for our website, and our main container will expose backend API that will respond on /api path.
We will also configure our ingress
to use custom SSL certificate installed as extraSecret
.
Complex ingress object
If you require more than one Ingress object per deployment, for example targeting different ingressClasses, please see extraIngress configuration options
See also: