{"id":18637070,"url":"https://github.com/openshift/cluster-ingress-operator","last_synced_at":"2025-05-15T19:04:03.292Z","repository":{"id":37445148,"uuid":"145020700","full_name":"openshift/cluster-ingress-operator","owner":"openshift","description":"The Cluster Ingress Operator manages highly available network ingress for OpenShift","archived":false,"fork":false,"pushed_at":"2025-03-30T17:26:52.000Z","size":115736,"stargazers_count":78,"open_issues_count":18,"forks_count":196,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-01T00:33:59.405Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openshift.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-16T17:40:37.000Z","updated_at":"2025-03-30T15:25:18.000Z","dependencies_parsed_at":"2023-10-16T12:11:50.692Z","dependency_job_id":"998e39d7-cf7b-47e4-81c1-ad8d77559727","html_url":"https://github.com/openshift/cluster-ingress-operator","commit_stats":{"total_commits":1171,"total_committers":90,"mean_commits":"13.011111111111111","dds":0.6917164816396242,"last_synced_commit":"8be174945db79b0660bd0fd21ed279ab7b6aafbf"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcluster-ingress-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcluster-ingress-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcluster-ingress-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openshift%2Fcluster-ingress-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openshift","download_url":"https://codeload.github.com/openshift/cluster-ingress-operator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247761042,"owners_count":20991531,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-07T05:33:05.482Z","updated_at":"2025-04-08T01:35:10.057Z","avatar_url":"https://github.com/openshift.png","language":"Go","readme":"# OpenShift Ingress Operator\n\nIngress Operator is an [OpenShift](https://www.openshift.com) component which enables external access to cluster services by configuring Ingress Controllers, which route traffic as specified by OpenShift [Route](https://docs.openshift.com/container-platform/3.11/architecture/networking/routes.html) and Kubernetes [Ingress](https://kubernetes.io/docs/concepts/services-networking/ingress/) resources.\n\nTo provide this functionality, Ingress Operator deploys and manages an\n[OpenShift router](https://github.com/openshift/router) — a\n[HAProxy-based](https://www.haproxy.com) Kubernetes [ingress\ncontroller](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers).\n\nIngress Operator implements the OpenShift [ingresscontroller API](https://github.com/openshift/api/blob/master/operator/v1/types_ingress.go).\n\n## Installing\n\nIngress Operator is a core feature of OpenShift and is enabled out of the box.\n\nEvery new [OpenShift installation](https://github.com/openshift/installer)\n has an `ingresscontroller` named `default` which can be customized,\nreplaced, or supplemented with additional ingress controllers. To view the\ndefault ingress controller, use the `oc` command:\n\n```shell\n$ oc describe --namespace=openshift-ingress-operator ingresscontroller/default\n```\n\n## Managing\n\nCreate and edit `ingresscontroller.operator.openshift.io` resources to manage\ningress controllers.\n\nInteract with ingress controllers using the `oc` command. Every ingress\ncontroller lives in the `openshift-ingress-operator` namespace.\n\nTo scale an ingress controller:\n\n```shell\n$ oc scale \\\n   --namespace=openshift-ingress-operator \\\n   --replicas=1 \\\n   ingresscontroller/\u003cname\u003e\n\n$ oc patch \\\n   --namespace=openshift-ingress-operator \\\n   --patch='{\"spec\": {\"replicas\": 2}}' \\\n   --type=merge \\\n   ingresscontroller/\u003cname\u003e\n```\n\n**Note:** Using `oc scale` on an `ingresscontroller` where `.spec.replicas` is unset will currently return an error ([Kubernetes #75210](https://github.com/kubernetes/kubernetes/pull/75210)).\n\n## Customizing\n\nCreate new `ingresscontroller` resources in the `openshift-ingress-operator`\nnamespace.\n\nTo edit an existing ingress controller:\n\n```shell\n$ oc edit --namespace=openshift-ingress-operator ingresscontroller/\u003cname\u003e\n```\n\n**Important:** Updating an ingress controller may lead to disruption for public\nfacing network connections as a new ingress controller revision may be rolled\nout.\n\nRefer to the [ingresscontroller API](https://github.com/openshift/api/blob/master/operator/v1/types_ingress.go) for full details on defaults and\ncustomizing an ingress controller. The most important initial customizations are\ndomain and endpoint publishing strategy, as they *cannot currently be changed\nafter the ingress controller is created*.\n\n### Endpoint publishing\n\nThe `.spec.endpointPublishingStrategy` field is used to publish the ingress\ncontroller endpoints to other networks, enable load balancer integrations, etc.\n\nEvery strategy is described in detail in the [ingresscontroller API](https://github.com/openshift/api/blob/master/operator/v1/types_ingress.go). A brief\ndesign diagram for each is shown below.\n\n#### LoadBalancerService\n\nThe `LoadBalancerService` strategy publishes an ingress controller using a\nKubernetes [LoadBalancer\nService](https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer)\nand on some platforms offers managed wildcard DNS.\n\n![Image of LoadBalancerService](docs/images/endpoint-publishing-loadbalancerservice.png)\n\n#### NodePortService\n\nThe `NodePortService` strategy publishes an ingress controller using a\nKubernetes [NodePort\nService](https://kubernetes.io/docs/concepts/services-networking/service/#nodeport).\nWith this strategy, the administrator is responsible for configuring\nany external DNS or load balancer.\n\n![Image of NodePortService](docs/images/endpoint-publishing-nodeportservice.png)\n\n#### HostNetwork\n\nThe `HostNetwork` strategy uses host networking to publish the ingress\ncontroller directly on the node host where the ingress controller is deployed.\n\n![Image of HostNetwork](docs/images/endpoint-publishing-hostnetwork.png)\n\n#### Private\n\nThe `Private` strategy does not publish the ingress controller.\n\n![Image of Private](docs/images/endpoint-publishing-private.png)\n\n## Troubleshooting\n\nUse the `oc` command to troubleshoot operator issues.\n\nTo inspect the operator's status:\n\n```shell\n$ oc describe clusteroperators/ingress\n```\n\nTo view the operator's logs:\n\n```shell\n$ oc logs --namespace=openshift-ingress-operator deployments/ingress-operator\n```\n\nTo inspect the status of a particular ingress controller:\n\n```shell\n$ oc describe --namespace=openshift-ingress-operator ingresscontroller/\u003cname\u003e\n```\n\n## Contributing\n\nReport issues in [the Red Hat Issue Tracker](https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12332330\u0026issuetype=1\u0026components=12367900\u0026priority=10300\u0026customfield_12316142=26752).\n\nSee [HACKING.md](HACKING.md) for development topics.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fcluster-ingress-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenshift%2Fcluster-ingress-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenshift%2Fcluster-ingress-operator/lists"}