{"id":13688763,"url":"https://github.com/caddyserver/ingress","last_synced_at":"2025-05-14T20:09:43.366Z","repository":{"id":39920216,"uuid":"190273413","full_name":"caddyserver/ingress","owner":"caddyserver","description":"WIP Caddy 2 ingress controller for Kubernetes","archived":false,"fork":false,"pushed_at":"2025-04-28T22:59:46.000Z","size":1561,"stargazers_count":731,"open_issues_count":44,"forks_count":74,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-05-14T04:46:34.937Z","etag":null,"topics":["docker","hacktoberfest","hacktoberfest2023","helm","ingress","kubernetes","kubernetes-ingress","kubernetes-ingress-controller"],"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/caddyserver.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2019-06-04T20:20:16.000Z","updated_at":"2025-05-13T16:41:45.000Z","dependencies_parsed_at":"2023-10-25T18:06:47.834Z","dependency_job_id":"99bf8969-0051-4e1e-950d-e984620bd90d","html_url":"https://github.com/caddyserver/ingress","commit_stats":{"total_commits":162,"total_committers":22,"mean_commits":7.363636363636363,"dds":0.6234567901234568,"last_synced_commit":"175808395cf1962ca4d6da8792876016541c98d9"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caddyserver%2Fingress","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caddyserver%2Fingress/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caddyserver%2Fingress/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/caddyserver%2Fingress/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/caddyserver","download_url":"https://codeload.github.com/caddyserver/ingress/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254219374,"owners_count":22034397,"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":["docker","hacktoberfest","hacktoberfest2023","helm","ingress","kubernetes","kubernetes-ingress","kubernetes-ingress-controller"],"created_at":"2024-08-02T15:01:22.062Z","updated_at":"2025-05-14T20:09:43.312Z","avatar_url":"https://github.com/caddyserver.png","language":"Go","funding_links":[],"categories":["Go","docker"],"sub_categories":[],"readme":"# Caddy Ingress Controller\n\nThis is the Kubernetes Ingress Controller for Caddy. It includes functionality\nfor monitoring `Ingress` resources on a Kubernetes cluster and includes support\nfor providing automatic HTTPS certificates for all hostnames defined in the \ningress resources that it is managing.\n\n## Prerequisites\n\n- Helm 3+\n- Kubernetes 1.19+\n\n## Setup\n\nIn the `charts` folder, a Helm Chart is provided to make installing the Caddy\nIngress Controller on a Kubernetes cluster straightforward. To install the\nCaddy Ingress Controller adhere to the following steps:\n\n1. Create a new namespace in your cluster to isolate all Caddy resources.\n\n```sh\nkubectl create namespace caddy-system\n```\n\n2. Install the Helm Chart.\n\n```sh\nhelm install \\\n  --namespace=caddy-system \\\n  --repo https://caddyserver.github.io/ingress/ \\\n  --atomic \\\n  mycaddy \\\n  caddy-ingress-controller\n```\n\nOr \n\n2. Generate kubernetes yaml file.\n```sh\ngit clone https://github.com/caddyserver/ingress.git\ncd ingress\n\n# generate the yaml file\nhelm template mycaddy ./charts/caddy-ingress-controller \\\n  --namespace=caddy-system \\\n  \u003e mycaddy.yaml\n\n# apply the file\nkubectl apply -f mycaddy.yaml\n```\n\nThis will create a service of type `LoadBalancer` in the `caddy-system`\nnamespace on your cluster. You'll want to set any DNS records for accessing this\ncluster to the external IP address of this `LoadBalancer` when the external IP\nis provisioned by your cloud provider.\n\nYou can get the external IP address with `kubectl get svc -n caddy-system`\n\n3. Alternate installation method: Glasskube\n\nTo install the Caddy ingress controller using [Glasskube](https://glasskube.dev/), you can select \"caddy-ingress-controller\" from the \"ClusterPackages\" tab in the Glasskube GUI then click \"install\" or you can run the following command: \n```console\nglasskube install caddy-ingress-controller\n```\nAdd an email address in the package configuration section in the UI to enable automatic HTTPS, or run: \n```\nglasskube install caddy-ingress-controller --value \"automaticHTTPS=your@email.com\"\n```\n\n## Debugging\n\nTo view any logs generated by Caddy or the Ingress Controller you can view the\npod logs of the Caddy Ingress Controller.\n\nGet the pod name with:\n\n```sh\nkubectl get pods -n caddy-system\n```\n\nView the pod logs:\n\n```sh\nkubectl logs \u003cpod-name\u003e -n caddy-system\n```\n\n## Automatic HTTPS\n\nTo have automatic HTTPS (not to be confused with `On-demand TLS`), you simply have\nto specify your email in the config map. When using Helm chart, you can add\n`--set ingressController.config.email=your@email.com` when installing.\n\n## On-Demand TLS\n\n[On-demand TLS](https://caddyserver.com/docs/automatic-https#on-demand-tls) can generate SSL certs on the fly\nand can be enabled in this controller by setting the `onDemandTLS` config to `true`:\n\n```sh\nhelm install ...\\\n  --set ingressController.config.onDemandTLS=true\n```\n\n\u003e You can also specify options \n\u003e for the on-demand config: `onDemandAsk`\n\n\n## Bringing Your Own Certificates\n\nIf you would like to disable automatic HTTPS for a specific host and use your\nown certificates you can create a new TLS secret in Kubernetes and define what\ncertificates to use when serving your application on the ingress resource.\n\nExample:\n\nCreate TLS secret `mycerts`, where `./tls.key` and `./tls.crt` are valid\ncertificates for `test.com`.\n\n```\nkubectl create secret tls mycerts --key ./tls.key --cert ./tls.crt\n```\n\n```yaml\napiVersion: networking.k8s.io/v1\nkind: Ingress\nmetadata:\n  name: example\n  annotations:\n    kubernetes.io/ingress.class: caddy\nspec:\n  rules:\n  - host: test.com\n    http:\n      paths:\n      - path: /\n        pathType: Prefix\n        backend:\n          service:\n            name: test\n            port:\n              number: 8080\n  tls:\n    - secretName: mycerts # use mycerts for host test.com\n      hosts:\n        - test.com\n```\n\n### Contribution\n\nLearn how to start contributing on the [Contributing Guidline](CONTRIBUTING.md).\n\n## License\n\n[Apache License 2.0](LICENSE.txt)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaddyserver%2Fingress","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcaddyserver%2Fingress","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcaddyserver%2Fingress/lists"}