All Projects → fnproject → fn-helm

fnproject / fn-helm

Licence: Apache-2.0 license
Helm Chart for Fn

Programming Languages

Smarty
1635 projects
shell
77523 projects

Projects that are alternatives of or similar to fn-helm

binaris
Binaris Function as a Service CLI
Stars: ✭ 20 (-60.78%)
Mutual labels:  faas
kubernetes-helm-chart-cassandra
Kubernetes Helm Chart for Cassandra
Stars: ✭ 29 (-43.14%)
Mutual labels:  helm
faas-fargate
OpenFaaS on AWS Fargate. Open source Functions as a Service without any infrastructure to manage
Stars: ✭ 50 (-1.96%)
Mutual labels:  faas
rules helm
rules_helm: Bazel rules for managing helm charts
Stars: ✭ 46 (-9.8%)
Mutual labels:  helm
configurator
Synchronize and Version Control ConfigMaps & Secrets across Deployment Rollouts.
Stars: ✭ 68 (+33.33%)
Mutual labels:  helm
kubezero
ZeroDownTime Kubernetes platform - https://kubezero.com
Stars: ✭ 18 (-64.71%)
Mutual labels:  helm
gokube
gokube is a tool that makes it easy developing day-to-day with Kubernetes on your laptop.
Stars: ✭ 22 (-56.86%)
Mutual labels:  helm
swarm-gcp-faas
Setup OpenFaaS on Google Cloud with Terraform, Docker Swarm and Weave
Stars: ✭ 15 (-70.59%)
Mutual labels:  faas
miniurl
A production-ready URL shortener microservice.
Stars: ✭ 20 (-60.78%)
Mutual labels:  helm
helm-mapkubeapis
This is a Helm plugin which map deprecated or removed Kubernetes APIs in a release to supported APIs
Stars: ✭ 287 (+462.75%)
Mutual labels:  helm
valheim-k8s
valheim game-server on kubernetes
Stars: ✭ 74 (+45.1%)
Mutual labels:  helm
hex-example
Little API to demonstrate various microservice design principles and technologies
Stars: ✭ 131 (+156.86%)
Mutual labels:  faas
hull
The incredible HULL - Helm Uniform Layer Library - is a Helm library chart to improve Helm chart based workflows
Stars: ✭ 66 (+29.41%)
Mutual labels:  helm
lambda-memory-performance-benchmark
Performance and cost benchmark tool for AWS Lambda on memory sizes 📈⏱
Stars: ✭ 60 (+17.65%)
Mutual labels:  faas
cli
Autocode CLI and standard library tooling
Stars: ✭ 3,791 (+7333.33%)
Mutual labels:  faas
openwhisk-runtime-go
Apache OpenWhisk Runtime Go supports Apache OpenWhisk functions written in Go
Stars: ✭ 31 (-39.22%)
Mutual labels:  faas
emacs-config
Abelardo Jara-Berrocal's Emacs configuration files
Stars: ✭ 15 (-70.59%)
Mutual labels:  helm
go-appsync-graphql-cloudformation
AWS AppSync GraphQL API Proxy with Lambda, CloudFormation, and SAM
Stars: ✭ 28 (-45.1%)
Mutual labels:  faas
metalnetes
Create and manage multiple Kubernetes clusters using KVM on a bare metal Fedora 29 server. Includes helm + rook-ceph + nginx ingress + the stock analysis engine (jupyter + redis cluster + minio + automated cron jobs for data collection) - works on Kubernetes version v1.16.0 - 1.16.3 was not working
Stars: ✭ 37 (-27.45%)
Mutual labels:  helm
thunder
REST API application that manages user databases
Stars: ✭ 22 (-56.86%)
Mutual labels:  helm

Fn Project Helm Chart

The Fn project 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.

Introduction

This chart deploys a fully functioning instance of the Fn platform on a Kubernetes cluster using the Helm package manager.

Prerequisites

  • persistent volume provisioning support in the underlying infrastructure (for persistent data, see below )

  • Install Helm

  • Initialize Helm by installing Tiller, the server portion of Helm, to your Kubernetes cluster

  • Ingress controller

  • Cert manager

helm init --upgrade

Preparing chart values

Minimum configuration

In order to get a working deployment please pay attention to what you have in your chart values. Here is the bare minimum chart configuration to deploy a working Fn cluster.

Exposing Fn services

Ingress controller

If 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.

Important: An ingress controller works as a proxy, so you can use the ingress IP address as an HTTP proxy:

curl -x http://<ingress-controller-endpoint>:80 api.fn.internal 
{"goto":"https://github.com/fnproject/fn","hello":"world!"}

LoadBalancer

In order to natively expose the Fn services, you'll need to modify the Fn API, Runner, and UI service definitions:

  • at fn_api node values, modify fn_api.service.type from ClusterIP to LoadBalancer
  • at fn_lb_runner node values, modify fn_lb_runner.service.type from ClusterIP to LoadBalancer
  • at ui node values, modify ui.service.type from ClusterIP to LoadBalancer

DNS names

In an Fn deployment with LoadBalancer service types, you'll need 3 DNS names:

  • one for an API service (i.e., api.fn.mydomain.com)
  • one for runner LB service (i.e., lb.fn.mydomain.com)
  • one for UI service (i.e., ui.fn.mydomain.com)

Upon successful deployment, you'll have three public IP addresses -- one for each service. However, the IP address for the API and LB services will be identical since they are exposed as a single service. You'll have two IP addresses, but three DNS names.

Please keep in mind the best way for exposing services is an ingress controller.

Installing the Chart

Clone the fn-helm repo:

git clone https://github.com/fnproject/fn-helm.git && cd fn-helm

Install chart dependencies from requirements.yaml:

helm dep build fn

The 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 and modify the default settings. To install the chart with the release name my-release:

helm install --name my-release fn

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).

Working with Fn

Ingress controller

Please ensure that your ingress controller is running and has a public-facing IP address. An ingress controller acts as a proxy between your internal and public networks. Therefore in order to talk to your Fn Deployment, you'll need to set the HTTP_PROXY environment variable or use cURL like so:

curl -x http://<ingress-controller-endpoint>:80 api.fn.internal
{"goto":"https://github.com/fnproject/fn","hello":"world!"}

Uninstalling the Fn Helm Chart

Assuming your release is named my-release:

helm delete --purge my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

For detailed configuration, please see default chart values.

Configuring Database Persistence

Fn persists application data in MySQL. This is configured using the MySQL Helm Chart.

By 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.

e.g. to use an existing persistent volume claim for MySQL storage:

helm install --name testfn --set mysql.persistence.enabled=true,mysql.persistence.existingClaim=tc-fn-mysql fn
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].