{"id":16879986,"url":"https://github.com/aledbf/ingress-controller","last_synced_at":"2025-04-11T11:43:27.975Z","repository":{"id":149110102,"uuid":"71056016","full_name":"aledbf/ingress-controller","owner":"aledbf","description":null,"archived":false,"fork":false,"pushed_at":"2016-11-24T00:48:06.000Z","size":11949,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-25T08:03:49.006Z","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/aledbf.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":"2016-10-16T14:36:12.000Z","updated_at":"2019-08-07T19:53:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"68d00130-9ec8-4655-a936-6865f4b38f20","html_url":"https://github.com/aledbf/ingress-controller","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aledbf%2Fingress-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aledbf%2Fingress-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aledbf%2Fingress-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aledbf%2Fingress-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aledbf","download_url":"https://codeload.github.com/aledbf/ingress-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248386371,"owners_count":21095066,"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-10-13T15:56:49.293Z","updated_at":"2025-04-11T11:43:27.956Z","avatar_url":"https://github.com/aledbf.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DEPRECATED\n\n## This repository was migrated to https://github.com/kubernetes/ingress\n\n\n\n[![Build Status](https://travis-ci.org/aledbf/ingress-controller.svg?branch=master)](https://travis-ci.org/aledbf/ingress-controller)\n[![Coverage Status](https://coveralls.io/repos/github/aledbf/ingress-controller/badge.svg?branch=master)](https://coveralls.io/github/aledbf/ingress-controller?branch=master)\n[![Go Report Card](https://goreportcard.com/badge/github.com/aledbf/ingress-controller)](https://goreportcard.com/report/github.com/aledbf/ingress-controller)\n\n# Ingress Controller\n\nThis project contains the boilerplate to create an Ingress controller in order to avoid starting from scrach.\n\nSee [Ingress controller documentation](https://github.com/kubernetes/contrib/blob/master/ingress/controllers/README.md) for details on how it works.\n\n\n### Available backends\n - [NGINX](https://github.com/aledbf/ingress-controller/blob/master/backends/nginx)\n\n\n### How I can use X as backend?\n\nIf is not present in the previous list you can create a new backend using the next steps as a reference:\n\n- Create a [main.go](https://github.com/aledbf/ingress-controller/blob/master/backends/nginx/pkg/cmd/controller/main.go) file \n```\nfunc main() {\n\t// start a new nginx controller\n\tngx := newNGINXController()\n\t// create a custom Ingress controller using NGINX as backend\n\tic := controller.NewIngressController(ngx)\n\t// start the controller\n\tic.Start()\n\t// wait\n\tglog.Infof(\"shutting down Ingress controller...\")\n}\n```\n\n- Implement the [Controller](https://github.com/aledbf/ingress-controller/blob/master/pkg/ingress/types.go#L40) interface\n```\ntype Controller interface {\n\t// Start returns the command is executed to start the backend.\n\t// The command must run in foreground.\n\tStart()\n\t// Stop stops the backend\n\tStop() error\n\t// Restart reload the backend with the a configuration file returning\n\t// the combined output of Stdout and Stderr\n\tRestart(data []byte) ([]byte, error)\n\t// Tests returns a commands that checks if the configuration file is valid\n\t// Example: nginx -t -c \u003cfile\u003e\n\tTest(file string) *exec.Cmd\n\t// OnUpdate callback invoked from the sync queue https://github.com/aledbf/ingress-controller/blob/master/pkg/ingress/controller/controller.go#L355\n\t// when an update occurs. This is executed frequently because Ingress\n\t// controllers watches changes in:\n\t// - Ingresses: main work\n\t// - Secrets: referenced from Ingress rules with TLS configured\n\t// - ConfigMaps: where the controller reads custom configuration\n\t// - Services: referenced from Ingress rules and required to obtain\n\t//\t information about ports and annotations\n\t// - Endpoints: referenced from Services and what the backend uses\n\t//\t to route traffic\n\t//\n\t// ConfigMap content of --configmap\n\t// Configuration returns the translation from Ingress rules containing\n\t// information about all the upstreams (service endpoints ) \"virtual\"\n\t// servers (FQDN)\n\t// and all the locations inside each server. Each location contains\n\t// information about all the annotations were configured\n\t// https://github.com/aledbf/ingress-controller/blob/master/pkg/ingress/types.go#L48\n\tOnUpdate(*api.ConfigMap, Configuration) ([]byte, error)\n\t// UpstreamDefaults returns the minimum settings required to configure the\n\t// communication to upstream servers (endpoints)\n\tUpstreamDefaults() defaults.Backend\n\t// IsReloadRequired checks if the backend must be reloaded or not.\n\t// The parameter contains the new rendered template\n\tIsReloadRequired([]byte) bool\n\t// Info returns information about the ingress controller\n\t// This can include build version, repository, etc.\n\tInfo() string\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faledbf%2Fingress-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faledbf%2Fingress-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faledbf%2Fingress-controller/lists"}