{"id":20410289,"url":"https://github.com/kuadrant/multicluster-gateway-controller","last_synced_at":"2025-05-08T14:32:25.682Z","repository":{"id":65739261,"uuid":"578589674","full_name":"Kuadrant/multicluster-gateway-controller","owner":"Kuadrant","description":"multi-cluster gateway controller, manages multi-cluster gateways based on gateway api and policy attachment","archived":true,"fork":false,"pushed_at":"2024-12-11T23:32:21.000Z","size":66909,"stargazers_count":11,"open_issues_count":9,"forks_count":23,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-24T05:45:34.184Z","etag":null,"topics":["gateway-api","global-load-balancing","hacktoberfest","multi-cloud","multi-cluster"],"latest_commit_sha":null,"homepage":"","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/Kuadrant.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":"2022-12-15T12:17:57.000Z","updated_at":"2024-12-16T14:36:39.000Z","dependencies_parsed_at":"2023-09-27T19:35:21.536Z","dependency_job_id":"eb186aaa-3f4f-4436-bfb8-8b5cc3b32c80","html_url":"https://github.com/Kuadrant/multicluster-gateway-controller","commit_stats":null,"previous_names":["kuadrant/multi-cluster-traffic-controller"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuadrant%2Fmulticluster-gateway-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuadrant%2Fmulticluster-gateway-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuadrant%2Fmulticluster-gateway-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Kuadrant%2Fmulticluster-gateway-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Kuadrant","download_url":"https://codeload.github.com/Kuadrant/multicluster-gateway-controller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253085650,"owners_count":21851670,"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":["gateway-api","global-load-balancing","hacktoberfest","multi-cloud","multi-cluster"],"created_at":"2024-11-15T05:45:21.253Z","updated_at":"2025-05-08T14:32:25.093Z","avatar_url":"https://github.com/Kuadrant.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# multicluster-gateway-controller\n\n## Description:\n\nThe multi-cluster gateway controller, leverages the gateway API standard and Open Cluster Management to provide multi-cluster connectivity and global load balancing\n\nKey Features:\n\n- Central Gateway Definition that can then be distributed to multiple clusters\n- Automatic TLS and cert distribution for HTTPS based listeners\n- DNSPolicy to decide how North-South based traffic should be balanced and reach the gateways\n- Health checks to detect and take remedial action against unhealthy endpoints\n- Cloud DNS provider integrations (AWS route 53) with new ones being added (google DNS)\n\nWhen deploying the multicluster gateway controller using the make targets, the following will be created: \n* Kind cluster(s)\n* Gateway API CRDs in the control plane cluster\n* Ingress controller\n* Cert manager\n* LetsEncrypt certs\n\n## Prerequisites:\n* AWS or GCP\n* Various dependencies installed into $(pwd)/bin e.g. kind, yq etc.\n  * Run `make dependencies`\n* openssl\u003e=3\n    * On macOS a later version is available with `brew install openssl`. You'll need to update your PATH as macOS provides an older version via libressl as well\n    * On Fedora use `dnf install openssl`\n* go \u003e= 1.21\n\n### 1. Running the controller in the cluster:\n1. Set up your DNS Provider by following these [steps](https://github.com/Kuadrant/dns-operator/blob/main/docs/provider.md)\n\n1. Setup your local environment \n    ```sh\n    make local-setup MGC_WORKLOAD_CLUSTERS_COUNT=\u003cNUMBER_WORKLOAD_CLUSTER\u003e\n    ```  \n1. Build the controller image and load it into the control plane\n    ```sh\n   kubectl config use-context kind-mgc-control-plane \n   make kind-load-gateway-controller\n    ```\n\n1. Deploy the controller(s) to the control plane cluster\n    ```sh\n    make deploy-gateway-controller\n    ```\n\n1. (Optional) View the logs of the deployed controller\n    ```sh\n    kubectl logs -f $(kubectl get pods -n multi-cluster-gateways | grep \"mgc-\" | awk '{print $1}') -n multi-cluster-gateways\n    ```\n\n## 2. Running the controller locally:\n1. Set up your DNS Provider by following these [steps](https://github.com/Kuadrant/dns-operator/blob/main/docs/provider.md)\n\n1.  Setup your local environment \n\n    ```sh\n    make local-setup MGC_WORKLOAD_CLUSTERS_COUNT=\u003cNUMBER_WORKLOAD_CLUSTER\u003e\n    ```\n\n1. Run the controller locally:\n    ```sh\n    kubectl config use-context kind-mgc-control-plane \n    make build-gateway-controller run-gateway-controller\n    ```\n\n## 3. Clean up local environment\nIn any terminal window target control plane cluster by:\n```bash\nkubectl config use-context kind-mgc-control-plane \n```\nIf you want to wipe everything clean consider using:\n```bash\nmake local-cleanup # Remove kind clusters created locally and cleanup any generated local files.\n```\nIf the intention is to cleanup kind cluster and prepare them for re-installation consider using:\n```bash\nmake local-cleanup-mgc MGC_WORKLOAD_CLUSTERS_COUNT=\u003cNUMBER_WORKLOAD_CLUSTER\u003e # prepares clusters for make local-setup-mgc\n```\n\n## License\n\nCopyright 2022 Red Hat.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuadrant%2Fmulticluster-gateway-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkuadrant%2Fmulticluster-gateway-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkuadrant%2Fmulticluster-gateway-controller/lists"}