// Module included in the following assemblies:
//
// * operators/operator-reference.adoc

[id="ingress-operator_{context}"]
= Ingress Operator

[discrete]
== Purpose

The Ingress Operator configures and manages the {product-title} router.

[discrete]
== Project

link:https://github.com/openshift/cluster-ingress-operator[openshift-ingress-operator]

[discrete]
== CRDs

* clusteringresses.ingress.openshift.io
** Scope: Namespaced
** CR: clusteringresses
** Validation: No

[discrete]
== Configuration objects

* Cluster config
** Type Name: clusteringresses.ingress.openshift.io
** Instance Name: default
** View Command:
+
[source,terminal]
----
$ oc get clusteringresses.ingress.openshift.io -n openshift-ingress-operator default -o yaml
----

[discrete]
== Notes

The Ingress Operator sets up the router in the `openshift-ingress` project and
creates the deployment for the router:

[source,terminal]
----
$ oc get deployment -n openshift-ingress
----

The Ingress Operator uses the `clusterNetwork[].cidr` from the network/cluster
status to determine what mode (IPv4, IPv6, or dual stack) the managed ingress
controller (router) should operate in. For example, if `clusterNetwork` contains
only a v6 `cidr`, then the ingress controller will operate in v6-only mode. In
the following example, ingress controllers managed by the Ingress Operator will
run in v4-only mode because only one cluster network exists and the network is a
v4 `cidr`:

[source,terminal]
----
$ oc get network/cluster -o jsonpath='{.status.clusterNetwork[*]}'
----

.Example output
[source,terminal]
----
map[cidr:10.128.0.0/14 hostPrefix:23]
----
