{"id":17132179,"url":"https://github.com/bitsofinfo/appconduits","last_synced_at":"2025-03-24T05:18:46.092Z","repository":{"id":78906237,"uuid":"191208182","full_name":"bitsofinfo/appconduits","owner":"bitsofinfo","description":"Helm Chart for managing custom Kubernetes Service and Ingress traffic flows","archived":false,"fork":false,"pushed_at":"2023-02-23T16:38:23.000Z","size":1746,"stargazers_count":0,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-29T11:12:59.131Z","etag":null,"topics":["deployment","helm","helm-charts","ingress","kubernetes","service-mesh"],"latest_commit_sha":null,"homepage":"https://bitsofinfo.wordpress.com/2019/07/12/manage-custom-ingress-via-helm/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitsofinfo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"2019-06-10T16:48:13.000Z","updated_at":"2023-02-07T17:20:01.000Z","dependencies_parsed_at":"2023-03-03T09:00:25.444Z","dependency_job_id":null,"html_url":"https://github.com/bitsofinfo/appconduits","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitsofinfo%2Fappconduits","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitsofinfo%2Fappconduits/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitsofinfo%2Fappconduits/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitsofinfo%2Fappconduits/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitsofinfo","download_url":"https://codeload.github.com/bitsofinfo/appconduits/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245212311,"owners_count":20578443,"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":["deployment","helm","helm-charts","ingress","kubernetes","service-mesh"],"created_at":"2024-10-14T19:26:17.340Z","updated_at":"2025-03-24T05:18:46.073Z","avatar_url":"https://github.com/bitsofinfo.png","language":null,"readme":"# appconduits\n\nThis is a generic Helm chart that can define and manage arbitrary Kubernetes `Service` and `Ingress` objects in an opinionated fashion.\n\nThe chart lets the operator define custom *\"conduits\"* using a simplified YAML syntax. Whereby a *\"conduit\"* can be defined as a set of uniquely named `Ingress` definition (i.e.`hosts`+`paths`), that when deployed, serve as a single well established application traffic *\"pipeline\"* that services HTTP(s) for one or more long-lived FQDNs into an ever evolving set of backend target `Services`.\n\nAlthough this chart can be used on its own and send traffic to any deployed application on Kubernetes, it was designed to play nicely with applications deployed by [appdeploy](https://github.com/bitsofinfo/appdeploy) which you can find at: https://github.com/bitsofinfo/appdeploy\n\n* [Conventions](#convention)\n* [What it does](#does)\n* [What its not intended for](#doesnot)\n* [Alerts](#alerts)\n* [Options](#options)\n* [Meta-variables](#metavar)\n* [Diagram](#diag)\n* [Examples](examples/)\n* [Using as a dependency](#dependency)\n* [Packaging/Using](#pack)\n* [Related projects](#related)\n\n# \u003ca id=\"convention\"\u003e\u003c/a\u003eConventions\n\nThe `appconduits` chart uses some of the [same conventions and terminology](https://github.com/bitsofinfo/appdeploy#convention) as described by its sibling chart [appdeploy](https://github.com/bitsofinfo/appdeploy)\n\nSpecifically the following definitions:\n\n### environment\nAs one would expect, an *environment* is something like `dev`, `qa`, `prod` or `stage`.\n\n### context\nWithin an *environment*, one or more *contexts* can exist as a way to logically sub-divide applications within an *environment*. The loose rule is that all applications sharing the same *context* talk to one another or similar configuration sources/databases etc. *Contexts* permit a level of classification that applications can use to alter how they bootup, configs they load etc. within an *environment*. The name of a *context* generally includes the *environment* implicit in its name (i.e. `qa-silo1`)\n\n### classifier\nSometimes an application artifact may operate in different *modes*, these different modes may enable or disable certain aspects of standard functionality provided by the artifact; such as the availability or lack thereof certain exposed APIs or ports. In these cases the *classifier* can simply act as a naming decoration to help identify this.\n\n---\n\nThe above is simple set of terminologies found in this chart's configuration, but does not physically *impose anything* (functionality wise) on the artifacts (`Ingress`,`Service`) that are generated by this chart.\n\nIn short, the above terminology may or may not work for you, but have proved to be a useful set of conventions used in the real world and has worked pretty well.\n\n## Important!\n\nIn an of itself, this chart provisions nothing as its default [values.yaml](values.yaml) is empty on the key element of configuration\nunder the section `conduits` whereby you define actual `contexts` with `services` and `ingress` who's combination thereof constitute a *\"conduit\"*. See [the examples](examples/) as the best way to get a feel for things.\n\n## \u003ca id=\"does\"\u003e\u003c/a\u003eWhat it does\n\nThis chart produces the following Kubernetes YAML objects that adhere to a general convention described above.\n\nDepending on your [values.yaml](values.yaml) customizations, specifically the configuration of the `conduits` section, this Chart will produce the following kinds of artifacts:\n\n* **Services**: one or more `Services` properly configured with your defined `selectors`\n* **Ingress**: one or more `Ingress` for each unique `host`+`path` combination defined under `conduits` that route to configures `services`\n* **Helm Hooks**: Post install/upgrade (`Jobs`) that alert the deployed `conduits` state to Slack\n\n## \u003ca id=\"doesnot\"\u003e\u003c/a\u003eWhat its not intended for\n\nThis chart does not deploy application image artifacts. It simply provides a simplified way to express custom `Services` and `Ingress` that point to already deployed apps. If you need a chart to just deploy apps check out: [appdeploy](https://github.com/bitsofinfo/appdeploy).\n\n---\n\nThe whole point of `appconduits` is to enable teams to establish well defined and well recognized traffic routes to logical applications which may actually be composed of many different deployed image artifacts with ever changing versions. By expressing `Service` and `Ingress` relationships and organizing them under the guise of a single *conduit*, it decouples the management of how traffic routes to logical applications from the deployment of those application artifacts. Overall this can greatly simplify management of the numerous `Service/Ingress` objects required to realize these flows by expressing them as a single *conduit* managed as a Helm release along with all the benefits it provides.\n\n\u003ca id=\"diag\"\u003e\u003c/a\u003e![Diagram of appdeploy](/docs/diag.png \"Diagram1\")\n\n## \u003ca id=\"options\"\u003e\u003c/a\u003eConfigurable options\n\nAll configurable options are documented in [values.yaml](values.yaml)\n\nSee the [helm docs for setting values](https://github.com/helm/helm/blob/master/docs/chart_best_practices/values.md)\non how to customize/change these values when doing a `helm ...` invocation.\n\nThe best way to get a feel for things is to try the [example](examples/)\n\n## Examples\n\nFor examples see the [examples/ folder](examples/)\n\n## \u003ca id=\"dependency\"\u003e\u003c/a\u003eAs a dependency in another chart\n\nBuild it: `helm package appconduits`\n\nThen copy the resulting `tgz` into your dependant chart's `charts/` folder\n\nFrom there you can customize your chart's `values.yaml` to further refine the\ndefaults provided by `appconduits/values.yaml`\n\nFor example, lets say you create a deriviative chart based on `appconduits`.\nYour derivative chart's `values.yaml` could further provide defaults on top\nof `appconduits` as follows:\n\n**my-custom-chart/values.yaml**\n```\nmy-own-chart-property1: \"some value\"\n\n# Specify value customizations for the 'appconduits' dependency\n# To override the values of \"sub-charts\" you have to scope them\n# as follows:\n# https://github.com/helm/helm/blob/master/docs/chart_template_guide/subcharts_and_globals.md\n\nappconduits:\n  conduitname: \"whatever\"\n  ....\n\n```\n\n\n## \u003ca id=\"pack\"\u003e\u003c/a\u003eHelm package/update\n\n```\nhelm package . -d repo/charts/\nhelm repo index repo/\n```\n\n## Using\n\n```\nhelm repo add bitsofinfo-appconduits https://raw.githubusercontent.com/bitsofinfo/appconduits/master/repo\nhelm repo update\n```\n\n```\n# requirements.yaml\ndependencies:\n- name: appconduits\n  version: \"1.1.0\"\n  repository: \"https://raw.githubusercontent.com/bitsofinfo/appconduits/master/repo\"\n```\n\n# \u003ca id=\"related\"\u003e\u003c/a\u003eRelated Projects\n\n* [appdeploy](https://github.com/bitsofinfo/appdeploy)\n* [helmfile-deploy](https://github.com/bitsofinfo/helmfile-deploy)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitsofinfo%2Fappconduits","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitsofinfo%2Fappconduits","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitsofinfo%2Fappconduits/lists"}