{"id":13538873,"url":"https://github.com/fnproject/fn-helm","last_synced_at":"2025-09-10T15:43:41.816Z","repository":{"id":50307439,"uuid":"111824495","full_name":"fnproject/fn-helm","owner":"fnproject","description":"Helm Chart for Fn ","archived":false,"fork":false,"pushed_at":"2019-03-20T09:45:34.000Z","size":85,"stargazers_count":57,"open_issues_count":10,"forks_count":24,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-05-09T01:59:09.517Z","etag":null,"topics":["faas","helm","kubernetes","serverless"],"latest_commit_sha":null,"homepage":"","language":"Smarty","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/fnproject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-11-23T15:22:37.000Z","updated_at":"2025-03-30T16:26:53.000Z","dependencies_parsed_at":"2022-09-05T16:40:30.506Z","dependency_job_id":null,"html_url":"https://github.com/fnproject/fn-helm","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/fnproject%2Ffn-helm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fnproject%2Ffn-helm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fnproject%2Ffn-helm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fnproject%2Ffn-helm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fnproject","download_url":"https://codeload.github.com/fnproject/fn-helm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253176436,"owners_count":21866142,"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":["faas","helm","kubernetes","serverless"],"created_at":"2024-08-01T09:01:17.168Z","updated_at":"2025-05-09T01:59:14.232Z","avatar_url":"https://github.com/fnproject.png","language":"Smarty","funding_links":[],"categories":["🏗相关开源项目"],"sub_categories":["Oracle"],"readme":"# Fn Project Helm Chart\n\nThe [Fn project](http://fnproject.io) is an open source, container native, and cloud agnostic serverless platform. It’s easy to use, supports every programming language, and is extensible and performant.\n\n## Introduction\n\nThis chart deploys a fully functioning instance of the [Fn](https://github.com/fnproject/fn) platform on a Kubernetes cluster using the [Helm](https://helm.sh/) package manager.\n\n## Prerequisites\n\n- persistent volume provisioning support in the underlying infrastructure (for persistent data, see below )\n\n- Install [Helm](https://github.com/kubernetes/helm#install)\n\n- Initialize Helm by installing Tiller, the server portion of Helm, to your Kubernetes cluster\n\n- [Ingress controller](https://github.com/helm/charts/tree/master/stable/nginx-ingress)\n\n- [Cert manager](https://medium.com/oracledevs/secure-your-kubernetes-services-using-cert-manager-nginx-ingress-and-lets-encrypt-888c8b996260)\n\n\n```bash\nhelm init --upgrade\n```\n\n## Preparing chart values\n\n### Minimum configuration\n\nIn order to get a working deployment please pay attention to what you have in your chart values.\n[Here](fn/values.yaml) is the bare minimum chart configuration to deploy a working Fn cluster.\n\n### Exposing Fn services\n\n#### Ingress controller\n\nIf you are installing Fn behind an ingress controller, you'll need to have a single DNS sub-domain that will act as your ingress controllers IP resolution.\n\nImportant: An ingress controller works as a proxy, so you can use the ingress IP address as an HTTP proxy:\n\n```bash\ncurl -x http://\u003cingress-controller-endpoint\u003e:80 api.fn.internal \n{\"goto\":\"https://github.com/fnproject/fn\",\"hello\":\"world!\"}\n```\n\n\n#### LoadBalancer\n\nIn order to natively expose the Fn services, you'll need to modify the Fn API, Runner, and UI service definitions:\n\n - at `fn_api` node values, modify `fn_api.service.type` from `ClusterIP` to `LoadBalancer`\n - at `fn_lb_runner` node values, modify `fn_lb_runner.service.type` from `ClusterIP` to `LoadBalancer`\n - at `ui` node values, modify `ui.service.type` from `ClusterIP` to `LoadBalancer`\n\n\n#### DNS names\n\nIn an Fn deployment with LoadBalancer service types, you'll need 3 DNS names:\n\n - one for an API service (i.e., `api.fn.mydomain.com`)\n - one for runner LB service (i.e., `lb.fn.mydomain.com`)\n - one for UI service (i.e., `ui.fn.mydomain.com`)\n\nUpon successful deployment, you'll have three public IP addresses -- one for each service.\nHowever, the IP address for the API and LB services will be identical since they are exposed as a single service.\nYou'll have two IP addresses, but three DNS names.\n\nPlease keep in mind the best way for exposing services is an **ingress controller**.\n\n## Installing the Chart\n\nClone the fn-helm repo:\n\n```bash\ngit clone https://github.com/fnproject/fn-helm.git \u0026\u0026 cd fn-helm\n```\n\nInstall chart dependencies from [requirements.yaml](./fn/requirements.yaml):\n\n```bash\nhelm dep build fn\n```\n\nThe default chart will install fn as a private service inside your cluster with ephemeral storage, to configure a public endpoint and persistent storage you should look at [values.yaml](fn/values.yaml) and modify the default settings.\nTo install the chart with the release name `my-release`:\n\n```bash\nhelm install --name my-release fn\n```\n\n\u003e Note: if you do not pass the --name flag, a release name will be auto-generated. You can view releases by running helm list (or helm ls, for short).\n\n## Working with Fn \n\n#### Ingress controller\n\nPlease ensure that your ingress controller is running and has a public-facing IP address.\nAn ingress controller acts as a proxy between your internal and public networks.\nTherefore in order to talk to your Fn Deployment, you'll need to set the `HTTP_PROXY` environment variable or use cURL like so:\n\n```bash\ncurl -x http://\u003cingress-controller-endpoint\u003e:80 api.fn.internal\n{\"goto\":\"https://github.com/fnproject/fn\",\"hello\":\"world!\"}\n```\n\n## Uninstalling the Fn Helm Chart\n\nAssuming your release is named `my-release`:\n\n```bash\nhelm delete --purge my-release\n```\n\nThe command removes all the Kubernetes components associated with the chart and deletes the release.\n\n## Configuration \n\nFor detailed configuration, please see [default chart values](fn/values.yaml).\n\n ## Configuring Database Persistence \n \nFn persists application data in MySQL. This is configured using the MySQL Helm Chart.\n\nBy default this uses container storage. To configure a persistent volume, set `mysql.*` values in the chart values to that which corresponds to your storage requirements.\n\ne.g. to use an existing persistent volume claim for MySQL storage:\n\n```bash \nhelm install --name testfn --set mysql.persistence.enabled=true,mysql.persistence.existingClaim=tc-fn-mysql fn\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffnproject%2Ffn-helm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffnproject%2Ffn-helm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffnproject%2Ffn-helm/lists"}