juju deploy nginx-ingress-integrator
Ingress in the Kubernetes context is defined as “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.”
As mentioned in The Future of Charmed Operators on Kubernetes there’s a new approach to charming, that’s been available in preview since Juju 2.9-rc7, where the workload container and the charm run in the same pod. Because we’re no longer using
pod-spec-set to configure our workloads, we needed a way to be able to configure an ingress resource to make our workload reachable from outside the k8s cluster.
To do this, we’ve created this nginx-ingress-integrator charm. The charm can be configured via a relation (see this page for details on the ingress library as an easy method of integrating Operator Framework charms with it), or via
juju config directly.
The reason for offering both relation and direct
juju config support is that providing the relation means charm authors can make the experience better for end users by implementing the relation, but if a charm doesn’t yet implement the relation it can still be used with this charm and configured manually.
The charm supports the following via the relation:
- Rate limiting (with a whitelist for exclusions by CIDRs)
- Setting maximum allowed body size for file uploads
- Configuring retrying of errors against the next server
- A session cookie to use for cookie-based session affinity, and the age of that cookie
- The TLS certificate to use for your service if applicable
All of these options can also be configured at deploy time. In addition there’s also an
ingress-class option to use, in the case that your cluster has multiple ingress controllers. This allows you to target the correct one.
Help us improve this documentation
Most of this documentation can be collaboratively discussed and changed on the respective topic in the doc category of the Charmhub forum. See the documentation guidelines if you’d like to contribute.
Last updated 17 days ago. Help improve this document in the forum.