1. The records are stored in redis which is not migratable to another cluster for the testing purposes. 2. Some of the requests fields are not recorded. 3. People should consider using https://github.com/buger/goreplay which is an existing mature and well-tested solution for testing purposes.
Fission
Fission is a framework for serverless functions on Kubernetes.
Prerequisites
- Kubernetes 1.9 or later
Helm charts
The following table lists two helm charts for Fission.
| Parameter | Description |
|---|---|
fission-core |
FaaS essentials, and triggers for HTTP, Timers and Kubernetes Watches |
fission-all |
Log aggregation with fluentd and InfluxDB; NATS for message queue triggers; Fission-UI |
Installing the chart
To install the chart with the release name my-release,
$ helm install --name my-release fission-all
Uninstalling the chart
To uninstall/delete chart,
$ helm delete my-release
Configuration
The following table lists the configurable parameters of the Fission chart and their default values.
| Parameter | Description | Default |
|---|---|---|
serviceType |
Type of Fission Controller service to use. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP. | ClusterIP |
routerServiceType |
Type of Fission Router service to use. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP. | LoadBalancer |
repository |
Image base repository | index.docker.io |
image |
Fission image repository | fission/fission-bundle |
imageTag |
Fission image tag | 1.6.0 |
pullPolicy |
Image pull policy | IfNotPresent |
fetcherImage |
Fission fetcher repository | fission/fetcher |
fetcherImageTag |
Fission fetcher image tag | 1.6.0 |
controllerPort |
Fission Controller service port | 31313 |
routerPort |
Fission Router service port | 31314 |
functionNamespace |
Namespace in which to run fission functions (this is different from the release namespace) | fission-function |
builderNamespace |
Namespace in which to run fission builders (this is different from the release namespace) | fission-builder |
enableIstio |
Enable istio integration | false |
persistence.enabled |
If true, persist data to a persistent volume | true |
persistence.existingClaim |
Provide an existing PersistentVolumeClaim instead of creating a new one | nil |
persistence.storageClass |
PersistentVolumeClaim storage class | nil |
persistence.accessMode |
PersistentVolumeClaim access mode | ReadWriteOnce |
persistence.size |
PersistentVolumeClaim size | 8Gi |
analytics |
Analytics let us count how many people installed fission. Set to false to disable analytics | true |
analyticsNonHelmInstall |
Internally used for generating an analytics job for non-helm installs | false |
pruneInterval |
The frequency of archive pruner (in minutes) | 60 |
preUpgradeChecksImage |
Fission pre-install/pre-upgrade checks live in this image | fission/pre-upgrade-checks |
debugEnv |
If there are any pod specialization errors when a function is triggered and this flag is set to true, the error summary is returned as part of http response | true |
prometheusDeploy |
Set to true if prometheus needs to be deployed along with fission | true in fission-all, false in fission-core |
canaryDeployment.enabled |
Set to true if you need canary deployment feature | true in fission-all, false in fission-core |
extraCoreComponentPodConfig |
Extend the container specs for the core fission pods. Can be used to add things like affinty/tolerations/nodeSelectors/etc. | None |
router.deployAsDaemonSet |
Deploy router as DaemonSet instead of Deployment | false |
router.svcAddressMaxRetries |
Max retries times for router to retry on a certain service URL returns from cache/executor | 5 |
router.svcAddressUpdateTimeout |
The length of update lock expiry time for router to get a service URL returns from executor | 30 |
router.svcAnnotations |
Annotations for router service | None |
router.useEncodedPath |
For router to match encoded path. If true, "/foo%2Fbar" will match the path "/{var}"; Otherwise, it will match the path "/foo/bar". | false |
router.traceSamplingRate |
Uniformly sample traces with the given probabilistic sampling rate | 0.5 |
router.roundTrip.disableKeepAlive |
Disable transport keep-alive for fast switching function version | true |
router.roundTrip.keepAliveTime |
The keep-alive period for an active network connection to function pod | 30s |
router.roundTrip.timeout |
HTTP transport request timeout | 50ms |
router.roundTrip.timeoutExponent |
The length of request timeout will multiply with timeoutExponent after each retry | 2 |
router.roundTrip.maxRetries |
Max retries times of a failed request | 10 |
Extra configuration for fission-all
| Parameter | Description | Default |
|---|---|---|
createNamespace |
If true, create fission-function and fission-builder namespaces |
true |
logger.influxdbAdmin |
Log database admin username | admin |
logger.fluentdImageRepository |
Logger fluentbit image repository | index.docker.io |
logger.fluentdImage |
Logger fluentbit image | fluent/fluent-bit |
logger.fluentdImageTag |
Logger fluentbit image tag | 1.0.4 |
nats.enabled |
Nats streaming enabled | true |
nats.authToken |
Nats streaming auth token | defaultFissionAuthToken |
nats.clusterID |
Nats streaming clusterID | fissionMQTrigger |
natsStreamingPort |
Nats streaming service port | 31316 |
azureStorageQueue.enabled |
Azure storage account name | false |
azureStorageQueue.key |
Azure storage account name | "" |
azureStorageQueue.accountName |
Azure storage access key | "" |
kafka.enabled |
Kafka trigger enabled | false |
kafka.brokers |
Kafka brokers uri | broker.kafka:9092 |
kafka.version |
Kafka broker version | nil |
heapster |
Enable Heapster (only enable this in clusters where heapster does not exist already) | false |
Please note that deploying of Azure Storage Queue or Kafka is not done by Fission chart and you will have to explicitly deploy them.
Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,
$ helm install --name my-release --set image=custom/fission-bundle,imageTag=v1 fission-all
If you're using minikube, set serviceType and routerServiceType to NodePort:
$ helm install --name my-release --set serviceType=NodePort,routerServiceType=NodePort fission-all
You can also set parameters with a yaml file (see values.yaml for what it should look like):
$ helm install --name my-release -f values.yaml fission-all