Compare commits

...
319 Commits
Author SHA1 Message Date
Sanket SudakeandGitHub 59e876062f Capture os signals to gracefully shutdown fission components (#2261)
- Currently, fission components don't handle shutdown signals.
So we don't get any to do the required cleanup before the fission process
exits. Adding signal capture process with cancelling context so
that all dependent processes stop working when the process gets term
signal.
- Set log level to error in otel shutdown function

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-11 17:02:11 +05:30
Sanket SudakeandGitHub d260f07acb Capture fission-bundle exit logs with sync (#2260)
Currently when any of fission component exists, we fail to sync
log as logger.Sync is not called before exiting.
Restructured code so that we can logger.Sync before existing from
the fission bundle component execution.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-11 10:05:22 +05:30
Sanket SudakeandGitHub 81e247e1e8 Issue #2258 Reafctor ready pod conroller to use lister and cache sync checks (#2259)
Reactored ready pod controller code to user lister and cache sync checks,
so that we avoid querying lister if cache is not synced in choodPod function.
Also, as noticied in #2258 we were initializing workqueue in goroutine
which was causing nil pointer reference. We have moved it out of goroutine
and kept specific parts in goroutine.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-10 16:00:57 +05:30
Sanket SudakeandGitHub 65e842b1c8 Pass context to functionCache functions and debug messages in pool cache (#2244)
* Active requests count tracking with debug messages
* Pass required contexts to cache functions
* Fix duplicate imports

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-10 11:11:44 +05:30
Sanket SudakeandGitHub 547e1b0d83 Add termination policy customization in helm chart (#2255)
Currently default pod termination logs go to /dev/termination-log.
With CI we need to change customize path somewhere to /var/log for
exporting logs with the kind export logs command.
Setting FallbackToLogsOnError as termination policy for skaffold.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-10 08:47:54 +05:30
Sanket SudakeandGitHub 2c1b459a5e Remove heapster from fission chart (#2256)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-09 17:33:30 +05:30
Sanket SudakeandGitHub adfc0fa6b8 Goreleaser Update docker manifests to publish latest images (#2257)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-09 17:23:48 +05:30
Sanket SudakeandGitHub 0a7dc70339 Add support to mention priorityClassName for Fission components (#2254)
In Fission CI as well in a couple of scenarios, noticed Fission pods
getting preempted when Function pods are getting created. As both
Fission components and function pods have the same priority class
fission component pods might get preempted. It to be recommended to
set higher priority class for components such as Fission router, executor,
controller so that Fission functioning doesn't get disrupted.
Most of the Fission components work fine with restart except the executor. So
user should set priorityClass for Fission executor.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-08 10:51:29 +05:30
Sanket SudakeandGitHub 3aaeb88bcd Export kind logs from CI for pod restart debugging (#2252)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-06 12:45:34 +05:30
Sanket SudakeandGitHub 6f6710ede9 Run all generators with upstream 1.22 code-generator (#2251)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-06 12:23:43 +05:30
Sanket SudakeandGitHub 8b13c638b1 Upgrade all dependencies (#2250)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-03 14:57:26 +05:30
Sanket SudakeandGitHub b08bb591be Add 1.15.x upgrade notes in chart README (#2249)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-03 12:27:03 +05:30
Sanket SudakeandGitHub f09d399c17 Add command to generate Fission CLI docs (#2247)
* Add command to generate Fission CLI docs
* Minor fixes identified by LanguageTool

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-02 17:09:31 +05:30
Ankit ChawlaandGitHub 0c8a0c43c1 Changed kafka version (#2246) 2021-11-02 15:04:14 +05:30
Sanket SudakeandGitHub 12147d9cd2 Update chart version to v1.15.0-rc2 (#2243)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-11-01 14:35:50 +05:30
Pradeep Lakshmi NarasimhaandGitHub a5fb5b9901 feature: Added '--specignore' option to pass file containing specs to be ignored for fission spec commands (#2239)
- New flag `--specignore` has been added for command fission spec [list | validate | apply | destroy]
- This flag is optional.
- The default spec ignore file name is `.specignore`, if the flag is not used
- The spec ignore file existence will be checked in the `--specdir` path
- If spec ignore file is passed to the flag, with a name other than .specignore and if it does not exist in the `--specdir` path then an error will be returned.
- `--specdir` will be the root path against which the patterns will be evaluated
- The behaviour of the spec ignore file will be similar to .gitignore (only for yml and yaml files). For reference: http://git-scm.com/docs/gitignore
2021-10-29 13:26:42 +05:30
Sanket SudakeandGitHub 8fb311b739 Disable nats test as we deprecate Fission Nats Integration (#2241)
We would like to deprecate Fission Nats Integration and recommend
user to use Fission Keda Nats connector to handle Keda events.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-29 09:48:47 +05:30
Sanket SudakeandGitHub 02e16666ed chore: Update node and Go environment images in CI (#2240)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-27 15:30:31 +05:30
Eng Zer JunandGitHub 2f4ec4b2b9 refactor: move from io/ioutil to io and os package (#2236)
The io/ioutil package has been deprecated as of Go 1.16, see
https://golang.org/doc/go1.16#ioutil. This commit replaces the existing
io/ioutil functions with their new definitions in io and os packages.

Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
2021-10-23 17:14:12 +05:30
Sanket SudakeandGitHub e641246866 Improve helm chart values documentation (#2235)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-22 17:52:40 +05:30
Pradeep Lakshmi NarasimhaandGitHub 772941e02e Adding validations for env/fn before listing pods (#2231) 2021-10-22 13:27:28 +05:30
Dylan ArbourandGitHub 3efa3bbce9 Add NATS streaming image tag (#2234)
Creates reproducible builds by locking NATS streaming to a specific
version
2021-10-22 10:57:28 +05:30
Sanket SudakeandGitHub 178cdd42b7 Remove admin role from fission-svc service account (#2233)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-22 09:54:44 +05:30
Sanket SudakeandGitHub 3a7c139e18 Remove Fission UI manifest from chart (#2232)
Cleaned up Fission UI manifest from chart as not supported
anymore.
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-21 15:04:25 +05:30
Sanket SudakeandGitHub e281c21662 Chart dependency update: prometheus, fluentd, influxdb (#2227)
- Updated prometheus chart to 14.11.0
- Fluentd image to 1.8.8
- Influxdb to 1.8

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-21 12:54:54 +05:30
Sanket SudakeandGitHub 9b26befcba Allow disabling preupgrade checks flag (#2229)
Added options to allow disabling of pre-upgrade checks,
also providing options to mention image and image tag
for pre-upgrade.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-21 09:27:12 +05:30
Sanket SudakeandGitHub 1b3833205c refactoring: Breakdown fission-all chart into components and removed fission-core (#2224)
* Sync a few files from fission-all to fission-core chart
* Change values in fission-all chart
We keep the following components by default disabled now, which were enabled by default earlier.

1. nats - Fission Nats integration
2. influxdb - Influxdb and logger component
3. prometheus - Prometheus disabled by default
4. canaryDeployment - Disabled by default

This change reduces the need for a fission-core chart and we can configure
values of fission-all so that it can provide the behaviour of fission-all
as well as fission-core.

* Remove fission-core chart
* Add README in the fission-all chart
* Rename clusterrolebinding fission-crd to fission-cr-admin
* Add icon and sources in helm chart

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-19 15:59:14 +05:30
Sanket SudakeandGitHub 40c9a78014 Improve namespace checks in pre-upgrade verification (#2226)
1. Pass context to required functions
2. Avoid function spec reference namespace check if empty
3. Log errors observed in function reference namespace checks

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-13 12:10:09 +05:30
Sanket SudakeandGitHub a5190dce5b Correct slack badge (#2223) 2021-10-11 09:52:48 +05:30
Sanket SudakeandGitHub 0ad3bea276 Correct Readme table of contents (#2221)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-10 14:36:30 +05:30
Sanket SudakeandGitHub ea3ea80ff4 Organize badges in README (#2220)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-10 14:01:21 +05:30
Pradeep Lakshmi NarasimhaandGitHub c9da527d37 feature: Added command to list pods managed by fission for environment/function (#2207) 2021-10-10 10:52:42 +05:30
Sanket SudakeandGitHub e930a2922c chore:Add codecov coverage reporting in CI flow (#2218)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-06 17:11:12 +05:30
Sanket SudakeandGitHub 5055616101 Add security policy (#2217)
* Add security policy

* Update SECURITY.md
2021-10-06 16:06:58 +05:30
Sanket SudakeandGitHub e4d5565f8e security: Update go-uuid and mholt/archiver to recommended version (#2216)
* security: Update go-uuid to recommended version
* security: Update mholt/archiver dep to recommended version

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-10-06 13:24:54 +05:30
Sanket SudakeandGitHub 0d319c07ae Add important badges (#2215) 2021-10-04 17:57:29 +05:30
Pradeep Lakshmi NarasimhaandGitHub 23f4643c6e refactor: Replaced context.TODO() with request.Context() in API files (#2214) 2021-10-04 12:52:50 +05:30
Sanket SudakeandGitHub 6e00aa6cf5 Update docs link to fission.io/docs (#2210)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-28 17:56:43 +05:30
Sanket SudakeandGitHub 9037d14d83 Update changelog (#2205)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-24 18:54:49 +05:30
Sanket SudakeandGitHub 50b5c74c52 Prerelease v1.15.0-rc1 (#2204)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-23 14:19:33 +05:30
Sanket SudakeandGitHub 23d6266335 chore(changelog): Cleanup changelog and exclude non-standard releases (#2203)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-23 12:44:50 +05:30
Sanket SudakeandGitHub 4f8727f9d4 chore: Logo in README compatible with dark themes (#2202) 2021-09-22 16:51:25 +05:30
Sanket SudakeandGitHub 119d674207 enhancement: Add different samplers and propagators support with OpenTelemetry (#2201)
* Samplers: Check PR/helm values for supported types
* Propagators: Check PR/helm values for supported types
* Added tracing support via fission CLI
* Use parentbased_traceidratio as default sampler with 0.1 ratio

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-22 16:29:49 +05:30
Sanket SudakeandGitHub 1347d73b04 fix: Goreleaser for build and release (#2189)
* Add goreleaser for building binaries
* Update CONTRIBUTING.md
* Break release scripts for goreleaser

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-21 15:29:40 +05:30
Ankit ChawlaandGitHub b55dc1fd78 Updated nats version (#2186) 2021-09-21 11:47:30 +05:30
Sanket SudakeandGitHub 1a52f3dce8 chore(dep): update go dependency stow v0.2.7 (#2195)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-17 10:55:56 +05:30
Sanket SudakeandGitHub 4a0bd1aa21 fix: Use standard env variables for opentelemtry (#2194)
Opentelemetry defines standard variables which are supported by multiple observability platforms.

[1] https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/sdk-environment-variables.md
[2] https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/exporter.md

By defining support for standard env vars, Fission open telemetry support can be leveraged with different
platforms such as NewRelic, SigNoz, DataDog etc.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-16 17:48:26 +05:30
Sanket SudakeandGitHub 33473a4528 feature: Capture important events with span in fission and add trace id in logs (#2180)
* Capture important open telemetry events with span in fission
* Add context to missing HTTP calls
* Add Trace ID in logs
* capture trace id in the proxy handler function
* Always registry tracer to get traceID

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-15 16:41:59 +05:30
Sanket SudakeandGitHub 453debb6e9 ci(Mergify): configuration update (#2191)
Signed-off-by:  Sanket Sudake <sanketsudake@gmail.com>
2021-09-12 10:21:56 +05:30
Sanket SudakeandGitHub 81ccf6359d Add first interaction greetings (#2190)
* Add first interaction greetings

* Update greetings.yml
2021-09-12 10:11:29 +05:30
Ankit ChawlaandGitHub 681e6f02fe Updated versions of connectors (#2185) 2021-09-06 15:43:27 +05:30
Sanket SudakeandGitHub 5e226433b5 Check package resource version from fetch request with fetched package (#2183)
When fetch request is received by fetcher, it fetches
package information. Checking if package resource version mentioned
in fetch req matches with one received. Adding warning for now,
in future we need to ensure we give error if resource version
are not matching.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-06 13:12:33 +05:30
Sanket SudakeandGitHub f4c56f81f3 Pass podinformer to poolpodcontroller instead of reference to pool manager (#2184)
In upgrade tests, sometimes in race condition pool manager podlister
takes time to sync in which case, poolpodcontrolller get nil reference
for gpm.podLister. Passing podInformer to poolpodcontroller so that
we wait for podInformer cache to sync.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-06 11:57:33 +05:30
Ankit ChawlaandGitHub ce85b27803 Added redis keda connector (#2176) 2021-09-06 10:01:35 +05:30
Sanket SudakeandGitHub eb31381094 Functions with common prefix path handling with internal routes (#2182)
With addition of prefix based routes in 1.13.1, we have turned
all internal routes prefix based. This is causing wrong responses
in functions names with common prefixes such as `hello-world` and
`hello-world-consumer`. This patch fixes it where we add a fix route
for function name and prefix path for function name with `/`.
We improve overall prefix path handing with fix and prevent breakage
for existing flow.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-09-06 08:35:38 +05:30
Sanket SudakeandGitHub a1cbce810e Add kubernetes objects aware logger with zap (#2179)
Using controller-runtime zap integration which is aware of Kubernetesobjects and logs only name+namespace of the object when complete runtime.Object compatible type is given to logger.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-31 18:38:14 +05:30
nickmancariandGitHub f195975bda Added lables to flags '--url', '--prefix', '--method' to reflect their deprecation for the 'fn create' use case. (#2171) 2021-08-31 18:12:58 +05:30
Sanket SudakeandGitHub 3636bb35ff Fix pod name in port forwarding log (#2178)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-31 10:07:42 +05:30
Sanket SudakeandGitHub 1d5a09699b Use pool pod controller with env informer (#2161)
Signed-off-by: Sanket Sudake sanketsudake@gmail.com

- Use informers and listers in executors
- Passing context properly in pool manager executor
- Environment updates in the pool manager would not cause updates in the deployment
- Environment update minimizing downtime
- Use replicaset controller and environment delete triggers to cleanup specialized pods
2021-08-31 09:31:32 +05:30
Sanket SudakeandGitHub 1df59316e7 Add correct context required in executor (#2175)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-25 13:16:26 +05:30
Sanket SudakeandGitHub d6b47c1a4e Add typed informers instead of generic SharedIndexInformers (#2174)
Generally using typed informers is more standard practise
than using SharedIndexInformer(SII) implicity. SII also lack
listers provided by informer factory and few other high level
abstractions.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-23 17:41:55 +05:30
Sanket SudakeandGitHub 49fe2cb61f Kind profile with opentelemetry local setup (#2173)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-20 15:04:42 +05:30
Gaurav GahlotandGitHub 5f17b4f3c5 Add context for traces in executor (#2172)
Signed-off-by: Gaurav Gahlot <gauravgahlot0107@gmail.com>
2021-08-20 14:53:06 +05:30
Sanket SudakeandGitHub 1b9d21b5e3 Change default informer resync period to 30 minutes (#2167)
Currently most of informers used in Fission are using resync
period of 30sec which is quite low and causes lot of disturbances
in overall system. Since informers already have watchers which would
be delivering events to the handlers. If any handlers require lower
sync period they should register handler with `AddEventHandlersWithResyncPeriod`
instead of we generaling informer.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-20 09:03:09 +05:30
c51c6b7f7e fix: Add pathType to create networking/v1 ingress (#2164)
* fix: Add pathType to create networking/v1 ingress

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-20 08:49:55 +05:30
Sanket SudakeandGitHub 0c8d7c26c5 Use latest env in spec-archive test (#2170)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-19 20:48:37 +05:30
Sanket SudakeandGitHub c4585c8394 Update go version to 1.16 and kubernetes dev dependencies to 1.21 (#2168)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-19 20:30:27 +05:30
Gaurav GahlotandGitHub dfcf961f75 Change default function timeout to 60 seconds and pass context to executor from router (#2169)
Patch changes default function timeout to 60 seconds. Also, we are propagating context from router to executor in a proper way.
2021-08-19 19:13:33 +05:30
0cc3ecc2e9 Fission meets OpenTelemetry (#2157)
* add opentracing section and otelCollectorEndpoint
* initialize OTLP exporter
* pkg/controller: changes for context propagation
* pkg/executor: changes for context propagation
* pkg/fetcher: changes for context propagation
* pkg/router: changes for context propagation
* pkg/storagesvc: changes for context propagation
* set no default value for otel collector endpoint
* update readme and add notes to charts
* move common code to pkg/utils/otel
* adding fn and env as attributes
* don't use otelhttp transport for websocket
* URL ignore with common filter UrlsToIgnore

Note: The web socket example does not work when using OTEL HTTP. Here is an issue related to that on open-telemetry/opentelemetry-js-contrib.

Signed-off-by: Gaurav Gahlot <gauravgahlot0107@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-19 13:00:30 +05:30
Sanket SudakeandGitHub a24934f1a0 Organize pool manager code and few improvements (#2166)
The patch adds few improvements in pool manager and adds better
function composability by reorganizing code.
1. Added created status in get pool call
2. Improved logging in certain areas and having logger per component
3. Separated deployment-specific code in diff file for extensibility

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-18 13:21:54 +05:30
Sanket SudakeandGitHub 9d54f5daac Consider newdeploy functions only for env update in newdeploy manager (#2165)
Currently when we update env, even if we dont have newdeploy related
functions env is getting is getting triggered. Added filter in finding
related functions to avoid this behaviour.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-17 21:55:38 +05:30
Sanket SudakeandGitHub 0f8b5e51a4 Reduce logs in image pull and system prune for tests (#2163)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-16 12:17:20 +05:30
Sanket SudakeandGitHub 47295309b3 Update alpine base image to 3.14 (#2160)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-12 10:55:49 +05:30
Sanket SudakeandGitHub ba7ee3ed95 Update changelog for 1.14.1 (#2145)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-03 17:33:13 +05:30
Sanket SudakeandGitHub 9b5eb069d6 Update chart version to 1.14.1 (#2143)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-03 15:16:15 +05:30
Sanket SudakeandGitHub 672bdbba6f Fixed service name generation for function name < 17 chars (#2142)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-03 14:19:04 +05:30
Sanket SudakeandGitHub 8271dfae07 Update changelog for 1.14.0 (#2138)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-02 21:35:28 +05:30
Sanket SudakeandGitHub f4702fe066 Update chart version to 1.14.0 (#2127)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-08-02 12:18:11 +05:30
Sanket SudakeandGitHub fea8dbef1a Remove unused code from Fission (#2136)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-29 19:15:50 +05:30
Gaurav GahlotandGitHub 6a527d36a8 reading right flag key for rounds (#2135)
Signed-off-by: Gaurav Gahlot <gauravgahlot0107@gmail.com>
2021-07-29 19:13:06 +05:30
Sanket SudakeandGitHub 2292f472c9 Option to keep or remove prefix when router triggers prefix based function (#2133)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-29 18:50:26 +05:30
Sanket SudakeandGitHub 2aaaeee5a7 Update runc to v1.0.1 (#2134)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-29 15:57:06 +05:30
Sanket SudakeandGitHub ca161690da Disable analytics in upgrade tests and use latest node env in integration tests (#2128)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-27 11:24:01 +05:30
Sanket SudakeandGitHub 8bd1a71065 Change Ingress version from v1beta1 to v1 for K8s 1.22+ compatibility (#2124)
* Change Ingress version from v1beta1 to v1 for K8s 1.22+ compatibility

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Minor fix

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-26 09:50:42 +05:30
Sanket SudakeandGitHub eb72fdc717 Enable race detector for unit tests (#2085)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-23 13:24:10 +05:30
Sanket SudakeandGitHub a7f819a78e Optimize swagger doc generator for Fission CR types (#2123)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-22 19:05:37 +05:30
Sanket SudakeandGitHub d4d58e166b Avoid dumping request headers in router (#2122)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-22 16:19:39 +05:30
Sanket SudakeandGitHub 1d41a198cb Add CRDs link for easy references (#2121)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-22 12:41:29 +05:30
Sanket SudakeandGitHub 6ced9d03d3 Support to dump request/response in router when debug mode enabled (#2119)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-21 20:45:08 +05:30
Sanket SudakeandGitHub 19c7616a4b Newdeploy/container function service names should fit in 63 characters (#2117)
* Add error message on deployment provision failure

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add 63 characters limit for objects created via newdeploy/container

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-19 15:43:10 +05:30
a82281ad1c containers as functions (#1681)
PR adds a new executortype which supports running containers as functions. New CLI under functions is added to create container as functions.

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-16 18:08:41 +05:30
Sanket SudakeandGitHub f3e1f9df90 Add go pprof support across fission components (#2112)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-16 13:34:03 +05:30
Sanket SudakeandGitHub c85b9e8cbc Update keda connectors version to latest (#2115)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-16 09:40:49 +05:30
Sanket SudakeandGitHub ece0475808 Labels and annotation support for functions and environments (#2113)
1. Support for adding labels and annotations to functions & environment via fission CLI through create & update command.
2. Change ensures labels and annotations assigned to the environment would reflect on pods created via executor type pool manager and new deploy.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-15 17:22:01 +05:30
Sanket SudakeandGitHub 2e0bb9304a Covert maps to sync maps in executor fscache to avoid dirty reads (#2105)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-08 10:40:17 +05:30
Sanket SudakeandGitHub 74c0142968 Replace controller with generated SharedIndexerInformers (#2103)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-06 13:56:10 +05:30
Sanket SudakeandGitHub 7c71d90d17 Fix race condition in fetcher readyness check (#2101)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-06 10:56:06 +05:30
Sanket SudakeandGitHub f86fde81e6 Shared informers (#2092)
* Use shared informers across executor for fission CRs

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add informer for configmap and secrets

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Use shared informers in router

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add shared informer for canary config

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add sharedinformer for ready pod check

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Refer informer instead of store in resolver

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Run informers before executors

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add missing canary config handler calls

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Enable websocket test

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Run dump collection always

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-05 20:28:26 +05:30
Sanket SudakeandGitHub 43814450e5 Increase timeout for kubectl test (#2100)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-05 14:57:11 +05:30
Sanket SudakeandGitHub d5077ee816 Updated Go dependencies and added cache in workflows (#2099)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-07-04 12:38:27 +05:30
Sanket SudakeandGitHub 2cf2c6979e Use latest release for upgrade tests (#2097)
Fix upgrade CI flow and added checks at places required
2021-07-02 15:48:02 +05:30
Sanket SudakeandGitHub 154fe0d447 Retrieve pod metrics only if metrics server is running and Go lint fixes (#2094)
* Retrieve pod metrics only if metrics server is running

Currently we query pod metrics every 30 sec which floods executor logs,
added check which confirms if metrics server is running then only we start
querying pod metrics for identifying CPU utilization.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Fixed couple of typos and misspells with Go CI

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Remove unnecessary conversions with Go CI

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-28 10:06:32 +05:30
Sanket SudakeandGitHub a493f0117d Move informers,clientset and listers to generated package (#2093)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-26 11:13:46 +05:30
Sanket SudakeandGitHub cc0400bdd4 Move clientset,listers,informers to pkg/client from pkg/apis (#2090)
* Move clientset,listers,informers to pkg/client from pkg/apis

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update golangci-lint version and timeout

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-24 12:07:14 +05:30
Sanket SudakeandGitHub 8b57a035ee Add a separate lint and unit test flow (#2089)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-22 15:00:58 +05:30
dc57f83d19 Add multi k8s version and os support in ci tests (#2082)
* add multi env and multi k8s support on integraation tests

* test workflow

* test workflow

* test workflow

* remove test branch name

* correct kind action with image and version

* use same kind version as per kind images

* use OS as ubuntu-latest

* fetch upstream

* add .github/workflows to paths

* resolve conflicts

* make kindimage appear first on workflow

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-22 13:25:55 +05:30
Sanket SudakeandGitHub 611f556cf9 Update changelog (#2088)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-21 19:22:29 +05:30
Sanket SudakeandGitHub d06ad04341 Changes for 1.13.1 release (#2087)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-21 15:22:59 +05:30
Sanket SudakeandGitHub 72c89268ec Ignore errors from zap logger Sync (#2086)
Added golang CI lint
Reference issue: https://github.com/uber-go/zap/issues/880

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-21 11:58:48 +05:30
Sanket SudakeandGitHub 3f99b483cb Correct release name in release script for non helm install (#2084)
* Correct release name in release script for non helm install

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Increase test timeout to 20 minutes

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Enable codeql for master only

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-20 21:38:48 +05:30
Sanket SudakeandGitHub 9bef235252 Use codeql for code scanning (#2078)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-18 14:59:07 +05:30
18935dcfdd Lint fix (#2074)
Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-18 13:41:23 +05:30
Sanket SudakeandGitHub db2fb81654 Update changelog for 1.13.0 release (#2073)
* Update changelog for 1.13.0 release

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Just add 1.13 notes

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Correct PRs for 1.13

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* minor change

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-16 18:08:02 +05:30
Sanket SudakeandGitHub 6fbd4878be Generate and archive fission cli per OS and platform (#2071)
* Generate and archive fission cli per OS and platform

* Separate tagging from release script
2021-06-16 13:10:31 +05:30
Sanket SudakeandGitHub 023a9905f6 Changes for releasing 1.13 (#2070)
* Changes for releasing 1.13

- Changed release version in charts 1.13
- Made changes in release scripts and makefile

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update helm chart maintainers

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-15 19:50:23 +05:30
Harsh ThakurandGitHub 6facdac464 Fix golang lint errors (#2068)
* Fix golang lint errors

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Typo for fields

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Multi error fix

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Multi error fix

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Add nolint to logtostderr errcheck

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-06-15 15:03:42 +05:30
377600d0a3 Add router cache back for performance comparision (#2036)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-06-14 18:30:23 +05:30
b6cf078395 Added GCP PubSub Image, enabled Keda by default and updated versions of all Keda connector images (#2065)
* Added GCP PubSub Image, enabled Keda by default and updated versions of all Keda connector images

Signed-off-by: Vishal Biyani <vrbiyani@gmail.com>

* Fixed the hyphens, it's been long since I have written Helm templates :)

Signed-off-by: Vishal Biyani <vrbiyani@gmail.com>

* Fixed the hyphens, it's been long since I have written Helm templates :)

Signed-off-by: Vishal Biyani <vrbiyani@gmail.com>

* Update charts/fission-all/values.yaml

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>

* Update charts/fission-core/values.yaml

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-06-14 17:20:44 +05:30
673ca25cf2 Support for multiple HTTP verbs in routes/HTTPTrigger (#2064)
* Support for multiple HTTP verbs in routes/HTTPTrigger

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update pkg/apis/core/v1/types.go

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>

* Fix fallbackurl for ingress

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-06-14 14:48:27 +05:30
4038f0384b Add a SharedIndexInformer for services and deployments to NewDeploy executor (#2061)
* Add a SharedIndexInformer for services and deployments to NewDeploy executor.

This brings the NewDeploy executor behaviour into sync with GenericPoolManager behaviour
by caching Kubernetes services and deployments used in per-request function validation.

* Create informers in executer by executor label

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: James Sinclair <irgeek@btc.com.au>
2021-06-11 16:52:53 +05:30
Sanket SudakeandGitHub f5dc6ab994 Correct docker platforms and optimize make commands (#2066)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-11 13:05:08 +05:30
aa45703a99 Enable prefix based routing (#2047)
* Enable prefix based routing

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Optimize checking condition

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Disable few tests

* disable router modification for now

* run code generator

* Collect fission dump in CI

* Enable all tests back

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Remove unwanted code

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add prefix support at more places and couple of todo's

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Few more changes

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Improve function trim support

* Support for prefix based urls in fission function test

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* multi route for fission function test

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Improve validations in trigger creations

* Adjust leading / in url from fission

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Change suburl to subpath for function test

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-10 13:54:49 +05:30
Harsh ThakurandGitHub f01de5c802 Add websocket test (#2053)
* Add websocket test

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Use trap for exit code

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Remove readme

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Format, go version fix

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Update image name

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Use spec dir

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Change directory before running file

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Use

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-06-10 12:27:20 +05:30
827b64d633 Add poolsize warning for environment create/update CLI (#1837)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-08 11:53:38 +05:30
7bf82c7ea9 Move RBAC v1beta1 to v1 (#2059)
Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-08 08:25:52 +05:30
3055a3ada0 Added body in the error topic header (#1830)
Signed-off-by: therahulbhati <rjbhati009@gmail.com>

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-07 22:28:11 +05:30
5b1883802e Added fission upgrade workflow (#2050)
* Adding upgrade workflow file

* Update upgrade_test.yaml

* Update push_pr.yaml

* Update upgrade_test.yaml

* adding kube A

* Update upgrade_test.yaml

* adding script for upgrade testing

* adding fission cli from soource

* changing order

* correcting typo

* adding fission fn

* restructirung upgrade test scripts

* restructirung upgrade test scripts

* adding fission cli build

* script arrangment

* script arrangment

* changing job name

* adding supporting scripts

* adding supporting scripts

* adding supporting scripts

* script re-ordered

* script re-ordered

* script modifcation

* moved scripts under /test

* separated function test blocks

* added a sleep

* reverting main workflow changes

* added stable version installation step

* added stable version installation step

* stable fn test

* adding latest version build

* adding latest version build

* adding new tests

* adding new tests

* adding new tests

* adding new tests

* adding new tests

* adding new tests

* adding new tests

* adding new tests

* adding new stable release

* adding new stable release

* disabling skaffold build and using docker build

* disabling skaffold build and using docker build

* disabling skaffold build and using docker build

* disabling skaffold build and using docker build

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* fission upgrade using helm

* adding helm upgrade with dependency update

* cleanup scripts

* added crd deletion step before helm upgrade

* added crd deletion step before helm upgrade

* added crd deletion step before helm upgrade

* adding run tests

* added test apache deployment

* change in repo name

* helm list added

* changed pullpolicy

* troubleshooting

* troubleshooting

* troubleshooting

* troubleshooting

* troubleshooting

* troubleshooting

* removed hardcoded enteries from helm charts

* fixing alignment

* cleanup

* cleanup

* cleanup

* cleanup

* cleanup

* removed temp files [cleanup]

* removed timeout

* adding preupgradechecks image build

* adding fission object creation after upgrade

* removing fissin object creation after upgrading...

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* workflow step split-up

* clean-up

* clean-up

* output formatting

* added a sleep to re-create resources

* added a sleep to re-create resources

* added a sleep to re-create resources

* excluded examples from upgrade work flow

* removed helm stable update step from workflow

* removed helm stable update step from workflow

* added pr corrections

* typo correction

* troubleshooting

* troubleshooting

* troubleshooting

* pr corrections

* pr corrections

* pr corrections

* removed sleep after helm upgrade

* fixing typo

* remvoed sleep after fn creation

* clean-up

* clean-up

* added workflow_dispatch

* added workflow_dispatch

* added workflow_dispatch

* added workflow_dispatch

Co-authored-by: Jithindevasia <jithindevasia@Infraclouds-MacBook-Pro.local>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-07 21:20:06 +05:30
bef677678b make router resources configurable (needed for router HPA setup) (#1857)
Co-authored-by: Daniel Candrea <daniel.candrea@complyadvantage.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-06 14:13:07 +05:30
Sanket SudakeandGitHub 61c59b514f Collect fission dump if CI tests fails & enable manual trigger (#2058)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-06 10:42:43 +05:30
8f998e799d Feature/router core component pod config (#1936)
* Update router.yaml

* Update router.yaml

* Update README.md

* Update values.yaml

* Update values.yaml

* Update Chart.yaml

* Update Chart.yaml

* Update Chart.yaml

* Update Chart.yaml

* Update Chart.yaml

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-03 21:15:17 +05:30
Sanket SudakeandGitHub c2f455ec1b Capture timestamp whenever cleanup is triggered in tests (#2054)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-03 14:31:40 +05:30
Sanket SudakeandGitHub 3a8af97eb9 Wait for small time to avoid timeout in specs tests (#2052)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-03 10:57:10 +05:30
Sanket SudakeandGitHub e6c13057ce Change container name for runtime container to environment name in newdeploy (#2044)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-02 16:23:53 +05:30
5f47a25711 Multiarch release (#1929)
* Adding release script for multiarch

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Comment on buildx

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Remove need of triggering buildx script explicitly in build

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-02 14:40:11 +05:30
Sanket SudakeandGitHub 4c9b67ead4 Add role required by fetcher pod to fetch events & pods in helm chart (#2048)
* Add role required by fetcher pod to fetch events & pods in helm chart

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add prometheus repo in Github PR flow

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-06-02 11:42:41 +05:30
Harsh ThakurandGitHub adef5e0e6a Add targets for CRDs and CLI (#2049)
Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-06-01 14:58:10 +05:30
4e2632e100 Keda podspec (#2021)
* Add podspec to MQT

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Add preupgrade check

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Use zap logger

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-27 14:21:34 +05:30
4ff204a0c4 updated charts to v2 and updated prometheus chart url, version (#1923)
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-27 12:31:25 +05:30
1e0baf5f6c Crds update (#2033)
* Add code generated using latest code-generator

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update client-go and respective dependencies to v0.19.2

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Upgrading CRD version

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Minor changes

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Resolved client-go calls as per new generated code

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Function validations fix

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Fix environment and package validations

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Add basic validation to all CRDs

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Remove CRD installation related code

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Modify GHA for CRD installation

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Fix Package and HTTPTrigger validations

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Change Go version in CI to 1.15

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Style: kubebuilder marker change

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Fix test with deprecated fields

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Update kind node image to v1.16.15 in CI

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Update kind node image to v1.19.11 in CI

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Replace context Background with TODO for future implementation

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Optimize initial CRD check code

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Use Get call only to check CRDs

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

* Add kustomize for CRD apply

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-26 15:07:03 +05:30
a9c56e5bb2 Add a warning if spec is applied on a dirty worktree (#1966)
* Add a warning if spec is applied on a dirty worktree

* Update go dependencies after rebase

* Use the console package for showing the warning

* Fix merge conflicts

* Handle errors and use better messages

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-24 21:36:14 +05:30
4a1fc11b2d OnlyOnce preupgrade check (#2037)
* OnlyOnce preupgrade check

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Update preupgradechecks.go

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-24 14:32:11 +05:30
Sanket SudakeandGitHub 42c22a7bbb Change examples references to examples repostiory (#2038)
Since we recently migrated all fission examples to fission/examples repository, we need to change
respective references.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-24 13:25:32 +05:30
Sanket SudakeandGitHub 369537e515 Cleanup and remove hardcoding from delete-crds script (#2035)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-23 13:23:30 +05:30
3880279e89 do not use deprecated functions/methods (#2027)
Signed-off-by: Gaurav Gahlot <gauravgahlot0107@gmail.com>

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-21 13:53:28 +05:30
Sanket SudakeandGitHub 524e7bcfd3 Use latest 1.14 go version in CI (#2032)
We are facing issue in CI for multiple PRs due to mlock. It depends on kernel version or ulimit. Trying to switch to latest go version from 1.14 and see if it helps!

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-20 11:49:30 +05:30
3bac1d2d9d Fix log sort order when multiple series are returned (#1956)
Series are sorted internal by "order by", but the set of all series returned is not. Tried some ways to sort completely on database, found no way .. client side sort works at least

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-05-20 07:55:36 +05:30
d7ac0ee17a feat: Add image pull policy when create KEDA connector deployments (#1944)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-05-20 01:22:25 +05:30
Rahul BhatiandGitHub 462b7d861d Serve only one request and garbage collect (#1978)
Adding once only execution pattern to pool manager based functions. This is for use cases where you don't want to share the samne pod for another execution instance!
2021-05-19 22:48:49 +05:30
Harsh ThakurandGitHub f523f8b2e3 Add preupgrade check for RPP (#2014)
* Add preupgrade check for RPP

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Change from panic to error, and better logging

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Minor changes

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Modify function to return CRD

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Remove redundant error logging

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-05-18 18:53:32 +05:30
Harsh ThakurandGitHub 279b009882 Add metrics to Reaper (#2019)
* Add metrics to Reaper

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>

* Change duration to seconds and fix labels

Signed-off-by: Harsh Thakur <harshthakur9030@gmail.com>
2021-05-18 17:30:21 +05:30
Sanket SudakeandGitHub ee4feb17c4 Handle SIGTERM signal in mqtrigger subscriber (#2029)
In test_mqtrigger.sh and test_mqtrigger_error.sh tests, we timeout program
if not received right output. Ensuring we capture timeout signal and do program
cleanup accordingly. Also printing due to which signal program failed.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-18 16:26:44 +05:30
Sanket SudakeandGitHub 2a014e56b0 Add Google Analytics reporting in place of existing custom reporting (#2015)
Replacing the older analytics with a new Google Analytics based mechanism.
2021-05-12 12:24:27 +05:30
040763ebb2 fix: hack/Dockerfile to reduce vulnerabilities (#2016)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-DEBIAN10-OPENSSL-567125
- https://snyk.io/vuln/SNYK-DEBIAN10-PERL-570792
- https://snyk.io/vuln/SNYK-DEBIAN10-PERL-570797
- https://snyk.io/vuln/SNYK-DEBIAN10-PERL-570802
- https://snyk.io/vuln/SNYK-DEBIAN10-SUBVERSION-1071814

Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2021-05-10 18:19:37 +05:30
Sanket SudakeandGitHub dfd8d340a0 Change alpine base image from 3.10 to 3.13 (#2017)
Alpine 3.10 has reached end-of-support. Using alpine 3.13 instead.
Reference: https://alpinelinux.org/releases/
2021-05-10 12:50:36 +05:30
VishalandGitHub ca6bc12cfc Restoring one example as it is used in many places including Helm charts (#2011)
Some tests were pointing to examples directory which has been moved out. Also kept one node.js examples as it is widely used in Helm charts etc.
2021-05-09 23:36:39 +05:30
VishalandGitHub 5b4bf5964e Moving out Environments to own repo (#1810)
Moved out environments and examples out of main Fission repo to their own repo. This is to allow changes to environment releases to be independent of main Fission releases.
2021-05-01 15:42:35 +05:30
Harsh ThakurandGitHub f72bfd8f3a Websocket Support: Pod Reaper (#1982)
Websocket event support for cleaning up pods only after WS connection is terminated. The support for websocket is right now in the environment itself and router simply acts as a proxy for WS communication!
2021-04-27 21:06:22 +05:30
Harsh ThakurandGitHub 0d93c109fb Maintain CRD folder to keep track of Schemas (#1938)
Adds CRD Yaml files needed for upgrade as the OpenAPISchema validation has been added.
2021-04-27 17:20:03 +05:30
Rahul BhatiandGitHub 1cd8f4d4f7 Increase default concurrency (#1980)
Increase the default concurrency to 500 from 5 set in the function. Usually, it is good to error on the higher side and if needed, users can always fine-tune it to their needs.
2021-04-06 14:52:14 +05:30
Rahul BhatiandGitHub 25acd7fd16 Feature request per pod (#1946)
This feature enables routing more than one request to a pod at the same time. This is the first draft of the work and might involve more optimizations later.
2021-03-31 12:35:30 +05:30
Ta-Ching ChenandGitHub 3e6dae9616 Fix wrong checksum was assigned (#1968) 2021-03-29 16:20:21 +05:30
James SinclairandGitHub 1dce070245 Add a SharedIndexInformer for pods to router. (#1951)
Improving efficiency with cache
2021-03-22 16:50:24 +05:30
Rahul BhatiandGitHub cc552d9777 Add function in payload instead of just metadata (#1919)
Passing information of function from router to executor is more efficient than calling the K8S API. This change does that instead of passing only metadata and then executor calling the K8S API again.
2021-03-10 14:52:23 +05:30
c7d448ca49 Add fields to pod spec (#1932)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-23 15:16:45 +05:30
Rahul BhatiandGitHub fe0bd3ff67 Release 1.12.0 (#1937) 2021-02-11 22:22:37 +05:30
Rahul BhatiandGitHub b5adc2bf93 Updated tags of connector images (#1934)
Signed-off-by: therahulbhati <rjbhati009@gmail.com>
2021-02-10 21:50:47 +05:30
6f9bad3d05 Spec validation option (#1865)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-08 11:14:38 +05:30
f28799cc4c Fix status code for rate limit (#1924)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-05 16:52:43 +05:30
e2376c27b4 Envupdate crossupdate fix (#1866)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-05 15:39:59 +05:30
e4a0aa3480 Migrating to keda2.0 (#1868)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-05 10:28:54 +05:30
045a365a1b Exit with status code 1 on failed package builds (#1926)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
2021-02-04 21:57:38 +05:30
Rahul BhatiandGitHub 1059e9873a Updated role and permission for fission-crd cluster role (#1867) 2021-02-04 18:07:43 +05:30
e0522cc20e Updates required for multi-architecture builds. (#1891)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
2021-02-03 23:03:04 +05:30
ef83d4314e Put message to error topic when exceed max retries in kafka mqt (#1885)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
2021-02-02 23:20:40 +05:30
3b4ca09931 Improved readyPod queue implementation and bugfix (#1890)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-02 17:11:54 +05:30
19adf0cd7e Fixing issue of pulling docker image twice in CI (#1903)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2021-02-02 12:25:03 +05:30
Rahul BhatiandGitHub 3fb1fdf16a Updated go plugin version for Github Action CI/CD (#1922) 2021-01-29 10:28:22 +05:30
Gaurav GahlotandGitHub 695b0759e4 Fixed golangci-lint issues: /fission/pkg (#1902) 2021-01-19 23:29:20 +05:30
TosoneandGitHub 6dbdf4d88b Remove unnecessary import package. (#1897) 2020-12-28 18:48:02 +05:30
Rahul BhatiandGitHub e55430f61a Replace build status badge to use GH Actions status (#1887) 2020-12-21 22:51:27 +05:30
Rahul BhatiGitHubVishalsahil-lakhwaniagiwalpooja20abhisheks-infracloud
a68f3edcd4 Github Actions Workflows (#1876)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
Co-authored-by: sahil-lakhwani <sahilakhwani@gmail.com>
Co-authored-by: agiwalpooja20 
Co-authored-by: abhisheks-infracloud
2020-12-17 19:00:44 +05:30
Gaurav GahlotandGitHub e438df87fa Fixed golangci-lint issues: /fission/pkg/executor (#1842) 2020-12-03 22:29:35 +05:30
Rahul BhatiandGitHub bb9f4136f5 Readypod optimization in executor (#1860)
A ready pod which can be specialized was fetched for every function earlier, this has been changed to a queue and cache implementation in client-go to improve performance.
2020-11-19 15:23:02 +05:30
Gaurav GahlotandGitHub aaf9f18d93 Fixed golangci-lint issues: /fission/pkg/router (#1831) 2020-11-03 16:15:50 +05:30
2f23120a64 Update nats streaming image name in values.yaml and deployments yaml (#1839)
Co-authored-by: GT <gtalekar@infracloud.io>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-28 23:37:47 +05:30
7743583f4d in-progress golint warning fixes (#1799)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-28 11:44:35 +05:30
fe5542845e Fix golint warnings for publisher package (#1822)
Co-authored-by: Shajitha Mohammed <shajithamohammed28@gmail.com>
2020-10-27 21:19:28 +05:30
Rahul BhatiandGitHub e65bfcdacf Release 1.11.2 (#1843) 2020-10-21 08:47:26 +05:30
9d199c86c5 Fix env resources getting pruned due to CRD Validation (#1833)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-16 23:46:50 +05:30
fca0a60e5b Fixed typos across fission repo (#1832)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-16 17:25:11 +05:30
VishalandGitHub 6e3c42f238 Release 1.11.1 (#1838)
Release 1.11.1 along with some changes to release script
2020-10-15 11:06:05 +05:30
ab94b68571 Update aws-kinesis image name in values.yaml (#1817)
Co-authored-by: GT <gtalekar@infracloud.io>
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
2020-10-14 17:20:26 +05:30
0662a44017 Update aws-sqs image name in values.yaml (#1714)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-14 14:49:08 +05:30
78e530f506 Improvements from scale testing (#1812)
Poolmanager when tested at high load had some issues and this PR fixes one set of them which were found so far. 

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-10-14 13:23:03 +05:30
Rahul BhatiandGitHub ab0b43d51c Added flag for insecureSkipVerfiy (#1829) 2020-10-13 21:03:19 +05:30
Rahul BhatiandGitHub d975534bf7 Added field to preserve fields during CRD validation (#1818) 2020-10-13 12:38:24 +05:30
Darsh ShahandGitHub ec22e22bbd fix(docs): Update Readme (#1742)
Minor adjustments to readme in first section
2020-10-01 15:35:17 +05:30
Parikshit HoodaandGitHub 0face3e966 Update README.md - fix typo (#1737)
changed **meetnigs** to **meetings**.
2020-09-30 22:37:27 +05:30
Ahmet TürkmenandGitHub 823aacdeba [skip ci] fix contributing.md link on readme (#1731) 2020-09-29 15:08:53 +05:30
c605d1d2c6 Added code to prevent deletion of active fn pod (#1724)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-28 14:09:55 +05:30
ef65602b79 Added concurrency field to schema validation (#1727)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-24 23:06:37 +05:30
VishalandGitHub 778f047376 Improving contributing docs (#1726)
Improved contributing docs, added DO logo in sponsors.
2020-09-23 13:38:39 +05:30
VishalandGitHub 2b805fc7ca Release 1.11.0 (#1716) 2020-09-16 22:27:02 +05:30
f3fe3123b3 Adding Concurrency in Pool Manager (#1698)
Concurrency in the pool manager allows specializing pods concurrently based on a specified limit. 

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-16 18:48:08 +05:30
VishalandGitHub c1ac7fcd38 Bumping up release of Helm for release script (#1715)
Upgrading to Helm3 for all CI testing
2020-09-16 16:07:48 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>sahil-lakhwaniVishal
7e7d9720be Bump jetty-server from 9.0.4.v20130625 to 9.4.17.v20190418 in /environments/jvm-jersey (#1706)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: sahil-lakhwani <sahilakhwani@gmail.com>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-11 14:51:54 +05:30
4fbaae4b12 Non-root users access Secrets and ConfigMaps (#1697)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-11 10:24:28 +05:30
07b294778a logs: change timestamp to ISO (#1708)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-11 08:04:29 +05:30
VishalandGitHub 8c0a368969 Skaffold: Typo in Helm values for Prometheus (#1709) 2020-09-10 18:28:15 +05:30
99c2020795 Addition of openapischemav3 to fission CRDs to support kubectl explain (#1702)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-10 14:31:27 +05:30
Sahil LakhwaniandGitHub 54b384efec jvm-jersey-env (#1677)
A new Jersey framework based JVM environment which is lightweight and simpler.
2020-09-08 21:24:25 +05:30
975286c2ac Add headers to Kafka MQT error topics (#1701)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-09-07 19:13:36 +05:30
VishalandGitHub 70b01eb9c8 Skaffold kind (#1700) 2020-09-04 17:37:07 +05:30
1755d3a017 Adding NodeJS version 12 env (#1683)
Co-authored-by: Rahul Bhati <rjbhati009@gmail.com>
2020-08-28 10:24:22 +05:30
Rahul BhatiandGitHub 22f385b809 Update values.yaml with mqt keda configuration (#1670) 2020-08-27 21:45:46 +05:30
Rahul BhatiandGitHub f751546913 Removed code related to mqtrigger (#1680) 2020-08-06 20:59:08 +05:30
587b166a4e 1665: Python env sentry integration (#1669)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-08-04 09:46:12 +05:30
b208528d3d Add serviceaccount for nats-streaming (#1646)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-07-31 17:02:29 +05:30
882abff431 Added prefix tag in fluentbit filter stanza (#1671)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-07-30 21:03:13 +05:30
892da2478b Allow user to override value of influxdb image (#1642)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-07-23 14:50:50 +05:30
28f5cd7852 (fix) Dependencies and steps for building examples/java locally (#1653)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-07-17 15:18:31 +05:30
Rahul BhatiandGitHub 8e0571c7c9 Fission MQT integration with keda (#1657)
Fission MQT integration based on Keda with Kafka connector
2020-07-14 21:35:48 +05:30
d6fc9f71d0 Allow user to override nats-streaming image (#1645)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-06-30 15:14:46 +05:30
108ef50bd5 Allow user to define busybox image (#1643)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-06-30 10:42:30 +05:30
VishalandGitHub 90b7680392 Release 1.10.0 (#1658) 2020-06-30 08:56:30 +05:30
a8a9831c16 [WIP] (feat) Added Exponential BackOff for Retry in builder (#1614)
Co-authored-by: Rahul M Chheda <rahul.chheda@mayadata.io>
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-06-29 12:01:29 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
a1f39bb7d3 Bump rack from 2.0.8 to 2.1.4 in /environments/ruby (#1654)
Bumps [rack](https://github.com/rack/rack) from 2.0.8 to 2.1.4.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.0.8...2.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-25 12:57:56 +05:30
VishalandGitHub a50c9f76ec For fixing staticcheck issue (#1652)
The S3 feature PR caused some static check issues after the merge, those are fixed now.
2020-06-23 15:31:59 +05:30
f6e679e70e S3 backend for storage service (#1629)
Co-authored-by: Alok Kumar <rajalokan@gmail.com>
2020-06-15 19:13:13 +05:30
17bb1ac39f Python env changes for pip3 (#1633)
Co-authored-by: agiwalpooja20 <agiwalpooja20@gmail.com>
2020-06-05 16:03:46 +05:30
33c23c1341 Fixing verify-staticcheck.sh (#1622)
Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-06-04 15:16:09 +05:30
Rahul BhatiandGitHub 9dd084810f Added support for setting bodyParser limit param via environment variable (#1618)
In the NodeJs environment, the body-parser was set to 1MB, this change makes it configurable with an env variable.
2020-05-24 00:16:03 +05:30
VishalandGitHub d4e1cd4f1e Skaffold registry (#1617) 2020-05-22 10:39:01 +05:30
VishalandGitHub aa8c27fd5d Added codecov badge (#1604) 2020-05-13 21:24:49 +05:30
darkworonandGitHub 806104626f Make mergePodSpec pick up enableServiceLinks (#1601)
Attribute enableServiceLinks can be now configured in PodSpec so that environment variables are not injected in function pods and DNS is used for discovery
2020-05-13 14:42:07 +05:30
VishalandGitHub 2331dffe4c Update issue templates (#1602) 2020-05-13 10:26:04 +05:30
Rahul BhatiandGitHub 2d69542265 Added support for kube-context flag, to specify kubernetes context (#1595) 2020-05-11 18:54:06 +05:30
VishalandGitHub 3e8cbe112f Release 1.9.0 (#1597) 2020-05-11 01:26:46 +05:30
VishalandGitHub 31ff3f0290 Kind config (#1587)
A simple Kind cluster config for local development of Fission
2020-04-30 16:30:38 +05:30
Ta-Ching ChenandGitHub f606c3705f Show short flag on CLI usage (#1580) 2020-04-24 15:04:52 +08:00
758ee32aa9 External nats streaming (#1576)
Support for external NATS streaming instead of the one deployed with Fission

Co-authored-by: Shaun Cutts <shaunc@factfiber.com>
2020-04-19 21:53:27 +05:30
VishalandGitHub 163b1d0731 Skaffold Default Repo (#1575)
Skaffold default-repo enables users to use the Skaffold file without any change and by maintaining the docker repo in their local configuration.
2020-04-19 19:26:38 +05:30
e732cf59e0 [chart] Add PSP for logger (#1568)
Add PSP for logger

Co-authored-by: Vishal <vishal-biyani@users.noreply.github.com>
2020-04-19 15:17:41 +05:30
VishalandGitHub a571c7b72c [WIP] Skaffold Fix (#1567)
Switched to dynamic tag and dynamic values for those fields in the deploy section. Also, switched to latest version of Skaffold.
2020-04-13 00:19:52 +05:30
VishalandGitHub 9340e62895 Python Env Build issue due to gevent (#1572) 2020-04-12 23:26:03 +05:30
Jared DavisandGitHub efd86e1b27 Create fission environment for go version 1.14 (#1570) 2020-04-12 23:02:06 +08:00
VishalandGitHub f1e243c145 Adding community meeting link and document (#1563)
Adding community meeting link and document as well as Fission image to readme
2020-03-26 23:34:08 +05:30
Ta-Ching ChenandGitHub e867b220a1 Return Kubernetes full error message (#1560)
This PR let the controller returns the detail error message
of kubernetes error which makes users understand what's
happening instead of meanless error msg.
2020-03-24 00:15:25 +08:00
Ta-Ching ChenandGitHub a04c40d016 Use stock InfluxDB image (#1557) 2020-03-20 16:52:16 +08:00
deluccaandGitHub 4fb1a8fbe8 Bump Python environment to latest Alpine (#1547) 2020-03-03 22:48:50 +08:00
dependabot[bot]andGitHub b959dd2e49 Bump nokogiri from 1.10.4 to 1.10.8 in /examples/ruby/parse (#1544)
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.10.4 to 1.10.8.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.10.4...v1.10.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-02-26 22:47:53 +08:00
Ta-Ching ChenandGitHub 5c09099084 Avoid exposing sensitive data to client (#1543)
This PR changes the behavior of controller API which
wrongly exposes sensitive data to the client. Now, the
API only returns success if secret/configmap exists;
otherwise, an error will be returned.
2020-02-24 20:02:33 +08:00
Ta-Ching ChenandGitHub fc5711ce7c Support Function-level idle timeout setting (#1538)
This PR allows users to specify the idle timeout setting at Function-level.
Fix #1050
2020-02-21 02:01:26 +08:00
Ta-Ching ChenandGitHub cc14044b6b Add message queue service factory (#1537) 2020-02-20 23:30:39 +08:00
Ta-Ching ChenandGitHub e0dc7f2f81 Retry querying package info when "not found" (#1540)
In some cases, creating a package and querying the package info
immediately the Kubernetes API server will return "not found"
error. So retry the query again after some time.
2020-02-20 22:20:43 +08:00
Ta-Ching ChenandGitHub 03ce1e27c7 Fix function test timeout doesnt works (#1539) 2020-02-19 17:03:02 +08:00
Ta-Ching ChenandGitHub 735f9abef7 Update NATS-Streaming dependencies version (#1533) 2020-02-12 20:35:20 +08:00
Ta-Ching ChenandGitHub f2ddaa7921 Fix Git issue on case-insensitive OS (#1532) 2020-02-12 16:08:05 +08:00
Ta-Ching ChenandGitHub 75321d306a Reorganize message queue trigger directory structure (#1531) 2020-02-12 15:40:00 +08:00
Ta-Ching ChenandGitHub d2e9364e5e Put package deploy archive to fix path (#1529)
In some cases (#1384), users may want to access the file in the directory of deploy archive, however, we use the function UID name as the directory name and make it difficult for users to use as they don't know the real path of the directory.

This PR uses the fix name "deployarchive" to make things easier.
2020-02-12 09:29:27 +08:00
Ta-Ching ChenandGitHub b61f994746 Append Environment labels to function pod labels (#1530) 2020-02-11 17:49:14 +08:00
Ta-Ching ChenandGitHub 633593e412 Fix github_changelog_generator error (#1527) 2020-02-04 00:02:42 +08:00
Ta-Ching Chen e7c0ff7d41 CHANGELOG 1.8.0 2020-02-03 10:56:52 +00:00
Ta-Ching Chen bda974a72c Release 1.8.0 2020-02-03 15:19:16 +08:00
Ta-Ching Chen dbb2b49b55 Fix wrong path in release build script 2020-02-03 15:19:16 +08:00
Ta-Ching ChenandGitHub e770c619e5 Revert "Temporarily disable building JVM image during CI builds" (#1525)
This reverts commit 3687602508.
2020-02-03 15:02:48 +08:00
Ta-Ching ChenandGitHub 0d8d07d474 Update TerminationGracePeriod usage text (#1524) 2020-02-03 13:05:15 +08:00
Ta-Ching ChenandGitHub dd07c68201 Set package initial status if its empty (#1522)
If the user applies package YAML file has no status field,
the package won't be able to be compiled or deployed due
to lack of status. This PR aims to add a check at buildermgr
to set initial package status to those packages.
2020-02-02 00:39:02 +08:00
Ta-Ching ChenandGitHub e9804a5b76 Update slack invitation link (#1521) 2020-01-30 09:34:53 +08:00
Ta-Ching ChenandGitHub 85c384c64a Fix Java spec example (#1519) 2020-01-29 18:04:32 +08:00
Sahil LakhwaniandGitHub fed5fd4c5e JVM env: Add XML dependency (#1512) 2020-01-29 16:40:30 +08:00
Ta-Ching ChenandGitHub eec35b285e Fix executor wrongly deletes rolebindings (#1517)
Executor wrongly deletes role bindings if the user
creates an environment in the reserved namespaces. This
PR is a quick fix to solve the problem by checking if
an environment is under reserved namespaces.
2020-01-29 00:01:21 +08:00
Ta-Ching ChenandGitHub e2f1f778f3 Show global options in usage (#1516) 2020-01-28 19:37:07 +08:00
Ta-Ching ChenandGitHub 7b87d7c52c Add fake client for local command operation (#1515)
This PR adds a fake controller client for local CLI operations like 
offline spec generation or for unit test purposes. The fake client 
now only implements the "Version()" function and more functions 
will be implemented once we figure out how to achieve the goals 
mentioned above.
2020-01-28 17:38:43 +08:00
Ta-Ching ChenandGitHub c88fe59c71 Set prometheus.enabled=false in core chart (#1513) 2020-01-28 01:23:41 +08:00
Ta-Ching ChenandGitHub 9eac1512fb Fix poolmanager wrongly delete env pool (#1511)
The root cause of the problem is that eagerPoolCreator
tries to create the deployment when the poolmanager
is trying to delete it. To avoid this, start eager pool
creator after executor starts serving requests.
2020-01-28 00:58:37 +08:00
Ta-Ching ChenandGitHub 8f8afaf139 Use patch for robust pod metadata update in poolmgr (#1509)
Use "Patch" to update pod metadata instead of "Update" to avoid 
dropping fields that the old client-go doesn't support.
2020-01-28 00:04:22 +08:00
Ta-Ching ChenandGitHub e651433727 CI build steps optimize to reduce waiting time (#1508) 2020-01-27 21:05:17 +08:00
Ta-Ching ChenandGitHub 8ac7db46e0 Add Go 1.13 support and upgrade Go 1.12 version (#1507) 2020-01-27 20:07:39 +08:00
1e8148c051 Add resource exists error on spec validate (#1506)
Co-authored-by: Anubhav <50611570+anubhav6663@users.noreply.github.com>
2020-01-27 19:09:35 +08:00
Ta-Ching ChenandGitHub 520cc0e130 Add --dry option to view the generated spec without saving (#1504) 2020-01-24 20:43:42 +08:00
Ta-Ching ChenandGitHub 2338fbb06f Add sponsor logos (#1499) 2020-01-24 03:59:19 +08:00
Ta-Ching Chen 3687602508 Temporarily disable building JVM image during CI builds 2020-01-24 01:33:19 +08:00
Ta-Ching Chen 49ec161c5e Let unit tests run in different namespaces to avoid resource conflict 2020-01-24 01:33:12 +08:00
Ta-Ching ChenandGitHub 4923708836 Move to new CI cluster (#1500)
* Move to new CI cluster
* Regenerate test id before creating a new HTTP trigger
2020-01-23 13:35:26 +08:00
Ta-Ching ChenandGitHub 11f9ef1045 Follow kubernetes APIs directory structure (#1497) 2020-01-20 17:06:46 +08:00
Ta-Ching ChenandGitHub bb3e6d6907 Codebase cleanup & optimization (#1493)
Remove old v1 types that are no longer used and move fetcher structs to fetcher directory.
2020-01-16 16:47:32 +08:00
Ta-Ching ChenandGitHub 574fb55fcf Use code-generator to generate clientset/informer/lister (#1492)
To reduce maintenance effort and avoid writing duplicate informer code,
use code-generator to generate clientset/informer/lister code.
2020-01-16 15:18:38 +08:00
Ta-Ching ChenandGitHub b96ca0735d Add config for fetcher resource requests & limits (#1489)
This PR adds fetcher resource requests&limits chart setting 
and remove unreasonable limits value from the charts.
2020-01-15 11:21:48 +08:00
Ta-Ching ChenandGitHub c421e655c5 Update analytics URL (#1490) 2020-01-14 21:02:54 +08:00
Ta-Ching ChenandGitHub 66d4669f36 Push php-builder to dockerhub (#1477) 2019-12-30 19:27:59 +08:00
Ta-Ching ChenandGitHub 953f63c7bd Fix terminationGracePeriod is 0 due to wrong flag type (#1476) 2019-12-25 10:21:35 +08:00
Sahil LakhwaniandTa-Ching Chen fca1123ee5 Fix hello-spec-example (#1474) 2019-12-22 08:28:51 +08:00
AnubhavandTa-Ching Chen 5eaf11b8aa Add failed/success output to spec validate (#1471) 2019-12-20 12:00:47 +08:00
Ta-Ching ChenandGitHub 0274ceb312 Add message queue nats-streaming example (#1472) 2019-12-20 02:19:11 +08:00
dependabot[bot]andTa-Ching Chen 38f96c7e46 Bump rack from 2.0.6 to 2.0.8 in /environments/ruby (#1470)
Bumps [rack](https://github.com/rack/rack) from 2.0.6 to 2.0.8.
- [Release notes](https://github.com/rack/rack/releases)
- [Changelog](https://github.com/rack/rack/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rack/rack/compare/2.0.6...2.0.8)

Signed-off-by: dependabot[bot] <support@github.com>
2019-12-20 00:45:46 +08:00
AnubhavandTa-Ching Chen 7b3cc8fdf0 Add spec list feature (#1468)
Adding fission spec list functionality. It lists Functions, Environment, Packages, HTTPTrigger, MessageQueueTriggers, Canary Config, TimeTrigger, KubeWatch created by an application specification.
2019-12-19 19:41:59 +08:00
Ta-Ching ChenandGitHub c184e7be65 Fix go-server failed to load plugin (#1469)
The 3rd party package version used by the go server 
may be different from the one in the user's source code 
and will cause plugin version mismatched. Hence, we 
should never import any external packages except the 
Fission or built-in packages.

This PR replaces all 3rd-party packages with built-in packages.
2019-12-19 02:54:31 +08:00
Ta-Ching ChenandGitHub bfbb80efcf Add controller API client interface (#1467)
This PR adds an interface for controller API client, it allows us to
implement mock API client for unit testing with ease and we are
able to generate spec file without accessing the real Fission server.
2019-12-16 23:14:14 +08:00
Sahil LakhwaniandTa-Ching Chen 01bdc5bf89 Remove FISSION_ROUTER for fn test (#1465) 2019-12-15 14:32:29 +08:00
Vivek SinghandTa-Ching Chen 711d7c2c41 Show the not present configmap/secret name while fn create in err message [CLI-UX] (#1462) 2019-12-10 22:58:52 +08:00
Ta-Ching Chen 2b4e53e926 CHANGELOG 1.7.1 2019-12-09 05:09:54 +00:00
Ta-Ching Chen 9401c1ee85 Fission 1.7.1 2019-12-09 11:55:01 +08:00
Ta-Ching ChenandGitHub 5c704f053b Fix name conflict when buildermanager merges podspc (#1460) 2019-12-07 16:53:47 +08:00
Ta-Ching ChenandGitHub eb1f971d52 Not to exclude hidden file when creating archive (#1458)
Some of configs are hidden files like .babelrc, we should not ignore them.
2019-12-05 01:54:05 +08:00
Ta-Ching Chen 83bc5508ee CHANGELOG 1.7.0 2019-12-02 14:08:00 +00:00
Ta-Ching Chen d6a8734aae Fission 1.7.0 2019-12-02 21:26:28 +08:00
Ta-Ching ChenandGitHub 3ee98cd13a Fix release script not uploads OpenShift deploy YAML file (#1456) 2019-12-02 21:12:15 +08:00
Ta-Ching ChenandGitHub 275da18cf6 Let executor type manages how to do cleanup for old kubeobjects (#1455)
Add CleanupOldExecutorObjects to executor type interface in order
to let an executor type manages how to clean up the resources it created.
2019-12-02 19:47:31 +08:00
Ta-Ching ChenandGitHub 3f3b11ffbf Prevent deployment from rolling update due to different instance-id (#1454)
The pod template is embedded inside the deployment. So if
the pod annotation contains instance-id, the deployment
will get updated and thus triggers a rolling update whenever
a new executor starts which is unwanted.

After this PR, poolmanager will patches instance-id when a
pod is chosen for a function.

For newdeploy, unlike poolmanager manages the lifecycle
of function pod directly, newdeploy is only responsible
to create the deployment so we append instance-id to top-
level controller (deployment) only.
2019-12-02 17:28:19 +08:00
Ta-Ching ChenandGitHub 7f8cb69326 Make AdoptExistingResources optional (#1453) 2019-12-02 07:34:07 +08:00
Ta-Ching ChenandGitHub 003c304105 Prevent newdeploy updates deployment if no resources changed (#1452)
We used to update timestamp in the deployment environment field 
in order to trigger a rolling update when the function referenced 
resources get updated. However, use timestamp means we are not 
able to avoid triggering a rolling update when executor tries to adopt 
orphaned deployment due to timestamp changed which is unwanted. 
In order to let executor adopt deployment without triggering a rolling 
update, we need an identical way to get a value that can reflect res-
ources changed without affecting by time.

To achieve this goal, the sum of the resource version of all referenced 
resources is a good fit for our scenario since the sum of the resource 
version is always the same as long as no resources changed.
2019-12-02 06:35:07 +08:00
Ta-Ching ChenandGitHub 763ab475f2 Fix CLI unable to get pod logs from controller (#1451) 2019-12-01 22:38:35 +08:00
Ta-Ching ChenandGitHub 4b3f48b537 Fix spec shows source archive is not used (#1448) 2019-12-01 16:51:13 +08:00
Ta-Ching ChenandGitHub 6301a78814 Ignore hidden file when creating archive file (#1450) 2019-12-01 09:58:16 +08:00
Ta-Ching ChenandGitHub 506b427124 Fix spec init overrides existing deploymentconfig (#1449) 2019-11-29 23:59:10 +08:00
Ta-Ching ChenandGitHub 19ae7d5ac6 Fix adopted deployment uses old fetcher image (#1447)
When a new executor starts up, it adopts the orphan kubernetes resources created
by the old executor instance. However, the adopted resource won't reflect the changes
come with the new executor, for example, the fetcher image inside won't be changed.

To solve this, executor updates the resource spec (HPA/Deployment/Service) with the
latest resources spec. By doing this, we can prevent the inconsistency between resources
created by different executor instance, also minimizes the impact on users.
2019-11-29 21:52:59 +08:00
Ta-Ching ChenandGitHub 47aaa85108 Improve executor bootstrap speed (#1446) 2019-11-29 14:18:23 +08:00
Ta-Ching Chen 3067ecdee3 CHANGELOG 1.7.0-rc.2 2019-11-27 17:10:57 +00:00
745 changed files with 48285 additions and 22775 deletions
+1
View File
@@ -5,6 +5,7 @@ ignore:
- "examples"
- "test"
- "tools"
- "pkg/apis/genclient"
coverage:
status:
project:
+10
View File
@@ -0,0 +1,10 @@
---
name: Blog
about: Suggest a blog
title: ''
labels: ''
assignees: ''
---
+2 -2
View File
@@ -9,8 +9,8 @@ assignees: ''
<!-- Please answer these questions before submitting your issue. Thanks! -->
<!-- Documentation URL: https://docs.fission.io/ -->
<!-- Troubleshooting guide: https://docs.fission.io/trouble-shooting/ -->
<!-- Documentation URL: https://fission.io/docs -->
<!-- Troubleshooting guide: https://fission.io/docs/trouble-shooting/ -->
**Fission/Kubernetes version**
+10
View File
@@ -0,0 +1,10 @@
---
name: Documentation
about: Suggest changes/addition to documentation
title: ''
labels: ''
assignees: ''
---
**Describe something that is unclear or not documented and needs a documentation update
+20
View File
@@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+43
View File
@@ -0,0 +1,43 @@
name: Code Scanning
on:
push:
branches:
- master
paths:
- '**.go'
- go.mod
- go.sum
pull_request:
branches:
- master
paths:
- '**.go'
- go.mod
- go.sum
schedule:
- cron: "0 0 * * 0"
workflow_dispatch:
jobs:
CodeQL-Build:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: go
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
+23
View File
@@ -0,0 +1,23 @@
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/first-interaction@v1
if: env.month != 'Oct'
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Thank you for your first issue! ✨😊'
pr-message: 'Thank you for contributing to this project! ✨😊'
- uses: actions/first-interaction@v1
if: env.month == 'Oct'
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Thank you for your first issue! Happy Hacktoberfest!!! ✨🎃👕✨'
pr-message: 'Thank you for contributing to this project. Happy Hacktoberfest!!! ✨🎃👕'
+78
View File
@@ -0,0 +1,78 @@
name: Lint and Unit tests
on:
push:
branches:
- master
paths:
- '**.go'
- go.mod
- go.sum
pull_request:
branches:
- master
paths:
- '**.go'
- go.mod
- go.sum
workflow_dispatch:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Set up Go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Check out code
uses: actions/checkout@v2
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Verify dependencies
run: |
go mod verify
go mod download
LINT_VERSION=1.42.0
curl -fsSL https://github.com/golangci/golangci-lint/releases/download/v${LINT_VERSION}/golangci-lint-${LINT_VERSION}-linux-amd64.tar.gz | \
tar xz --strip-components 1 --wildcards \*/golangci-lint
mkdir -p bin && mv golangci-lint bin/
- name: Run checks
run: |
STATUS=0
assert-nothing-changed() {
local diff
"$@" >/dev/null || return 1
if ! diff="$(git diff -U1 --color --exit-code)"; then
printf '\e[31mError: running `\e[1m%s\e[22m` results in modifications that you must check into version control:\e[0m\n%s\n\n' "$*" "$diff" >&2
git checkout -- .
STATUS=1
fi
}
assert-nothing-changed go fmt ./...
assert-nothing-changed go mod tidy
bin/golangci-lint run --out-format=github-actions --timeout=5m || STATUS=$?
exit $STATUS
- name: Run unit tests
run: ./hack/runtests.sh
- name: Upload Coverage report to CodeCov
uses: codecov/codecov-action@v2
with:
token: ${{secrets.CODECOV_TOKEN}}
flags: unittests
file: ./coverage.txt
+140
View File
@@ -0,0 +1,140 @@
name: Fission CI
on:
push:
branches:
- master
paths:
- "**.go"
- "charts/**"
- "test/**"
- go.mod
- go.sum
pull_request:
branches:
- master
paths:
- "**.go"
- "charts/**"
- "test/**"
- go.mod
- go.sum
workflow_dispatch:
jobs:
# Job to run change detection
integration-test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
kindversion: ["v1.19.11", "v1.20.7", "v1.21.1"]
os: [ubuntu-latest]
steps:
- name: setup go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Checkout sources
uses: actions/checkout@v2.3.4
- name: Checkout sources
uses: actions/checkout@v2.3.4
with:
repository: fission/examples
path: examples
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Helm installation
uses: Azure/setup-helm@v1
with:
version: v3.3.4
- name: Kind Clutser
uses: engineerd/setup-kind@v0.5.0
with:
image: kindest/node:${{ matrix.kindversion }}
version: v0.11.1
config: kind.yaml
- name: Configuring and testing the Installation
run: |
kubectl cluster-info --context kind-kind
kubectl get nodes
sudo apt-get install -y apache2-utils
- name: Helm chart lint
run: |
helm lint charts/fission-all/
- name: Helm update
run: helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- name: Install Skaffold
run: |
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
sudo install skaffold /usr/local/bin/
skaffold version
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
install-only: true
- name: Build and Install Fission
run: |
kubectl create ns fission
make create-crds
SKAFFOLD_PROFILE=kind-ci make skaffold-deploy
- name: Build and Install Fission CLI
run: |
make build-fission-cli
sudo make install-fission-cli
sudo chmod +x /usr/local/bin/fission
- name: Port-forward fission components
run: |
kubectl port-forward svc/router 8888:80 -nfission &
kubectl port-forward svc/controller 8889:80 -nfission &
kubectl port-forward svc/nats-streaming 8890:4222 -nfission &
- name: Get fission version
run: |
fission version
- name: Integration tests
run: ./test/kind_CI.sh
- name: Collect Fission Dump
if: ${{ always() }}
run: |
command -v fission && fission support dump
- name: Kind export logs
if: ${{ always() }}
run: |
kind export logs --name kind kind-logs
- name: Archive fission dump
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: fission-dump-${{ github.run_id }}-${{ matrix.kindversion }}
path: fission-dump/*.zip
retention-days: 5
- name: Archive kind logs
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }}
path: kind-logs/*
retention-days: 5
+102
View File
@@ -0,0 +1,102 @@
name: Fission CI upgrade
on:
push:
branches:
- master
paths:
- '**.go'
- 'charts/**'
- 'test/**'
- go.mod
- go.sum
pull_request:
branches:
- master
paths:
- '**.go'
- 'charts/**'
- 'test/**'
- go.mod
- go.sum
workflow_dispatch:
jobs:
upgrade-test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
kindimage : [ 'kindest/node:v1.19.11' ]
os: [ ubuntu-latest ]
steps:
- name: Setup go
uses: actions/setup-go@v2
with:
go-version: 1.16
- name: Checkout action sources
uses: actions/checkout@v2.3.4
- uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Setup Helm
uses: Azure/setup-helm@v1
with:
version: v3.3.4
- name: Setup Kind Clutser
uses: engineerd/setup-kind@v0.5.0
with:
image: ${{ matrix.kindimage }}
version: v0.11.1
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v2
with:
install-only: true
- name: Setup kubectl & fetch node information
run: |
kubectl cluster-info --context kind-kind
kubectl get nodes
kubectl get storageclasses.storage.k8s.io
- name: Dump system info
run: |
source ./test/upgrade_test/fission_objects.sh dump_system_info
- name: Install and configure previous stable fission
run: |
source ./test/upgrade_test/fission_objects.sh install_stable_release \
&& create_fission_objects \
&& test_fission_objects
- name: Upgrade fission to latest
run: |
source ./test/upgrade_test/fission_objects.sh build_docker_images \
&& kind_image_load \
&& install_current_release \
&& install_fission_cli
- name: Test previously created fission objects with new release
run: |
source ./test/upgrade_test/fission_objects.sh test_fission_objects
- name: Collect Fission Dump
if: ${{ always() }}
run: |
command -v fission && fission support dump
- name: Archive fission dump
if: ${{ failure() }}
uses: actions/upload-artifact@v2
with:
name: fission-dump
path: fission-dump/*.zip
retention-days: 5
+5 -4
View File
@@ -5,6 +5,7 @@ cmd/fission-cli/fission-cli
cmd/fetcher/fetcher
cmd/builder/builder
cmd/preupgradechecks/pre-upgrade-checks
cmd/reporter/reporter
# Logs
test/logs/
@@ -28,7 +29,7 @@ environments/php7/vendor/
.DS_Store
vendor/
local/
environments/dotnet20/Builder/.vs/
environments/dotnet20/.vs/
environments/dotnet20/obj/
environments/dotnet20/bin/
build/
dist/
manifest/
+38
View File
@@ -0,0 +1,38 @@
linters:
enable:
# Default linter
- deadcode
- errcheck
- gosimple
- govet
- ineffassign
- staticcheck
- structcheck
- typecheck
- unused
- varcheck
# Additional linters
- gofmt
- goimports
- misspell
- nakedret
- unconvert
# Enable in future
# - bodyclose
# - dogsled
# - dupl
# - gosec
# - ifshort
# - nilerr
# - prealloc
# - revive
# - unparam
# - wrapcheck
# - gocritic
linters-settings:
errcheck:
ignore: go.uber.org/zap:Sync
goimports:
# put imports beginning with prefix after 3rd-party packages;
# it's a comma-separated list of prefixes
local-prefixes: github.com/fission/fission
+270
View File
@@ -0,0 +1,270 @@
project_name: fission
release:
github:
owner: fission
name: fission
prerelease: true
draft: true
header: |
Release Highlights: https://fission.io/docs/releases/{{ .Tag }}/
Install Guide: https://fission.io/docs/installation/
Full Changelog: https://github.com/fission/fission/blob/master/CHANGELOG.md
extra_files:
- glob: ./manifest/charts/*
- glob: ./manifest/yamls/*
before:
hooks:
- go mod tidy
snapshot:
name_template: "{{ .Tag }}"
builds:
- &build-linux
id: builder
ldflags:
- -s -w
- -X github.com/fission/fission/pkg/info.GitCommit={{.ShortCommit}}
- -X github.com/fission/fission/pkg/info.BuildDate={{.Date}}
- -X github.com/fission/fission/pkg/info.Version={{.Tag}}
gcflags:
- all=-trimpath={{.Env.PWD}}
asmflags:
- all=-trimpath={{.Env.PWD}}
env:
- CGO_ENABLED=0
goos:
- linux
goarch:
- amd64
- arm64
- arm
goarm:
- 7
binary: builder
dir: ./cmd/builder
- <<: *build-linux
id: fetcher
binary: fetcher
dir: ./cmd/fetcher
- <<: *build-linux
id: fission-bundle
binary: fission-bundle
dir: ./cmd/fission-bundle
- <<: *build-linux
id: fission-cli
goos:
- linux
- windows
- darwin
binary: fission
dir: ./cmd/fission-cli
ignore:
- goos: windows
goarch: arm64
- goos: darwin
goarch: arm
goarm: 7
- goos: windows
goarch: arm
goarm: 7
- <<: *build-linux
id: pre-upgrade-checks
binary: pre-upgrade-checks
dir: ./cmd/preupgradechecks
- <<: *build-linux
id: reporter
binary: reporter
dir: ./cmd/reporter
dockers:
- &docker-amd64
use: buildx
goos: linux
goarch: amd64
ids:
- builder
image_templates:
- "fission/builder:latest-amd64"
- "fission/builder:{{ .Tag }}-amd64"
dockerfile: cmd/builder/Dockerfile.fission-builder
build_flag_templates:
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-amd64
ids:
- fetcher
image_templates:
- "fission/fetcher:latest-amd64"
- "fission/fetcher:{{ .Tag }}-amd64"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher
- <<: *docker-amd64
ids:
- fission-bundle
image_templates:
- "fission/fission-bundle:latest-amd64"
- "fission/fission-bundle:{{ .Tag }}-amd64"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle
- <<: *docker-amd64
ids:
- pre-upgrade-checks
image_templates:
- "fission/pre-upgrade-checks:latest-amd64"
- "fission/pre-upgrade-checks:{{ .Tag }}-amd64"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks
- <<: *docker-amd64
ids:
- reporter
image_templates:
- "fission/reporter:latest-amd64"
- "fission/reporter:{{ .Tag }}-amd64"
dockerfile: cmd/reporter/Dockerfile.reporter
- &docker-arm64
use: buildx
goos: linux
goarch: arm64
ids:
- builder
image_templates:
- "fission/builder:latest-arm64"
- "fission/builder:{{ .Tag }}-arm64"
dockerfile: cmd/builder/Dockerfile.fission-builder
build_flag_templates:
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-arm64
ids:
- fetcher
image_templates:
- "fission/fetcher:latest-arm64"
- "fission/fetcher:{{ .Tag }}-arm64"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher
- <<: *docker-arm64
ids:
- fission-bundle
image_templates:
- "fission/fission-bundle:latest-arm64"
- "fission/fission-bundle:{{ .Tag }}-arm64"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle
- <<: *docker-arm64
ids:
- pre-upgrade-checks
image_templates:
- "fission/pre-upgrade-checks:latest-arm64"
- "fission/pre-upgrade-checks:{{ .Tag }}-arm64"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks
- <<: *docker-arm64
ids:
- reporter
image_templates:
- "fission/reporter:latest-arm64"
- "fission/reporter:{{ .Tag }}-arm64"
dockerfile: cmd/reporter/Dockerfile.reporter
- &docker-armv7
use: buildx
goos: linux
goarch: arm
goarm: 7
ids:
- builder
image_templates:
- "fission/builder:latest-armv7"
- "fission/builder:{{ .Tag }}-armv7"
dockerfile: cmd/builder/Dockerfile.fission-builder
build_flag_templates:
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-armv7
ids:
- fetcher
image_templates:
- "fission/fetcher:latest-armv7"
- "fission/fetcher:{{ .Tag }}-armv7"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher
- <<: *docker-armv7
ids:
- fission-bundle
image_templates:
- "fission/fission-bundle:latest-armv7"
- "fission/fission-bundle:{{ .Tag }}-armv7"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle
- <<: *docker-armv7
ids:
- pre-upgrade-checks
image_templates:
- "fission/pre-upgrade-checks:latest-armv7"
- "fission/pre-upgrade-checks:{{ .Tag }}-armv7"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks
- <<: *docker-armv7
ids:
- reporter
image_templates:
- "fission/reporter:latest-armv7"
- "fission/reporter:{{ .Tag }}-armv7"
dockerfile: cmd/reporter/Dockerfile.reporter
docker_manifests:
- name_template: fission/builder:{{ .Tag }}
image_templates:
- fission/builder:{{ .Tag }}-amd64
- fission/builder:{{ .Tag }}-arm64
- fission/builder:{{ .Tag }}-armv7
- name_template: fission/fetcher:{{ .Tag }}
image_templates:
- fission/fetcher:{{ .Tag }}-amd64
- fission/fetcher:{{ .Tag }}-arm64
- fission/fetcher:{{ .Tag }}-armv7
- name_template: fission/fission-bundle:{{ .Tag }}
image_templates:
- fission/fission-bundle:{{ .Tag }}-amd64
- fission/fission-bundle:{{ .Tag }}-arm64
- fission/fission-bundle:{{ .Tag }}-armv7
- name_template: fission/pre-upgrade-checks:{{ .Tag }}
image_templates:
- fission/pre-upgrade-checks:{{ .Tag }}-amd64
- fission/pre-upgrade-checks:{{ .Tag }}-arm64
- fission/pre-upgrade-checks:{{ .Tag }}-armv7
- name_template: fission/reporter:{{ .Tag }}
image_templates:
- fission/reporter:{{ .Tag }}-amd64
- fission/reporter:{{ .Tag }}-arm64
- fission/reporter:{{ .Tag }}-armv7
- name_template: fission/builder:latest
image_templates:
- fission/builder:latest-amd64
- fission/builder:latest-arm64
- fission/builder:latest-armv7
- name_template: fission/fetcher:latest
image_templates:
- fission/fetcher:latest-amd64
- fission/fetcher:latest-arm64
- fission/fetcher:latest-armv7
- name_template: fission/fission-bundle:latest
image_templates:
- fission/fission-bundle:latest-amd64
- fission/fission-bundle:latest-arm64
- fission/fission-bundle:latest-armv7
- name_template: fission/pre-upgrade-checks:latest
image_templates:
- fission/pre-upgrade-checks:latest-amd64
- fission/pre-upgrade-checks:latest-arm64
- fission/pre-upgrade-checks:latest-armv7
- name_template: fission/reporter:latest
image_templates:
- fission/reporter:latest-amd64
- fission/reporter:latest-arm64
- fission/reporter:latest-armv7
changelog:
skip: true
archives:
- id: fission
builds:
- fission-cli
name_template: "{{ .ProjectName }}-{{ .Tag }}-{{ .Os }}-{{ .Arch }}"
format: binary
checksum:
name_template: "checksums.txt"
algorithm: sha256
+13
View File
@@ -0,0 +1,13 @@
pull_request_rules:
- name: Automatic merge on approval
conditions:
- base=master
- "#approved-reviews-by>=1"
- label=ready-to-merge
- label!=hold-off-merging
- status-success=build
actions:
merge:
method: squash
commit_message: title+body
strict: smart
-61
View File
@@ -1,61 +0,0 @@
sudo: required
dist: trusty
branches:
only:
- master
language: go
go:
- 1.12.x
env:
- KUBECONFIG=${HOME}/.kube/config PATH=$HOME/k8scli:$HOME/tool:$HOME/google-cloud-sdk/bin:${PATH} GO111MODULE=on DOCKER_CACHE_DIR=${HOME}/docker/
cache:
directories:
- $HOME/google-cloud-sdk/
- $HOME/k8scli
- $HOME/tool
- $HOME/.cache/go-build
- $HOME/gopath/pkg/mod
services:
- docker
before_install:
- sudo apt-get update
# - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
- sudo apt-get -y install apache2-utils parallel realpath
- sudo sysctl net.ipv6.conf.all.disable_ipv6=0
install:
- hack/travis-kube-setup.sh
before_script:
- cd ${TRAVIS_BUILD_DIR}
- go mod download
- hack/verify-staticcheck.sh
- hack/verify-gofmt.sh
- hack/verify-govet.sh
- helm lint charts/fission-all/ charts/fission-core/
- hack/runtests.sh
- test/build.sh
script:
- cd ${TRAVIS_BUILD_DIR}
- test/test.sh
- test/upgrade/fission_upgrade_test.sh
after_script:
- bash <(curl -s https://codecov.io/bash)
- kubectl --namespace default delete configmap -l travisID=${TRAVIS_BUILD_ID} # remove in-test configmap to indicate this CI build finished
notifications:
slack:
rooms:
secure: YZ34vsfw1TtftJypg1MyP4+ihONI4gaxeS3FghBQli6+EezjzcxOXyj5VD+x0ucXfDeTaDrFfmVN0SAGObOoZUE+ea9KAoTo50tRLaD9kwOTACiekZalC4uuBguH0D1/A6vlbU8dchsr9mvIhbisG6mTncdPtqGYYHtyBQme6ngmmHbVAQFZcIBHmNuDb/HWhSr8KMEuyB6+mBXLYELHnXnf26cOhdGNaagqCOJTiemX85RGwIuOPxyBhKDFMLyHohDT7FJMH/qijveE6YgOYTQC5nYc2Np1KvC7hQkIu4nuyczyYlrNQl/TWv+SVI8PjIs0PYuCuD3gUqoVEi8d94HbrOPzFEpbwDS9P4qL39DGmco1Q56Vqxe6sRI0vDWPb5gCP1lSgs3PMECVn7Wor/pTvcL+C+U2jLwWJUl0vbyWCL7ngl/3iTssV7qBpUrI7Oclwp8LrQo9fPj0DL4gE9rNanpEWjQ6yPGaysIL1zLHtRghhm52A22NJGp71jkS2KEpLi6ZWFYjMeuXw5eOQFhqFlzyRJOmLYa3B607TLWuyo2L2CxAfMmq0FGfemvrkLZIWtlQKK4y9ImpsURwaGT2XCtThFtHl77wEss913nC+T2dX3O5Bl0UmxFd5S3mVM109I8c4lDosxnAjRfS9MheFlrG0gjSJSBCw57x7f0=
on_success: change
on_failure: always
+588 -314
View File
File diff suppressed because it is too large Load Diff
+5 -40
View File
@@ -1,45 +1,10 @@
# Contributing to Fission
### Thank you!
Thanks for helping make Fission better😍!
Thank you for taking the time and effort to contribute to Fission!
There are many areas we can use contributions - ranging from code, documentation, feature proposals, issue triage, samples, and content creation.
First, please read the [code of conduct](CODE_OF_CONDUCT.md). By
participating, you're expected to uphold this code.
First, please read the [code of conduct](CODE_OF_CONDUCT.md). By participating, you're expected to uphold this code.
### Choose something to work on
Please refer contributing docs for detailed guide.
The easiest way to start is to look at existing
[issues](https://github.com/fission/fission/issues) and see if there's
something there that you'd like to work on.
Also, if you're familiar with a language that we don't support today,
adding an environment for a new language is a good task to take on.
Take a look at the Python environment as an example.
If you're interested in working on something that doesn't have an
existing issue, feel free to file a new one.
There's plenty of stuff to do. If you need help choosing something to
work on, we'll be happy to suggest something depending on your
interests.
### Talk to people
At any point, from thinking about contributing to merging your
changes, please feel free to reach out to us! We're more than happy
to talk.
If you choose a big chunk of work that involves design changes to
Fission, please talk to us while planning the change; that way we can
all be on the same page before you invest too much work into it.
* Drop by the [slack channel](http://slack.fission.io).
* Say hi on [twitter](https://twitter.com/fissionio).
### Contribution Howto
* Fork this github repo
* Make a branch in your fork
* Commit your changes to that branch
* Create a pull request
[https://fission.io/docs/contributing/](https://fission.io/docs/contributing/)
+55
View File
@@ -0,0 +1,55 @@
# BUILDING MULTI-ARCHITECTURE IMAGES
While the Docker images for Fission can be built by running:
```
make image
```
the stable images are build for multiple architectures (and automatically pushed to the repository) by
```
make images-multiarch
```
However, there are several options and requirements for building these images, which are explained here.
## BUILDERS
We use `docker buildx` to build images for multiple architectures. At the moment, this is considered an
experimental feature by Docker, and as such it requires access to experimental features to be enabled
in the daemon.json file.
By default, this will use BuildKit and QEMU emulation support to build the image for each architecture
locally. However, for faster building, it is possible to use native nodes to build each architecture,
either simple remote Docker instances or a Kubernetes cluster. For information on how to set this up,
please see the blog article here:
<https://www.docker.com/blog/multi-arch-images/>
And/or the command reference here:
<https://docs.docker.com/engine/reference/commandline/buildx_create/>
## BUILD OPTIONS
### PLATFORMS
The PLATFORMS variable can be set to a comma-separated list of platforms for which images should be
built when running the multi-arch build. If unset, it defaults to _linux/amd64,linux/arm64,linux/arm_.
### REPOSITORY SELECTION
By default, the multi-arch build will automatically try to push the resulting images to the fission/*
repositories, under the dev tag; i.e. fission/fission-bundle:dev, fission/fetcher:dev, and
fission/builder:dev. However, for convenient, this can be customized by setting the REPO and TAG
environment variables to set a different repository prefix and tag for the images.
For example:
```
REPO=randomdev TAG=test make images-multiarch
```
would build and push the images randomdev/fission-bundle:test, randomdev/fetcher:test, and
randomdev/builder:test . Private Docker repositories can be used in the same manner.
+1 -1
View File
@@ -1,4 +1,4 @@
Fission Document
=================
* Please visit [here](https://docs.fission.io/) for fission documentation.
* Please visit [here](https://fission.io/docs) for fission documentation.
+9 -9
View File
@@ -1,7 +1,7 @@
# Multi-tenancy in Fission
Multi-tenancy in Fission allows users to create Fission objects, i.e functions, packages, environments and triggers in different namespaces.
It mandates that a function reference secrets, configmaps and its package (if explicity referenced during function creation/updation) to be present in the same namespace as the function.
It mandates that a function reference secrets, configmaps and its package (if explicitly referenced during function create/update operation) to be present in the same namespace as the function.
This allows user separation and prevents in-advertent access to sensitive data of other users sharing the same cluster.
However, users are allowed and encouraged to share environments to ensure optimal utilization of cluster resources. To achieve this, users can create all the necessary environments in a ns, say ns1 and then go on to create functions in different namespaces and refer to env in ns1.
Users that prefer complete isolation can create their env, functions in the same ns.
@@ -27,20 +27,20 @@ This SA is created in every namespace that a user creates builder environments i
1. Package-getter-binding
Every time a user creates a package explicity in a namespace, this rolebinding is created in package's namespace (which is also function's namespace). This grants package-getter role to fission-fetcher SA present in the referenced environment's namespace.
If the package is a source package, then, fission-builder SA present in the environment namespace is also added to this rolebinding.
Every time a user creates a package explicitly in a namespace, this role binding is created in package's namespace (which is also function's namespace). This grants package-getter role to fission-fetcher SA present in the referenced environment's namespace.
If the package is a source package, then, fission-builder SA present in the environment namespace is also added to this role binding.
Next when the user creates a function in the same namespace, if the function's executor type is newdeploy, then, the fission-fetcher SA present in function namespace is also added to the same rolebinding.
Next when the user creates a function in the same namespace, if the function's executor type is newdeploy, then, the fission-fetcher SA present in function namespace is also added to the same role binding.
Note : For functions that have executor type poolmgr, the env pods are created in the namespace that env object is created. Whereas, for those functions that have executor type New deploy mgr, the function pods are created in the namespace that function object is created in.
This is because, poolmgr allows env sharing and optimal resource utilization. so generic env pools are created in a different namespace and all functions that prefer sharing this env pool can reference these pools.
If users require strict isolation, they can either create functions with new deploy backend, or, create env's in different namespaces and not share them across functions.
If users require strict isolation, they can either create functions with new deploy backend, or, create envs in different namespaces and not share them across functions.
2. Secret-Configmap-getter-binding
Every time a user creates a function in a namespace, Secret-Configmap-getter-binding is created in the same namespace, granting secret-configmap-getter role to fission-fetcher SA present in the referenced environment's namespace in case the executor type is poolmgr.
If the executor type is newdeploymgr, then the same rolebinding is created in the same namespace as the function, granting the same secret-configmap-getter role to fission-fetcher SA present in the function namespace.
If the executor type is newdeploymgr, then the same role binding is created in the same namespace as the function, granting the same secret-configmap-getter role to fission-fetcher SA present in the function namespace.
## Examples
@@ -51,7 +51,7 @@ $ fission env create --name python --image fission/python-env --envns ns1
$ fission function create --name func1 --env python --code hello.py --fns ns2
```
2. create a builder and runtime environment in ns3, a source pkg in ns3 and a function referring to this src pkg also in ns3. (for complete isolation, all objs are in ns3)
2. create a builder and runtime environment in ns3, a source pkg in ns3 and a function referring to this src pkg also in ns3. (for complete isolation, all objects are in ns3)
```bash
$ fission env create --name python-builder-env --builder fission/python-builder --image fission/python-env --ns3
@@ -62,5 +62,5 @@ $ fission fn create --name func3 --fns ns3 --pkg $pkg --entrypoint "user.main"
## Note
1. To maintain backward compatibility, fission objects that are created without the ns flags are created in default namespace. Also, the run time env pods in such a case will continue to live in fission-function ns and builder env pods in fission-builder ns
2. Since all envs in a namespace have the same fission-fetcher SA mounted in them, even though multiple envs are created in a namespace and referenced by functions in different namespaces, the SA will have previleges to view those function's secrets if any.
3. Similarly, if there are multiple functions in different namespaces but all sharing an env in one namespace, the fission-fetcher SA in that namespace will have previleges to see all of their secrets.
2. Since all envs in a namespace have the same fission-fetcher SA mounted in them, even though multiple envs are created in a namespace and referenced by functions in different namespaces, the SA will have privileges to view those function's secrets if any.
3. Similarly, if there are multiple functions in different namespaces but all sharing an env in one namespace, the fission-fetcher SA in that namespace will have privileges to see all of their secrets.
+1 -1
View File
@@ -20,5 +20,5 @@ documentation on the context object in each environment.
## Kubernetes Watch Event Triggers
Kubernetes watches can be used to trigger functions. These functions
Kubernetes watches can be used to trigger functions. These functions
receive the Kubernetes watch.Event object in JSON-serialized form.
+2 -2
View File
@@ -48,7 +48,7 @@ So we can write a simple logic - to check if a annotation is applicable for an i
### Implementation 2
- One of side effects of this is that the annotations will still stay on the source CRD object - for example annotation will stay on the httptrigger as well as the ingress object. This can cause problems in certain cases where something like Prometheus uses annotations to scrape objects. So instead we wrap the annotations needed by an object into another annotation name. This also solves problem of having to guess which annotations to apply to which object.
- One of the side effects is that the annotations will still stay on the source CRD object - for example annotation will stay on the httptrigger as well as the ingress object. This can cause problems in certain cases where something like Prometheus uses annotations to scrape objects. So instead we wrap the annotations needed by an object into another annotation name. This also solves problem of having to guess which annotations to apply to which object.
```yaml
apiVersion: fission.io/v1
@@ -88,4 +88,4 @@ HTTPTriggerSpec struct {
## Final thoughts
- The implementation idea 2 & 3 look better than 1. The third option involves HTTPTrigger Spec change.
- For both (2) & (3) - if in future we have to implement annotations for Functions etc. we will have to consider the fact that a function will in turn create 3 objects (Service, Pod & HPA) and annotations for all three would need to be accommodated.
- For both (2) & (3) - if in future we have to implement annotations for Functions etc. we will have to consider the fact that a function will in turn create 3 objects (Service, Pod & HPA) and annotations for all three would need to be accommodated.
+3 -3
View File
@@ -57,7 +57,7 @@ If we look at this from CI/CD perspective this process requires:
3. Fission CLI
4. Kubernetes Config so that the apply command can be run
So if we build a container - which has the above requirements met as installed software (Ex. Fission & Kubectl CLI) or available as environment variable (Github pull token or Kubeconfig), the container can be used as part of CI workflow in any tool such as - Jenkins, Argo, Github Actions, Gitlab etc.
So if we build a container - which has the above requirements met as installed software (Ex. Fission & Kubectl CLI) or available as environment variable (Github pull token or Kubeconfig), the container can be used as part of CI workflow in any tool such as - Jenkins, Argo, Github Actions, GitLab etc.
The idea is to build a generic container with Fission CLI, Kubernetes CLI and a way to read Github token and Kubeconfig from env variable/mounted files and being able to run `fission spec apply` command.
@@ -90,7 +90,7 @@ Without changing anything in Fission spec it is possible to change these things
1. Generate and maintain specs for each environment. This is not a best practice as it leads to drift in code and configuration between environment over time.
2. Use placeholder variables (i.e. $DB_CONNECTION_VALUE) and replace them for each environment before deploying. This is better in the sense that you are combining changes specific to each environment with spec code but is still a work around sort of.
For environment specific configurations, it is possible to use some sort of templating or overlay mechanism. One of interesting projects using overlays is [Kustomize](https://github.com/kubernetes-sigs/kustomize). In any case as of today the fission spec command does not have a way to use template or modify values using overlay and it is worth exploring this approach for fission spec.
For environment specific configurations, it is possible to use some sort of templates or overlay mechanism. One of interesting projects using overlays is [Kustomize](https://github.com/kubernetes-sigs/kustomize). In any case as of today the fission spec command does not have a way to use template or modify values using overlay and it is worth exploring this approach for fission spec.
## 3 Promotion from one environment to another
@@ -98,4 +98,4 @@ This necessarily does not fall in the area of Fission per se but it would be fai
## Action Items
As a first step it would be good to build a simple container mentioned in (1) and use it in various tools to understand the value it adds and any unknowns. The next steps would be to build a full end to end pipeline from source to production.
As a first step it would be good to build a simple container mentioned in (1) and use it in various tools to understand the value it adds and any unknowns. The next steps would be to build a full end to end pipeline from source to production.
+1 -1
View File
@@ -125,4 +125,4 @@ Improving this is probably best left to future work.
The more heavyweight solution solves some of these limitations to an extent, but these do not way up to the increased
development and maintainance cost IMO. If needed we could explore this option (or some hybrid option) in the future.
development and maintenance cost IMO. If needed we could explore this option (or some hybrid option) in the future.
+2 -2
View File
@@ -46,8 +46,8 @@ directory (in case of deployment packages).
The load request may contain an EntryPoint. If it does, the loader
must interpret this; usually it's the name of a function in a module
or package containing multiple functions. If there is no entrypoint,
the environment must use a default; again, the value of thsi default
or package containing multiple functions. If there is no entry point,
the environment must use a default; again, the value of this default
is environment-specific.
The load request may contain a URL. If it does, requests to that URL
+5 -5
View File
@@ -52,11 +52,11 @@ container.
### Discussion
Early feedback shows that almost evey user ends up rebuilding images
to add some dependecies. Some sort of automated dependecy resolution
to add some dependencies. Some sort of automated dependency resolution
would be very nice to have and improve the development workflow. In
other words, just attach a package.json(nodejs) or
requirements.txt(python) with a function, and fission will do the
rest. There's also the possiblity of supporting buildpacks (simple
rest. There's also the possibility of supporting buildpacks (simple
zipfiles), a la AWS Lambda.
Though we can support compiled languages by doing the compilation
@@ -82,7 +82,7 @@ use environments, I've already packaged up my function, here it is".
Roughly in order of priority:
0. Retain the simplicity of the simple use cases. First user
experience shoud remain trivial -- write a function, map a URL,
experience should remain trivial -- write a function, map a URL,
done.
1. Support compiled languages. Support error reporting on function
@@ -91,7 +91,7 @@ Roughly in order of priority:
2. Support functions as a collection of files rather than just one
file.
3. Support automated environment-specific dependecy resolution.
3. Support automated environment-specific dependency resolution.
(#3 may end up having the same solution as #1. You could think of
gathering deps as a "compilation" of package.json,
@@ -297,7 +297,7 @@ affinity rule, but k8s services only support IP based affinity.]
#### Poolmgr
Poolmgr remains relatively unchanged. Instead of contructing URLs for
Poolmgr remains relatively unchanged. Instead of constructing URLs for
function metadata, it uses the deployment package URL in the function
object.
+2 -2
View File
@@ -9,7 +9,7 @@ A new layer - executor now sits between the router and actual backends are respo
# Backend
A backend is responsible for execution of a function - which can involve provisioning appropriate objects in Kubernetes. So with the new design Pool manager becomes one of backends. As of this writing there are two backends which are described as:
A backend is responsible for execution of a function - which can involve provisioning appropriate objects in Kubernetes. So with the new design Pool manager becomes one of the backends. As of this writing there are two backends which are described as:
### Pool Manager Backend
@@ -21,7 +21,7 @@ New Deploy backend create a Kubernetes deployment, a Kubernetes Service for a gi
### Execution Strategy
While this is still a WIP, parameters that affect execution behaviour of function are based on `InvokeStrategy`. A invoke strategy defines the `strategyType` and actual strategy parameters encapsulated in the strategy object.
While this is still a WIP, parameters that affect execution behavior of function are based on `InvokeStrategy`. A invoke strategy defines the `strategyType` and actual strategy parameters encapsulated in the strategy object.
```
InvokeStrategy struct {
+3 -3
View File
@@ -8,7 +8,7 @@ This document documents the design and thoughts that lead to design of Java envi
- Kotlin (Server side with Spring)
- In Java there are a few prominent frameworks which have a ecosystem of their own (See list below). How these framework fit in the environment will be detailed later, but it is important to understand their place in ecosystem and design for it.
- A large percentage of entertprise developers use [Spring framework](https://spring.io/) as has been shown by multiple surveys
- A large percentage of enterprise developers use [Spring framework](https://spring.io/) as has been shown by multiple surveys
- Reactive has taken up recently with data intensive operations [Reactive extensions for JVM](https://github.com/ReactiveX/RxJava)
- [Spark](http://sparkjava.com/) is a micro web framework
@@ -31,7 +31,7 @@ Now - the T & R could be different things and we discuss some options below:
From the early implementation in the branch mentioned above, the environment extracts the body and send it as a JSON string. The JSON then can be transformed into the appropriate object by the function.
This works well, but has one major limitation: the function does not get access to other things like headers etc. The same thing applies to the reponse: function can send the body but looses control over status code etc.
This works well, but has one major limitation: the function does not get access to other things like headers etc. The same thing applies to the response: function can send the body but looses control over status code etc.
### HttpServletRequest and HttpServletResponse
@@ -64,4 +64,4 @@ The Spring cloud function project also discusses the issue of not having access
JVM environment design is based on Spring boot and Spring MVC frameworks. The details can be found in branch, but here are some key points:
- All classes in the function and dependent classes are loaded into JVM. Which means the user should supply the uber/fat jar for execution.
- The entrypoint class is specified by the user as ```entrypoint``` flag on the class. The method is by convention (```apply``` as per the Function interface contract)
- The entrypoint class is specified by the user as ```entrypoint``` flag on the class. The method is by convention (```apply``` as per the Function interface contract)
+33
View File
@@ -0,0 +1,33 @@
# Profiling Fission with Pprof
Fission uses [net/pprof](https://pkg.go.dev/net/http/pprof) for profiling the code across Fission components.
It would be helpful in identifying performance bottlenecks.
To enable profiling, just set `pprof.enabled` to `true` while installing Fission helm chart.
## Pprof data of component pod
Do port forwarding to port 6060 of the pod,
```sh
kubectl port-forward pod/executor-668dfd7c89-2b2ff 6060:6060
```
Run different commands to get or analyze pprof data,
```sh
go tool pprof http://localhost:6060/debug/pprof/flamegraph
go tool pprof http://localhost:6060/debug/pprof/profile\?seconds\=60
```
You can also analyze with binary to get correct references of source,
```sh
# Download binary from pod
kubectl cp fission/executor-668dfd7c89-2b2ff:/fission-bundle fission-bundle
go tool pprof -http ":49816" fission-bundle http://localhost:49513/debug/pprof
```
You can also download pprof data and visualize/analyze with different compatible tools.
+9 -9
View File
@@ -9,7 +9,7 @@ Most of current integration tests are CLI driven. Fission CLI is used to test ex
This section only explains the problems/best practices without going into tooling and language used for implementation.
### Separating the test & data
Seperating the tests from test data has two aspects - one is separation of concerns and second is scaling the tests without touching the test logic. The test data is a simple data structure which holds all information and test can take data and execute the logic.
Separating the tests from test data has two aspects - one is separation of concerns and second is scaling the tests without touching the test logic. The test data is a simple data structure which holds all information and test can take data and execute the logic.
As an example today we test "Hello world" for nodejs environment with a simple hello.js like this:
@@ -36,7 +36,7 @@ And feed it with a dictionary which has all possible combination of tests:
node: {"fission/node-env", "test/hello.js", "/hellonode"},
python: {"fission/python-env", "test/hello.py", "/hellopy"},
golang: {"fission/go-env", "test/hello.go", "/hellogo"},
binray: {"fission/binary-env", "test/hello.sh", "/hellobinary"},
binary: {"fission/binary-env", "test/hello.sh", "/hellobinary"},
}
```
@@ -63,7 +63,7 @@ The ability to have clean and separate before and after blocks, apart from separ
- Running a suite of tests for same setup (See tagging for suite of tests)
### Tagging tests & running a selection
Over a period of time as tests grow, there will be unit, smkoe, integration, performance, soak tests and so on. Ability to run a perticular test suite only or a combination of them makes it easy to run for specific purpose.
Over a period of time as tests grow, there will be unit, smoke, integration, performance, soak tests and so on. Ability to run a particular test suite only or a combination of them makes it easy to run for specific purpose.
### Measuring test times
[Good to have, not a must] Measuring time for tests and reporting somewhere helps over time to monitor trends. Although this job is better done by performance/benchmark tests so it is not a strict requirement
@@ -74,7 +74,7 @@ It would be good to have cleaner/relevant logging as part of build & test. For e
It would be good to be able to run tests in parallel.
## Evalutaing the tools/alternatives
## Evaluating the tools/alternatives
### BATS
Bash Automated Testing System is like a enhanced version of bash with support for @test tags and before and after steps & ability to skip tests etc. While it enhances the bash to certain extent, the overall improvement is only marginal.
@@ -111,7 +111,7 @@ https://golang.org/pkg/os/exec
### Using CLI package
Currently we build a CLI and then execute the tests. The tests basically call one of functions from CLI package. If we decide to use a go lang based framework, then we can import the CLI package and then call those functions by providing them context. This is as good as calling the Fission from CLI, with added benefit of programmibility of Go langugage.
Currently we build a CLI and then execute the tests. The tests basically call one of functions from CLI package. If we decide to use a go lang based framework, then we can import the CLI package and then call those functions by providing them context. This is as good as calling the Fission from CLI, with added benefit of programmability of Go language.
```
func TestSomething(t *testing.T) {
@@ -135,7 +135,7 @@ Ginkgo is a BDD framework which works with Gomega matcher library. I will state
From Ginkgo:
- Global `BeforeSuite` and after `AfterSuite` can be used to have global setup and tear down phases
- For tests `BeforeEach` and `AfterEach` and more such varients to do before and after test tasks.
- For tests `BeforeEach` and `AfterEach` and more such variants to do before and after test tasks.
From Gomega:
@@ -180,7 +180,7 @@ Eventually(session.Out).Should(gbytes.Say("hello [A-Za-z], world"))
```
There are many more matchers which cane be found here: http://onsi.github.io/gomega/#provided-matchers
- We can build custom mathers in Go language for reusable logic.
- We can build custom matchers in Go language for reusable logic.
#### Links
Ginkgo: http://onsi.github.io/ginkgo/
@@ -199,11 +199,11 @@ Based on the discussion with team, here are current thoughts and next action ite
- How will migration of tests happen over time:
- Aim is to keep existing tests around so that enough validation is in place
- May be migrate one test at a time
- How much of current setup etc. will move into framework? For example it is clear that helm commands should be part of test framework as part of setup/teardown. But other sections may or may not be. A RCA needs to be done to analyze and come up with clear demarkation.
- How much of current setup etc. will move into framework? For example it is clear that helm commands should be part of test framework as part of setup/teardown. But other sections may or may not be. A RCA needs to be done to analyze and come up with clear demarcation.
## References
- EngineYard uses BATS: https://www.engineyard.com/blog/bats-test-command-line-tools
- AWS CLI Tests, written in Python (CLI itself is also in Python): https://github.com/aws/aws-cli/tree/develop/tests
- Kubernetes uses Ginkgo and Gomega extensively: https://github.com/kubernetes/kubernetes/search?l=Go&q=onsi&type=
- Hashicorp's Mitchell's talk on Advanced testing with go talks about some good patterns to use: https://www.youtube.com/watch?v=8hQG7QlcLBk
- Hashicorp's Mitchell's talk on Advanced testing with go talks about some good patterns to use: https://www.youtube.com/watch?v=8hQG7QlcLBk
+76 -21
View File
@@ -14,35 +14,90 @@
.DEFAULT_GOAL := check
check: test-run build clean
SKAFFOLD_PROFILE ?= kind
# run basic check scripts
test-run:
VERSION ?= v0.0.0
TIMESTAMP ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ')
COMMITSHA ?= $(shell git rev-parse HEAD)
GOOS ?= $(shell go env GOOS)
GOARCH ?= $(shell go env GOARCH)
FISSION-CLI-SUFFIX :=
ifeq ($(GOOS), windows)
FISSION-CLI-SUFFIX := .exe
endif
# Show this help.
help:
@awk '/^#/{c=substr($$0,3);next}c&&/^[[:alpha:]][[:alnum:]_-]+:/{print substr($$1,1,index($$1,":")),c}1{c=0}' $(MAKEFILE_LIST) | column -s: -t
### Static checks
check: test-run build-fission-cli clean
code-checks:
hack/verify-gofmt.sh
hack/verify-govet.sh
hack/verify-staticcheck.sh
# run basic check scripts
test-run: code-checks
hack/runtests.sh
@rm -f coverage.txt
# ensure the changes are buildable
build:
go build -o cmd/fission-bundle/fission-bundle ./cmd/fission-bundle/
go build -o cmd/fission-cli/fission ./cmd/fission-cli/
go build -o cmd/fetcher/fetcher ./cmd/fetcher/
go build -o cmd/fetcher/builder ./cmd/builder/
### Binaries
build-fission-cli:
@GOOS=$(GOOS) GOARCH=$(GOARCH) GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --rm-dist --single-target --id fission-cli
# install CLI binary to $PATH
install: build
mv cmd/fission-cli/fission $(GOPATH)/bin
install-fission-cli:
mv dist/fission-cli_$(GOOS)_$(GOARCH)/fission$(FISSION-CLI-SUFFIX) /usr/local/bin/fission
# build images (environment images are not included)
image:
docker build -t fission-bundle -f cmd/fission-bundle/Dockerfile.fission-bundle .
docker build -t fetcher -f cmd/fetcher/Dockerfile.fission-fetcher .
docker build -t builder -f cmd/builder/Dockerfile.fission-builder .
### Codegen
codegen:
@./hack/update-codegen.sh
### CRDs
generate-crds:
controller-gen crd:trivialVersions=false,preserveUnknownFields=false \
paths=./pkg/apis/core/v1 \
output:crd:artifacts:config=crds/v1
create-crds:
@kubectl create -k crds/v1
update-crds:
@kubectl replace -k crds/v1
delete-crds:
@kubectl delete -k crds/v1
### Cleanup
clean:
@rm -f cmd/fission-bundle/fission-bundle
@rm -f cmd/fission-cli/fission
@rm -f cmd/fetcher/fetcher
@rm -f cmd/fetcher/builder
@rm -f dist/
### Misc
generate-swagger-doc:
@./hack/update-swagger-docs.sh
generate-cli-docs:
go run tools/cmd-docs/main.go -o "../fission.io/content/en/docs/fission-cli"
all-generators: codegen generate-crds generate-swagger-doc
skaffold-prebuild:
@GOOS=linux GOARCH=amd64 GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --rm-dist --single-target
@cp -v cmd/builder/Dockerfile.fission-builder dist/builder_linux_amd64/Dockerfile
@cp -v cmd/fetcher/Dockerfile.fission-fetcher dist/fetcher_linux_amd64/Dockerfile
@cp -v cmd/fission-bundle/Dockerfile.fission-bundle dist/fission-bundle_linux_amd64/Dockerfile
@cp -v cmd/reporter/Dockerfile.reporter dist/reporter_linux_amd64/Dockerfile
@cp -v cmd/preupgradechecks/Dockerfile.fission-preupgradechecks dist/pre-upgrade-checks_linux_amd64/Dockerfile
skaffold-deploy: skaffold-prebuild
skaffold run -p $(SKAFFOLD_PROFILE)
### Release
release:
@./hack/generate-helm-manifest.sh $(VERSION)
@./hack/release.sh $(VERSION)
@./hack/release-tag.sh $(VERSION)
@./hack/changelog.sh
+73 -45
View File
@@ -1,10 +1,44 @@
# Fission: Serverless Functions for Kubernetes
<p align="center">
<img src="https://fission.io/images/logo-gh.svg" width="300" />
<br>
<h1 align="center">Fission: Serverless Functions for Kubernetes</h1>
</p>
[![Build Status](https://travis-ci.org/fission/fission.svg?branch=master)](https://travis-ci.org/fission/fission)
[![Go Report Card](https://goreportcard.com/badge/github.com/fission/fission)](https://goreportcard.com/report/github.com/fission/fission)
[![Fission Slack](http://slack.fission.io/badge.svg)](http://slack.fission.io)
<p align="center">
<a href="https://github.com/fission/fission/blob/master/LICENSE">
<img alt="Fission Licence" src="https://img.shields.io/github/license/fission/fission">
</a>
<a href="https://github.com/fission/fission/releases">
<img alt="Fission Releases" src="https://img.shields.io/github/release-pre/fission/fission.svg">
</a>
<a href="https://pkg.go.dev/github.com/fission/fission">
<img alt="go.dev reference" src="https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white">
</a>
<a href="https://goreportcard.com/report/github.com/fission/fission">
<img src="https://goreportcard.com/badge/github.com/fission/fission" alt="Go Report Card" />
</a>
<a href="https://github.com/fission/fission/graphs/contributors">
<img alt="Fission contributors" src="https://img.shields.io/github/contributors/fission/fission">
</a>
<a href="https://github.com/fission/fission/commits/master">
<img alt="Commit Activity" src="https://img.shields.io/github/commit-activity/m/fission/fission">
</a>
<br>
<a href="https://fission.io/">
<img alt="Fission website" src="https://img.shields.io/badge/website-fission.io-blue">
</a>
<a href="https://fission.io/slack">
<img alt="Fission slack" src="https://badgen.net/badge/slack/Fission?icon=slack">
</a>
<a href="https://twitter.com/fissionio">
<img alt="Fission twitter" src="https://img.shields.io/twitter/follow/fissionio?style=social">
</a>
<a href="https://github.com/fission/fission">
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/fission/fission?style=social">
</a>
</p>
[fission.io](http://fission.io) [@fissionio](http://twitter.com/fissionio)
--------------
Fission is a fast serverless framework for Kubernetes with a focus on
developer productivity and high performance.
@@ -18,7 +52,18 @@ language-specific parts are isolated in something called
_environments_ (more below). Fission currently supports NodeJS, Python, Ruby, Go,
PHP, Bash, and any Linux executable, with more languages coming soon.
# Performance: 100msec cold start
Table of Contents
=================
- [Table of Contents](#table-of-contents)
- [Performance: 100msec cold start](#performance-100msec-cold-start)
- [Kubernetes is the right place for Serverless](#kubernetes-is-the-right-place-for-serverless)
- [Getting Started](#getting-started)
- [Learn More](#learn-more)
- [Contributing](#contributing)
- [Sponsors](#sponsors)
- [License](#license)
## Performance: 100msec cold start
Fission maintains a pool of "warm" containers that each contain a
small dynamic loader. When a function is first called,
@@ -26,7 +71,7 @@ i.e. "cold-started", a running container is chosen and the function is
loaded. This pool is what makes Fission fast: cold-start latencies
are typically about 100msec.
# Kubernetes is the right place for Serverless
## Kubernetes is the right place for Serverless
We're built on Kubernetes because we think any non-trivial app will
use a combination of serverless functions and more conventional
@@ -37,60 +82,43 @@ Building on Kubernetes also means that anything you do for operations
on your Kubernetes cluster &mdash; such as monitoring or log
aggregation &mdash; also helps with ops on your Fission deployment.
# Getting started and documentation
## Fission Concepts
Visit [concepts](https://docs.fission.io/docs/concepts/) for more details.
## Documentations
You can learn more about Fission and get started from [Fission Docs](https://docs.fission.io/docs).
* See the [installation guide](https://docs.fission.io/docs/installation/) for installing and running Fission.
* See the [troubleshooting guide](https://docs.fission.io/docs/trouble-shooting/) for debugging your functions and Fission installation.
## Usage
## Getting Started
```bash
# Add the stock NodeJS env to your Fission deployment
$ fission env create --name nodejs --image fission/node-env
# A javascript one-liner that prints "hello world"
$ curl https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js > hello.js
# Upload your function code to fission
$ fission function create --name hello --env nodejs --code hello.js
# Map GET /hello to your new function
$ fission route create --method GET --url /hello --function hello
# Create a function with a javascript one-liner that prints "hello world"
$ fission function create --name hello --env nodejs --code https://raw.githubusercontent.com/fission/examples/master/nodejs/hello.js
# Run the function. This takes about 100msec the first time.
$ fission function test --name hello
Hello, world!
```
# Contributing
## Learn More
## Building Fission
See the [compilation guide](https://docs.fission.io/docs/contributing/).
- Understand [Fission Concepts](https://fission.io/docs/concepts/).
- See the [installation guide](https://fission.io/docs/installation/) for installing and running Fission.
- You can learn more about Fission and get started from [Fission Docs](https://fission.io/docs).
- See the [troubleshooting guide](https://fission.io/docs/trouble-shooting/) for debugging your functions and Fission installation.
## Contact
Reach us on [slack](http://slack.fission.io) or [twitter](https://twitter.com/fissionio).
## Contributing
Fission is a project by [many contributors](https://github.com/fission/fission/graphs/contributors).
Check out the [contributing guide](CONTRIBUTING.md).
## Community meeting
## Sponsors
A regular community meeting takes place every other Thursday at 08:30 AM PT (Pacific Time). [Convert to your local timezone](http://www.thetimezoneconverter.com/?t=08:30&tz=PT%20%28Pacific%20Time%29).
The following companies, organizations, and individuals support Fission's ongoing maintenance and development. If you are using/contributing to Fission, we would be happy to list you here, please raise a Pull request.
# Official Releases
<p>
<a href="https://infracloud.io/"><img src="https://fission.io/sponsors/infracloud.png" alt="InfraCloud" height="70"></a>
<a href="https://srcmesh.com/"><img src="https://fission.io/sponsors/srcmesh.png" alt="Srcmesh" height="70"></a>
<a href="https://www.digitalocean.com/?utm_medium=opensource&utm_source=fissionio">
<img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/PoweredByDO/DO_Powered_by_Badge_blue.svg" width="201px">
</a>
</p>
Official releases of Fission can be found on [the releases page](https://github.com/fission/fission/releases).
Please note that it is strongly recommended that you use official releases of Fission, as unreleased versions from
the master branch are subject to changes and incompatibilities that will not be supported in the official releases.
Builds from the master branch can have functionality changed and even removed at any time without compatibility support
and without prior notice.
# License
# Licensing
Fission is under the Apache 2.0 license.
Fission is licensed under the Apache License 2.0 - see the [LICENSE](./LICENSE) file for details
+17
View File
@@ -0,0 +1,17 @@
# Security Policy
## Supported Versions
Please refer using [latest stable release](https://github.com/fission/fission/releases/latest) of Fission.
| Version | Supported |
| ------- | ------------------ |
| >=1.14.x | :white_check_mark: |
| < 1.14.0 | :x: |
## Reporting a Vulnerability
Please send the details to both of us:
- Sanket Sudake sanket@infracloud.io
- Vishal Biyani vishal@infracloud.io
-121
View File
@@ -1,121 +0,0 @@
# Fission
[Fission](http://fission.io/) 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`,
```bash
$ helm install --name my-release fission-all
```
## Uninstalling the chart
To uninstall/delete chart,
```bash
$ 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.7.0-rc.2`
`pullPolicy` | Image pull policy | `IfNotPresent`
`fetcherImage` | Fission fetcher repository | `fission/fetcher`
`fetcherImageTag` | Fission fetcher image tag | `1.7.0-rc.2`
`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`
`prometheus.enabled` | Set to true if prometheus needs to be deployed along with fission | `true` in `fission-all`, `false` in `fission-core`
`prometheus.serviceEndpoint` | If prometheus.enabled is false, please assign the prometheus service URL that is accessible by components. | `nil`
`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,
```bash
$ 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:
```bash
$ helm install --name my-release --set serviceType=NodePort,routerServiceType=NodePort fission-all
```
You can also set parameters with a yaml file (see [values.yaml](fission-all/values.yaml) for
what it should look like):
```bash
$ helm install --name my-release -f values.yaml fission-all
```
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: prometheus
repository: https://prometheus-community.github.io/helm-charts
version: 14.11.0
digest: sha256:1404b25cbdba70279240fead15b765d6945097fed5afc7e184da02dabfaa577a
generated: "2021-10-19T17:20:08.919609+05:30"
+24 -10
View File
@@ -1,15 +1,29 @@
apiVersion: v1
apiVersion: v2
name: fission-all
version: 1.7.0-rc.2
version: v1.15.0-rc2
appVersion: v1.15.0-rc2
description: Fission is a fast serverless framework for Kubernetes.
home: https://fission.io/
icon: https://fission.io/favicons/favicon.ico
sources:
- https://github.com/fission/fission
- https://github.com/fission/keda-connectors
keywords:
- fission
- serverless
home: http://fission.io/
- fission
- serverless
- platform
- faas
- functions
- Integration & Delivery
maintainers:
- name: Soam Vasani
email: soamvasani+1@gmail.com
- name: Ta Ching Chen
email: hello@tachingchen.com
- name: Vishal Biyani
email: vishal@infracloud.io
- name: Sanket Sudake
email: sanket@infracloud.io
engine: gotpl
appVersion: 1.7.0-rc.2
type: application
dependencies:
- name: prometheus
version: 14.11.0
repository: https://prometheus-community.github.io/helm-charts
condition: prometheus.enabled
+132
View File
@@ -0,0 +1,132 @@
# fission-all
[Fission](https://fission.io/) is a framework for serverless functions on Kubernetes.
## Prerequisites
- Kubernetes 1.19+
- Helm 3+
## Get Repo Info
```console
helm repo add fission-charts https://fission.github.io/fission-charts
helm repo update
```
_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._
## Install Chart
Replace `{{version}}` with [the latest Fission version](https://github.com/fission/fission/releases/latest).
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/fission/fission)
```console
# Helm
$ export FISSION_NAMESPACE="fission"
$ kubectl create namespace $FISSION_NAMESPACE
$ kubectl create -k "github.com/fission/fission/crds/v1?ref={{version}}"
$ helm install [RELEASE_NAME] fission-charts/fission-all --namespace fission
```
_See [configuration](#configuration) below._
_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._
## Dependencies
By default, this chart installs additional, dependent charts:
- [prometheus-community/prometheus](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus)
To disable dependencies during installation, see [multiple releases](#multiple-releases) below.
_See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._
## Uninstall Chart
```console
# Helm
$ helm uninstall [RELEASE_NAME]
```
This removes all the Kubernetes components associated with the chart and deletes the release.
_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._
CRDs are not removed by this chart and should be manually cleaned up:
`{{version}}` references the version you used during the installation of chart.
```console
kubectl delete -k "github.com/fission/fission/crds/v1?ref={{version}}"
```
OR
You can list all Fission CRDs and clean them up with `kubectl delete crd` command.
```console
kubectl get crds| grep ".fission.io"
```
## Upgrading Chart
CRDs created by this chart are not updated by default and should be manually updated.
`{{version}}` references the version you are upgrading to ![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/fission/fission)
```console
kubectl replace -k "github.com/fission/fission/crds/v1?ref={{version}}"
```
```console
# Helm
$ helm upgrade [RELEASE_NAME] fission-charts/fission-all
```
_See [configuration](#configuration) below._
_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._
### Upgrading an existing Release to a new major version
A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions.
### Upgrade from 1.14.x to 1.15.x
With 1.15.x release, following changes are made:
- `fission-core` chart is removed
- `fission-all` chart is made similar `fission-core` chart
- In the `fission-all` chart, the following components are disabled which were enabled by default earlier. If you want to enable them, please use `--set` flag.
- nats - Set `nats.enabled=true` to enable Fission Nats integration
- influxdb - Set `influxdb.enabled=true` to enable Fission InfluxDB and logger component
- prometheus - Set `prometheus.enabled=true` to install Prometheus with Fission
- canaryDeployment - Set `canaryDeployment.enabled=true` to enable Canary Deployment
## Migrating from fission-core chart
With the release of Fission v1.15.x, the fission-core chart was removed.
Fission-all is now exactly similar to fission-core and can be used to migrate from fission-core.
If you are upgrading from the fission-core chart, you can use the following command to migrate with required changes.
```console
helm upgrade [RELEASE_NAME] fission-charts/fission-all --namespace fission
```
## Configuration
See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments:
```console
helm show values fission-charts/fission-all
```
You may also `helm show values` on this chart's [dependencies](#dependencies) for additional options.
### Multiple releases
The same chart can be used to run multiple Fission instances in the same cluster if required. To disable a dependency during installation, set `prometheus.enabled` to `false`.
+2 -1
View File
@@ -16,7 +16,8 @@
[FILTER]
Name kubernetes
Match log.*
Match *
Kube_Tag_Prefix log.var.log.fission.
Kube_URL https://kubernetes.default.svc.cluster.local:443
#
-6
View File
@@ -1,6 +0,0 @@
dependencies:
- name: prometheus
repository: https://kubernetes-charts.storage.googleapis.com
version: 9.3.1
digest: sha256:89a63a5f01c08032106a94c59fc7a5929e449458bf5fd06d86c8b048ac628bf4
generated: "2019-11-18T10:16:20.334338911Z"
-5
View File
@@ -1,5 +0,0 @@
dependencies:
- name: prometheus
version: 9.3.1
repository: https://kubernetes-charts.storage.googleapis.com
condition: prometheus.enabled
+4 -4
View File
@@ -1,13 +1,13 @@
1. Install the client CLI.
Mac:
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-{{ .Chart.Version }}-darwin-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/
Linux:
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-{{ .Chart.Version }}-linux-amd64 && chmod +x fission && sudo mv fission /usr/local/bin/
Windows:
For Windows, you can use the linux binary on WSL. Or you can download this windows executable: https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-windows.exe
For Windows, you can use the linux binary on WSL. Or you can download this windows executable: https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-{{ .Chart.Version }}-windows-amd64.exe
2. You're ready to use Fission!
@@ -15,7 +15,7 @@ Windows:
$ fission env create --name nodejs --image fission/node-env
# Get a hello world
$ curl https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js > hello.js
$ curl https://raw.githubusercontent.com/fission/examples/master/nodejs/hello.js > hello.js
# Register this function with Fission
$ fission function create --name hello --env nodejs --code hello.js
+35 -1
View File
@@ -38,8 +38,42 @@ This template generates the image name for the deployment depending on the value
*/}}
{{- define "fission-bundleImage" -}}
{{- if .Values.repository -}}
{{- if eq .Values.imageTag "" -}}
{{ .Values.repository }}/{{ .Values.image }}
{{- else -}}
{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}
{{- end }}
{{- else -}}
{{ .Values.image }}:{{ .Values.imageTag }}
{{- if eq .Values.imageTag "" -}}
{{ .Values.image }}
{{- else -}}
{{ .Values.image }}:{{ .Values.imageTag }}
{{- end }}
{{- end }}
{{- end -}}
{{- define "opentelemtry.envs" }}
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "{{ .Values.openTelemetry.otlpCollectorEndpoint }}"
- name: OTEL_EXPORTER_OTLP_INSECURE
value: "{{ .Values.openTelemetry.otlpInsecure }}"
{{- if .Values.openTelemetry.otlpHeaders }}
- name: OTEL_EXPORTER_OTLP_HEADERS
value: "{{ .Values.openTelemetry.otlpHeaders }}"
{{- end }}
- name: OTEL_TRACES_SAMPLER
value: "{{ .Values.openTelemetry.tracesSampler }}"
- name: OTEL_TRACES_SAMPLER_ARG
value: "{{ .Values.openTelemetry.tracesSamplingRate }}"
- name: OTEL_PROPAGATORS
value: "{{ .Values.openTelemetry.propagators }}"
{{- end }}
{{- define "opentracing.envs" }}
- name: OPENTRACING_ENABLED
value: {{ .Values.openTracing.enabled | default false | quote }}
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.openTracing.collectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.openTracing.samplingRate | default "0.5" | quote }}
{{- end }}
@@ -26,7 +26,16 @@ spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "fission/alpinecurl"
{{- if .Values.imageTag }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"yaml-post-install\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "yaml-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
env:
- name: GA_TRACKING_ID
value: "{{ .Values.gaTrackingID }}"
serviceAccountName: fission-svc
{{- end }}
@@ -30,7 +30,22 @@ spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "fission/alpinecurl"
{{- if .Values.imageTag }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"helm-post-install\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "helm-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
env:
- name: GA_TRACKING_ID
value: "{{ .Values.gaTrackingID }}"
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- end }}
@@ -30,7 +30,22 @@ spec:
restartPolicy: Never
containers:
- name: post-upgrade-job
image: "fission/alpinecurl"
{{- if .Values.imageTag }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"helm-post-upgrade\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "helm-post-upgrade", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
env:
- name: GA_TRACKING_ID
value: "{{ .Values.gaTrackingID }}"
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- end }}
@@ -0,0 +1,63 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: buildermgr
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: buildermgr
spec:
replicas: 1
selector:
matchLabels:
svc: buildermgr
template:
metadata:
labels:
svc: buildermgr
spec:
containers:
- name: buildermgr
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
env:
- name: FETCHER_IMAGE
{{- if eq .Values.fetcher.imageTag "" }}
value: "{{ .Values.fetcher.image }}"
{{- else }}
value: "{{ .Values.fetcher.image }}:{{ .Values.fetcher.imageTag }}"
{{- end }}
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: FETCHER_MINCPU
value: {{ .Values.fetcher.resource.cpu.requests | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcher.resource.mem.requests | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcher.resource.cpu.limits | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcher.resource.mem.limits | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,115 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: fission-cr-admin
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- namespaces
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- '*'
- apiGroups:
- batch
resources:
- jobs
verbs:
- get
- list
- watch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- '*'
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- fission.io
resources:
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- '*'
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- '*'
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- '*'
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- keda.sh
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- '*'
{{- if .Values.mqt_keda.enabled }}
- apiGroups:
- keda.k8s.io
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- '*'
{{- end }}
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
@@ -0,0 +1,12 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fission-cr-admin
subjects:
- kind: ServiceAccount
name: fission-svc
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: fission-cr-admin
apiGroup: rbac.authorization.k8s.io
@@ -0,0 +1,5 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-svc
namespace: {{ .Release.Namespace }}
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-config
namespace: {{ .Release.Namespace }}
data:
"config.yaml": {{ include "config" . | b64enc }}
@@ -0,0 +1,81 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: controller
application: fission-api
spec:
replicas: 1
selector:
matchLabels:
svc: controller
application: fission-api
template:
metadata:
labels:
svc: controller
application: fission-api
spec:
containers:
- name: controller
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--controllerPort", "8888"]
env:
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
volumeMounts:
- name: config-volume
mountPath: /etc/config/config.yaml
subPath: config.yaml
ports:
- containerPort: 8888
name: http
{{- if .Values.pprof.enabled }}
- containerPort: 6060
name: pprof
{{- end }}
serviceAccountName: fission-svc
volumes:
- name: config-volume
configMap:
name: feature-config
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,18 @@
apiVersion: v1
kind: Service
metadata:
name: controller
labels:
svc: controller
application: fission-api
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: {{ .Values.serviceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.serviceType "NodePort" }}
nodePort: {{ .Values.controllerPort }}
{{- end }}
selector:
svc: controller
@@ -1,805 +0,0 @@
{{- if .Values.createNamespace }}
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.functionNamespace }}
labels:
name: fission-function
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.builderNamespace }}
labels:
name: fission-builder
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
{{- end }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-configmap-getter
rules:
- apiGroups:
- '*'
resources:
- secrets
- configmaps
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: package-getter
rules:
- apiGroups:
- '*'
resources:
- packages
verbs:
- get
- watch
- list
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-svc
namespace: {{ .Release.Namespace }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fission-admin
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: fission-svc
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: admin
apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fission-crd
subjects:
- kind: ServiceAccount
name: fission-svc
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-fetcher
namespace: {{ .Values.functionNamespace }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-builder
namespace: {{ .Values.builderNamespace }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-config
namespace: {{ .Release.Namespace }}
data:
"config.yaml": {{ include "config" . | b64enc }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: controller
application: fission-api
spec:
replicas: 1
selector:
matchLabels:
svc: controller
application: fission-api
template:
metadata:
labels:
svc: controller
application: fission-api
spec:
containers:
- name: controller
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--controllerPort", "8888"]
env:
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
volumeMounts:
- name: config-volume
mountPath: /etc/config/config.yaml
subPath: config.yaml
ports:
- containerPort: 8888
name: http
serviceAccountName: fission-svc
volumes:
- name: config-volume
configMap:
name: feature-config
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: executor
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: executor
spec:
replicas: 1
selector:
matchLabels:
svc: executor
template:
metadata:
labels:
svc: executor
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: executor
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}"]
env:
- name: FETCHER_IMAGE
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: RUNTIME_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: FETCHER_MINCPU
value: {{ .Values.fetcherMinCpu | default "10m" | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcherMinMem | default "16Mi" | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcherMaxCpu | default "1000m" | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcherMaxMem | default "128Mi" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: buildermgr
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: buildermgr
spec:
replicas: 1
selector:
matchLabels:
svc: buildermgr
template:
metadata:
labels:
svc: buildermgr
spec:
containers:
- name: buildermgr
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
env:
- name: FETCHER_IMAGE
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: FETCHER_MINCPU
value: {{ .Values.fetcherMinCpu | default "10m" | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcherMinMem | default "16Mi" | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcherMaxCpu | default "1000m" | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcherMaxMem | default "128Mi" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubewatcher
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: kubewatcher
spec:
replicas: 1
selector:
matchLabels:
svc: kubewatcher
template:
metadata:
labels:
svc: kubewatcher
spec:
containers:
- name: kubewatcher
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--kubewatcher", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: influxdb
labels:
svc: influxdb
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 8086
targetPort: 8086
selector:
svc: influxdb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: influxdb
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: influxdb
spec:
replicas: 1
selector:
matchLabels:
svc: influxdb
template:
metadata:
labels:
svc: influxdb
spec:
containers:
- name: influxdb
image: fission/influxdb
imagePullPolicy: {{ .Values.pullPolicy }}
env:
- name: PRE_CREATE_DB
value: fissionFunctionLog
- name: ADMIN_USER
valueFrom:
secretKeyRef:
name: influxdb
key: username
- name: INFLUXDB_INIT_PWD
valueFrom:
secretKeyRef:
name: influxdb
key: password
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- if .Values.heapster }}
---
apiVersion: v1
kind: Service
metadata:
name: heapster
namespace: kube-system
labels:
svc: heapster
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: heapster
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8082
selector:
svc: heapster
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: heapster
namespace: kube-system
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: heapster
spec:
replicas: 1
selector:
matchLabels:
svc: heapster
template:
metadata:
labels:
svc: heapster
spec:
containers:
- name: heapster
image: gcr.io/google_containers/heapster-amd64:v1.5.0
imagePullPolicy: {{ .Values.pullPolicy }}
command:
- /heapster
- --source=kubernetes:https://kubernetes.default
serviceAccountName: {{ .Release.Namespace }}/fission-svc
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: timer
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: timer
spec:
replicas: 1
selector:
matchLabels:
svc: timer
template:
metadata:
labels:
svc: timer
spec:
containers:
- name: timer
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--timer", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
#
# This is commented out until fission-ui allows configuring the
# namespace. Right now it just crashes if Release.Namespace !=
# "fission".
#
#---
#apiVersion: apps/v1
#kind: Deployment
#metadata:
# name: fission-ui
# labels:
# chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
#spec:
# replicas: 1
# template:
# metadata:
# labels:
# svc: fission-ui
# spec:
# containers:
# - name: nginx
# image: {{ .Values.repository }}/{{ .Values.fissionUiImage }}
# imagePullPolicy: {{ .Values.pullPolicy }}
# - name: kubectl-proxy
# image: {{ .Values.repository }}/lachlanevenson/k8s-kubectl
# args: ["proxy", "--port", "8001", "--address", "127.0.0.1"]
# serviceAccountName: fission-svc
{{- if .Values.nats.enabled }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
svc: nats-streaming
name: nats-streaming
spec:
replicas: 1
selector:
matchLabels:
svc: nats-streaming
template:
metadata:
labels:
svc: nats-streaming
spec:
containers:
- name: nats-streaming
image: nats-streaming
imagePullPolicy: {{ .Values.pullPolicy }}
args: [
"--cluster_id", "{{ .Values.nats.clusterID }}",
"--auth", "{{ .Values.nats.authToken }}",
"--max_channels", "0",
"--http_port", "4223"
]
ports:
- containerPort: 4222
protocol: TCP
- containerPort: 4223
protocol: TCP
readinessProbe:
httpGet:
path: "/streaming/serverz"
port: 4223
initialDelaySeconds: 30
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/streaming/serverz"
port: 4223
initialDelaySeconds: 30
periodSeconds: 5
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-nats-streaming
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: nats-streaming
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: nats-streaming
template:
metadata:
labels:
svc: mqtrigger
messagequeue: nats-streaming
spec:
containers:
- name: mqtrigger
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: MESSAGE_QUEUE_TYPE
value: nats-streaming
- name: MESSAGE_QUEUE_URL
value: nats://{{ .Values.nats.authToken }}@nats-streaming:4222
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
{{- if .Values.kafka.enabled }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-kafka
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: kafka
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: kafka
template:
metadata:
labels:
svc: mqtrigger
messagequeue: kafka
spec:
containers:
- name: mqtrigger
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: MESSAGE_QUEUE_TYPE
value: kafka
- name: MESSAGE_QUEUE_URL
value: "{{.Values.kafka.brokers}}"
- name: MESSAGE_QUEUE_KAFKA_VERSION
value: "{{.Values.kafka.version}}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
# TLS authentication is TLS with authentication (2 way)
# More info: https://docs.confluent.io/current/kafka/authentication_ssl.html#ssl-overview
{{- if .Values.kafka.authentication.tls.enabled }}
- name: TLS_ENABLED
value: "true"
- name: MESSAGE_QUEUE_SECRETS
value: /etc/fission/secrets
volumeMounts:
- name: kafka-secrets
mountPath: /etc/fission/secrets
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.kafka.authentication.tls.enabled }}
volumes:
- name: kafka-secrets
secret:
secretName: mqtrigger-kafka-secrets
{{- end }}
---
{{- if .Values.kafka.authentication.tls.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: mqtrigger-kafka-secrets
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
data:
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) }}
caCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) | b64enc }}
{{- else }}
{{ fail "Invalid chart. CA Certificate not found." }}
{{- end }}
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) }}
userCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) | b64enc }}
{{- else }}
{{ fail "Invalid chart. User Certificate not found." }}
{{- end }}
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) }}
userKey: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) | b64enc }}
{{- else }}
{{ fail "Invalid chart. User Key not found." }}
{{- end }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
{{- if .Values.azureStorageQueue.enabled }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-azure-storage-queue
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: azure-storage-queue
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: azure-storage-queue
template:
metadata:
labels:
svc: mqtrigger
messagequeue: azure-storage-queue
spec:
containers:
- name: mqtrigger
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: MESSAGE_QUEUE_TYPE
value: azure-storage-queue
- name: AZURE_STORAGE_ACCOUNT_NAME
value: {{ required "An Azure storage account name is required." .Values.azureStorageQueue.accountName }}
- name: AZURE_STORAGE_ACCOUNT_KEY
valueFrom:
secretKeyRef:
name: azure-storage-account-key
key: key
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: storagesvc
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: storagesvc
application: fission-storage
spec:
replicas: 1
selector:
matchLabels:
svc: storagesvc
application: fission-storage
template:
metadata:
labels:
svc: storagesvc
application: fission-storage
spec:
containers:
- name: storagesvc
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--storageServicePort", "8000", "--filePath", "/fission"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: PRUNE_INTERVAL
value: "{{.Values.pruneInterval}}"
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
volumeMounts:
- name: fission-storage
mountPath: /fission
readinessProbe:
httpGet:
path: "/healthz"
port: 8000
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8000
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8000
name: http
serviceAccountName: fission-svc
volumes:
- name: fission-storage
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }}
{{- else }}
emptyDir: {}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,99 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: executor
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: executor
spec:
replicas: 1
selector:
matchLabels:
svc: executor
template:
metadata:
labels:
svc: executor
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: executor
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}"]
env:
- name: FETCHER_IMAGE
{{- if eq .Values.fetcher.imageTag "" }}
value: "{{ .Values.fetcher.image }}"
{{- else }}
value: "{{ .Values.fetcher.image }}:{{ .Values.fetcher.imageTag }}"
{{- end }}
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: RUNTIME_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: ADOPT_EXISTING_RESOURCES
value: {{ .Values.executor.adoptExistingResources | default false | quote }}
- name: POD_READY_TIMEOUT
value: {{ .Values.executor.podReadyTimeout | default false | quote }}
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: FETCHER_MINCPU
value: {{ .Values.fetcher.resource.cpu.requests | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcher.resource.mem.requests | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcher.resource.cpu.limits | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcher.resource.mem.limits | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
{{- if .Values.pprof.enabled }}
- containerPort: 6060
name: pprof
{{- end }}
{{- if .Values.executor.terminationMessagePath }}
terminationMessagePath: {{ .Values.executor.terminationMessagePath }}
{{- else if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.executor.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.executor.terminationMessagePolicy }}
{{- else if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.executor.priorityClassName }}
priorityClassName: {{ .Values.executor.priorityClassName }}
{{- else if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: executor
labels:
svc: executor
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8888
selector:
svc: executor
@@ -1,3 +1,4 @@
{{- if .Values.influxdb.enabled }}
# Fluentbit deployment for Fission
#
# Requires:
@@ -19,6 +20,64 @@ data:
{{ else }}
{{ fail "invalid chart" }}
{{- end }}
{{- if .Values.logger.podSecurityPolicy.enabled }}
---
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: {{ .Release.Name }}-fission-logger-privileged
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: logger
spec:
privileged: true
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
runAsUser:
rule: RunAsAny
fsGroup:
rule: RunAsAny
volumes:
- '*'
{{- if .Values.logger.podSecurityPolicy.additionalCapabilities }}
allowedCapabilities:
{{- range .Values.logger.podSecurityPolicy.additionalCapabilities }}
- {{ . }}
{{- end }}
{{- end }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: psp:{{ .Release.Name }}-fission-logger-privileged
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: logger
rules:
- apiGroups: ['policy']
resources: ['podsecuritypolicies']
verbs: ['use']
resourceNames:
- {{ .Release.Name }}-fission-logger-privileged
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: psp:{{ .Release.Name }}-fission-logger-privileged
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: logger
roleRef:
kind: Role
name: psp:{{ .Release.Name }}-fission-logger-privileged
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: default
namespace: {{ .Release.Namespace }}
{{- end }}
---
apiVersion: apps/v1
kind: DaemonSet
@@ -38,7 +97,7 @@ spec:
spec:
initContainers:
- name: init
image: busybox
image: {{ .Values.busyboxImage | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ['mkdir', '-p', '/var/log/fission']
volumeMounts:
@@ -51,11 +110,7 @@ spec:
{{- end }}
containers:
- name: logger
{{ if .Values.repository }}
image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}"
{{ else }}
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
{{ end }}
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
env:
- name: NODE_NAME
@@ -63,6 +118,8 @@ spec:
fieldRef:
apiVersion: v1
fieldPath: spec.nodeName
- name: OPENTRACING_ENABLED
value: {{ .Values.openTracing.enabled | default false | quote }}
command: ["/fission-bundle"]
args: ["--logger"]
volumeMounts:
@@ -104,6 +161,8 @@ spec:
key: password
- name: LOG_PATH
value: /var/log/fission/*.log
- name: OPENTRACING_ENABLED
value: {{ .Values.openTracing.enabled | default false | quote }}
{{- if .Values.logger.enableSecurityContext }}
securityContext:
privileged: true
@@ -132,3 +191,4 @@ spec:
name: {{ .Release.Name }}-fission-fluentbit
updateStrategy:
type: RollingUpdate
{{- end }}
@@ -0,0 +1,55 @@
{{- if .Values.influxdb.enabled }}
apiVersion: v1
kind: Service
metadata:
name: influxdb
labels:
svc: influxdb
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 8086
targetPort: 8086
selector:
svc: influxdb
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: influxdb
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: influxdb
spec:
replicas: 1
selector:
matchLabels:
svc: influxdb
template:
metadata:
labels:
svc: influxdb
spec:
containers:
- name: influxdb
image: {{ .Values.influxdb.image | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
env:
- name: INFLUXDB_DB
value: fissionFunctionLog
- name: INFLUXDB_ADMIN_USER
valueFrom:
secretKeyRef:
name: influxdb
key: username
- name: INFLUXDB_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: influxdb
key: password
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -0,0 +1,12 @@
{{- if .Values.influxdb.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: influxdb
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
type: Opaque
data:
username: {{ .Values.logger.influxdbAdmin | b64enc | quote }}
password: {{ randAlphaNum 20 | b64enc | quote }}
{{- end }}
@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubewatcher
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: kubewatcher
spec:
replicas: 1
selector:
matchLabels:
svc: kubewatcher
template:
metadata:
labels:
svc: kubewatcher
spec:
containers:
- name: kubewatcher
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--kubewatcher", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,33 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-configmap-getter
rules:
- apiGroups:
- "*"
resources:
- secrets
- configmaps
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: package-getter
rules:
- apiGroups:
- "*"
resources:
- packages
verbs:
- "*"
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- "*"
@@ -0,0 +1,24 @@
{{- if .Values.createNamespace }}
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.functionNamespace }}
labels:
name: fission-function
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.builderNamespace }}
labels:
name: fission-builder
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
{{- end }}
@@ -0,0 +1,70 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: fission-fetcher
namespace: default
rules:
- apiGroups:
- ""
resources:
- configmaps
- secrets
- pods
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- "*"
- apiGroups:
- fission.io
resources:
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: fission-builder
namespace: default
rules:
- apiGroups:
- fission.io
resources:
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ .Values.functionNamespace }}
name: event-fetcher
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
- apiGroups: [""] # "" indicates the core API group
resources: ["events"]
verbs: ["*"]
@@ -0,0 +1,43 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: fission-fetcher
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: fission-fetcher
subjects:
- kind: ServiceAccount
name: fission-fetcher
namespace: {{ .Values.functionNamespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: fission-builder
namespace: default
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: fission-builder
subjects:
- kind: ServiceAccount
name: fission-builder
namespace: {{ .Values.builderNamespace }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: fission-fetcher-pod-reader
namespace: {{ .Values.functionNamespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: event-fetcher
subjects:
- kind: ServiceAccount
name: fission-fetcher
namespace: {{ .Values.functionNamespace }}
@@ -0,0 +1,12 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-fetcher
namespace: {{ .Values.functionNamespace }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-builder
namespace: {{ .Values.builderNamespace }}
@@ -0,0 +1,58 @@
{{- if .Values.azureStorageQueue.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-azure-storage-queue
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: azure-storage-queue
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: azure-storage-queue
template:
metadata:
labels:
svc: mqtrigger
messagequeue: azure-storage-queue
spec:
containers:
- name: mqtrigger
{{- if eq .Values.imageTag "" }}
image: "{{ .Values.image }}"
{{- else }}
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: MESSAGE_QUEUE_TYPE
value: azure-storage-queue
- name: AZURE_STORAGE_ACCOUNT_NAME
value: {{ required "An Azure storage account name is required." .Values.azureStorageQueue.accountName }}
- name: AZURE_STORAGE_ACCOUNT_KEY
valueFrom:
secretKeyRef:
name: azure-storage-account-key
key: key
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -1,16 +1,4 @@
apiVersion: v1
kind: Secret
metadata:
name: influxdb
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
type: Opaque
data:
username: {{ .Values.logger.influxdbAdmin | b64enc | quote }}
password: {{ randAlphaNum 20 | b64enc | quote }}
{{- if .Values.azureStorageQueue.enabled }}
---
apiVersion: v1
kind: Secret
metadata:
@@ -0,0 +1,100 @@
{{- if .Values.kafka.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-kafka
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: kafka
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: kafka
template:
metadata:
labels:
svc: mqtrigger
messagequeue: kafka
spec:
containers:
- name: mqtrigger
{{- if eq .Values.imageTag "" }}
image: "{{ .Values.image }}"
{{- else }}
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: MESSAGE_QUEUE_TYPE
value: kafka
- name: MESSAGE_QUEUE_URL
value: "{{.Values.kafka.brokers}}"
- name: MESSAGE_QUEUE_KAFKA_VERSION
value: "{{.Values.kafka.version}}"
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
# TLS authentication is TLS with authentication (2 way)
# More info: https://docs.confluent.io/current/kafka/authentication_ssl.html#ssl-overview
{{- if .Values.kafka.authentication.tls.enabled }}
- name: TLS_ENABLED
value: "true"
- name: MESSAGE_QUEUE_SECRETS
value: /etc/fission/secrets
- name: INSECURE_SKIP_VERIFY
value: "{{ .Values.kafka.authentication.tls.insecureSkipVerify }}"
volumeMounts:
- name: kafka-secrets
mountPath: /etc/fission/secrets
{{- end }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.kafka.authentication.tls.enabled }}
volumes:
- name: kafka-secrets
secret:
secretName: mqtrigger-kafka-secrets
{{- end }}
---
{{- if .Values.kafka.authentication.tls.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: mqtrigger-kafka-secrets
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
data:
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) }}
caCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) | b64enc }}
{{- else }}
{{ fail "Invalid chart. CA Certificate not found." }}
{{- end }}
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) }}
userCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) | b64enc }}
{{- else }}
{{ fail "Invalid chart. User Certificate not found." }}
{{- end }}
{{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) }}
userKey: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) | b64enc }}
{{- else }}
{{ fail "Invalid chart. User Key not found." }}
{{- end }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -0,0 +1,116 @@
{{- if .Values.nats.enabled }}
{{- if not .Values.nats.external }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-nats-streaming
namespace: {{ .Release.Namespace }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
svc: nats-streaming
name: nats-streaming
spec:
replicas: 1
selector:
matchLabels:
svc: nats-streaming
template:
metadata:
labels:
svc: nats-streaming
spec:
serviceAccount: fission-nats-streaming
containers:
- name: nats-streaming
image: "{{ .Values.nats.streamingserver.image }}:{{ .Values.nats.streamingserver.tag }}"
imagePullPolicy: {{ .Values.pullPolicy }}
args: [
"--cluster_id", "{{ .Values.nats.clusterID }}",
"--auth", "{{ .Values.nats.authToken }}",
"--max_channels", "0",
"--http_port", "4223"
]
ports:
- containerPort: 4222
protocol: TCP
- containerPort: 4223
protocol: TCP
readinessProbe:
httpGet:
path: "/streaming/serverz"
port: 4223
initialDelaySeconds: 30
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/streaming/serverz"
port: 4223
initialDelaySeconds: 30
periodSeconds: 5
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
{{- end }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-nats-streaming
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger
messagequeue: nats-streaming
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger
messagequeue: nats-streaming
template:
metadata:
labels:
svc: mqtrigger
messagequeue: nats-streaming
spec:
containers:
- name: mqtrigger
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: MESSAGE_QUEUE_TYPE
value: nats-streaming
- name: MESSAGE_QUEUE_CLUSTER_ID
value: {{ .Values.nats.clusterID }}
- name: MESSAGE_QUEUE_QUEUE_GROUP
value: {{ .Values.nats.queueGroup }}
- name: MESSAGE_QUEUE_CLIENT_ID
value: {{ .Values.nats.clientID }}
- name: MESSAGE_QUEUE_URL
{{- if .Values.nats.authToken }}
value: nats://{{ .Values.nats.authToken }}@{{ .Values.nats.hostaddress }}
{{- else }}
value: nats://{{ .Values.nats.hostaddress }}
{{- end }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -0,0 +1,19 @@
{{- if and .Values.nats.enabled (not .Values.nats.external) }}
apiVersion: v1
kind: Service
metadata:
name: nats-streaming
labels:
svc: nats-streaming
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: {{ .Values.serviceType }}
ports:
- port: 4222
targetPort: 4222
{{- if eq .Values.serviceType "NodePort" }}
nodePort: {{ .Values.natsStreamingPort }}
{{- end }}
selector:
svc: nats-streaming
{{- end }}
@@ -0,0 +1,62 @@
{{- if .Values.mqt_keda.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: mqtrigger-keda
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: mqtrigger-keda
messagequeue: keda
spec:
replicas: 1
selector:
matchLabels:
svc: mqtrigger-keda
messagequeue: keda
template:
metadata:
labels:
svc: mqtrigger-keda
messagequeue: keda
spec:
containers:
- name: mqtrigger-keda
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--mqt_keda", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: CONNECTOR_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: KAFKA_IMAGE
value: "{{ .Values.mqt_keda.connector_images.kafka.image }}:{{ .Values.mqt_keda.connector_images.kafka.tag }}"
- name: RABBITMQ_IMAGE
value: "{{ .Values.mqt_keda.connector_images.rabbitmq.image }}:{{ .Values.mqt_keda.connector_images.rabbitmq.tag }}"
- name: AWS-KINESIS-STREAM_IMAGE
value: "{{ .Values.mqt_keda.connector_images.awskinesis.image }}:{{ .Values.mqt_keda.connector_images.awskinesis.tag }}"
- name: AWS-SQS-QUEUE_IMAGE
value: "{{ .Values.mqt_keda.connector_images.aws_sqs.image }}:{{ .Values.mqt_keda.connector_images.aws_sqs.tag }}"
- name: STAN_IMAGE
value: "{{ .Values.mqt_keda.connector_images.nats_steaming.image }}:{{ .Values.mqt_keda.connector_images.nats_steaming.tag }}"
- name: GCP-PUB-SUB_IMAGE
value: "{{ .Values.mqt_keda.connector_images.gcp_pub_sub.image }}:{{ .Values.mqt_keda.connector_images.gcp_pub_sub.tag }}"
- name: REDIS_IMAGE
value: "{{ .Values.mqt_keda.connector_images.redis.image }}:{{ .Values.mqt_keda.connector_images.redis.tag }}"
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -1,3 +1,4 @@
{{- if .Values.preUpgradeChecks.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
@@ -26,8 +27,19 @@ spec:
restartPolicy: Never
containers:
- name: pre-upgrade-job
image: {{ .Values.preUpgradeChecksImage }}:{{ .Values.imageTag }}
{{- if .Values.preUpgradeChecks.imageTag }}
image: {{ .Values.preUpgradeChecks.image }}:{{ .Values.preUpgradeChecks.imageTag }}
{{- else }}
image: {{ .Values.preUpgradeChecks.image }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: [ "/pre-upgrade-checks" ]
args: ["--fn-pod-namespace", "{{ .Values.functionNamespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- end }}
@@ -1,33 +0,0 @@
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "fullname" . }}-{{ .Chart.Version }}-{{ randNumeric 3 }}
labels:
# The "release" convention makes it easy to tie a release to all of the
# Kubernetes resources that were created as part of that release.
release: "{{ .Release.Name }}"
# This makes it easy to audit chart usage.
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app: {{ template "name" . }}
annotations:
# This is what defines this resource as a hook. Without this line, the
# job is considered part of the release.
"helm.sh/hook": pre-upgrade
"helm.sh/hook-delete-policy": hook-succeeded
spec:
backoffLimit: 0
template:
metadata:
name: {{ template "fullname" . }}
labels:
release: "{{ .Release.Name }}"
app: {{ template "name" . }}
spec:
restartPolicy: Never
containers:
- name: pre-upgrade-job
image: {{ .Values.preUpgradeChecksImage }}:{{ .Values.imageTag }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: [ "/pre-upgrade-checks" ]
args: ["--fn-pod-namespace", "{{ .Values.functionNamespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
serviceAccountName: fission-svc
-23
View File
@@ -1,23 +0,0 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: fission-storage-pvc
labels:
app: fission-storage
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: {{ .Values.persistence.storageClass | quote }}
{{- end }}
{{- end }}
{{- end }}
-94
View File
@@ -1,94 +0,0 @@
apiVersion: apps/v1
{{- if not .Values.router.deployAsDaemonSet }}
kind: Deployment
{{- else }}
kind: DaemonSet
{{- end }}
metadata:
name: router
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: router
application: fission-router
spec:
{{- if not .Values.router.deployAsDaemonSet }}
replicas: 1
{{- end }}
selector:
matchLabels:
application: fission-router
svc: router
template:
metadata:
labels:
application: fission-router
svc: router
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: router
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--routerPort", "8888", "--executorUrl", "http://executor.{{ .Release.Namespace }}"]
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: ROUTER_ROUND_TRIP_TIMEOUT
value: {{ .Values.router.roundTrip.timeout | default "50ms" | quote }}
- name: ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT
value: {{ .Values.router.roundTrip.timeoutExponent | default 2 | quote }}
- name: ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME
value: {{ .Values.router.roundTrip.keepAliveTime | default "30s" | quote }}
- name: ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE
value: {{ .Values.router.roundTrip.disableKeepAlive | default true | quote }}
- name: ROUTER_ROUND_TRIP_MAX_RETRIES
value: {{ .Values.router.roundTrip.maxRetries | default 10 | quote }}
- name: ROUTER_SVC_ADDRESS_MAX_RETRIES
value: {{ .Values.router.svcAddressMaxRetries | default 5 | quote }}
- name: ROUTER_SVC_ADDRESS_UPDATE_TIMEOUT
value: {{ .Values.router.svcAddressUpdateTimeout | default "30s" | quote }}
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.router.traceSamplingRate | default "0.5" | quote }}
- name: USE_ENCODED_PATH
value: {{ .Values.router.useEncodedPath | default false | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: DISPLAY_ACCESS_LOG
value: {{ .Values.router.displayAccessLog | default false | quote }}
{{- if .Values.analytics }}
- name: ANALYTICS_URL
value: "https://g.fission.sh/metrics"
{{- else if .Values.analyticsNonHelmInstall }}
- name: ANALYTICS_URL
value: "https://g.fission.sh/metrics"
{{- end }}
readinessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -0,0 +1,114 @@
apiVersion: apps/v1
{{- if not .Values.router.deployAsDaemonSet }}
kind: Deployment
{{- else }}
kind: DaemonSet
{{- end }}
metadata:
name: router
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: router
application: fission-router
spec:
{{- if not .Values.router.deployAsDaemonSet }}
replicas: 1
{{- end }}
selector:
matchLabels:
application: fission-router
svc: router
template:
metadata:
labels:
application: fission-router
svc: router
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: router
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--routerPort", "8888", "--executorUrl", "http://executor.{{ .Release.Namespace }}"]
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: ROUTER_ROUND_TRIP_TIMEOUT
value: {{ .Values.router.roundTrip.timeout | default "50ms" | quote }}
- name: ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT
value: {{ .Values.router.roundTrip.timeoutExponent | default 2 | quote }}
- name: ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME
value: {{ .Values.router.roundTrip.keepAliveTime | default "30s" | quote }}
- name: ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE
value: {{ .Values.router.roundTrip.disableKeepAlive | default true | quote }}
- name: ROUTER_ROUND_TRIP_MAX_RETRIES
value: {{ .Values.router.roundTrip.maxRetries | default 10 | quote }}
- name: ROUTER_SVC_ADDRESS_MAX_RETRIES
value: {{ .Values.router.svcAddressMaxRetries | default 5 | quote }}
- name: ROUTER_SVC_ADDRESS_UPDATE_TIMEOUT
value: {{ .Values.router.svcAddressUpdateTimeout | default "30s" | quote }}
- name: ROUTER_UNTAP_SERVICE_TIMEOUT
value: {{ .Values.router.unTapServiceTimeout | default "3600s" | quote }}
- name: USE_ENCODED_PATH
value: {{ .Values.router.useEncodedPath | default false | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
- name: DISPLAY_ACCESS_LOG
value: {{ .Values.router.displayAccessLog | default false | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
resources:
{{- toYaml .Values.router.resources | indent 10 }}
readinessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
{{- if .Values.pprof.enabled }}
- containerPort: 6060
name: pprof
{{- end }}
{{- if .Values.router.terminationMessagePath }}
terminationMessagePath: {{ .Values.router.terminationMessagePath }}
{{- else if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.router.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.router.terminationMessagePolicy }}
{{- else if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.router.priorityClassName }}
priorityClassName: {{ .Values.router.priorityClassName }}
{{- else if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.router.extraCoreComponentPodConfig }}
{{ toYaml .Values.router.extraCoreComponentPodConfig | indent 6 -}}
{{- else }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end }}
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: router
labels:
svc: router
application: fission-router
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.router.svcAnnotations }}
annotations:
{{ toYaml .Values.router.svcAnnotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.routerServiceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.routerServiceType "NodePort" }}
nodePort: {{ .Values.routerPort }}
{{- end }}
selector:
svc: router
@@ -0,0 +1,101 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: storagesvc
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: storagesvc
application: fission-storage
spec:
replicas: 1
selector:
matchLabels:
svc: storagesvc
application: fission-storage
template:
metadata:
labels:
svc: storagesvc
application: fission-storage
spec:
containers:
- name: storagesvc
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
{{- if and (.Values.persistence.enabled) (eq (.Values.persistence.storageType | default "local") "s3") }}
args: ["--storageServicePort", "8000", "--storageType", "s3"]
{{- else }}
args: ["--storageServicePort", "8000", "--storageType", "local"]
{{- end }}
env:
- name: PRUNE_INTERVAL
value: "{{.Values.pruneInterval}}"
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- if and (.Values.persistence.enabled) (eq (.Values.persistence.storageType | default "local") "s3") }}
- name: STORAGE_S3_ENDPOINT
value: {{ .Values.persistence.s3.endPoint }}
- name: STORAGE_S3_BUCKET_NAME
value: {{ .Values.persistence.s3.bucketName }}
- name: STORAGE_S3_SUB_DIR
value: {{ .Values.persistence.s3.subDir }}
- name: STORAGE_S3_ACCESS_KEY_ID
value: {{ .Values.persistence.s3.accessKeyId }}
- name: STORAGE_S3_SECRET_ACCESS_KEY
value: {{ .Values.persistence.s3.secretAccessKey }}
- name: STORAGE_S3_REGION
value: {{ .Values.persistence.s3.region }}
{{- end }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if ne (.Values.persistence.storageType | default "local") "s3" }}
volumeMounts:
- name: fission-storage
mountPath: /fission
{{- end }}
readinessProbe:
httpGet:
path: "/healthz"
port: 8000
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8000
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8000
name: http
{{- if .Values.pprof.enabled }}
- containerPort: 6060
name: pprof
{{- end }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if and (.Values.persistence.enabled) (ne (.Values.persistence.storageType | default "local") "s3") }}
volumes:
- name: fission-storage
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }}
{{- else }}
volumes:
- name: fission-storage
emptyDir: {}
{{- end }}
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -1,4 +1,4 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
{{- if and (.Values.persistence.enabled) (not .Values.persistence.existingClaim) (eq (.Values.persistence.storageType | default "local") "local") }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: storagesvc
labels:
svc: storagesvc
application: fission-storage
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
selector:
svc: storagesvc
-95
View File
@@ -1,95 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: router
labels:
svc: router
application: fission-router
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.router.svcAnnotations }}
annotations:
{{ toYaml .Values.router.svcAnnotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.routerServiceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.routerServiceType "NodePort" }}
nodePort: {{ .Values.routerPort }}
{{- end }}
selector:
svc: router
---
apiVersion: v1
kind: Service
metadata:
name: controller
labels:
svc: controller
application: fission-api
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: {{ .Values.serviceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.serviceType "NodePort" }}
nodePort: {{ .Values.controllerPort }}
{{- end }}
selector:
svc: controller
{{- if .Values.nats.enabled }}
---
apiVersion: v1
kind: Service
metadata:
name: nats-streaming
labels:
svc: nats-streaming
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: {{ .Values.serviceType }}
ports:
- port: 4222
targetPort: 4222
{{- if eq .Values.serviceType "NodePort" }}
nodePort: {{ .Values.natsStreamingPort }}
{{- end }}
selector:
svc: nats-streaming
{{- end }}
---
apiVersion: v1
kind: Service
metadata:
name: storagesvc
labels:
svc: storagesvc
application: fission-storage
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
selector:
svc: storagesvc
---
apiVersion: v1
kind: Service
metadata:
name: executor
labels:
svc: executor
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8888
selector:
svc: executor
@@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: timer
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: timer
spec:
replicas: 1
selector:
matchLabels:
svc: timer
template:
metadata:
labels:
svc: timer
spec:
containers:
- name: timer
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--timer", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "opentracing.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.terminationMessagePath }}
terminationMessagePath: {{ .Values.terminationMessagePath }}
{{- end }}
{{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }}
serviceAccountName: fission-svc
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
+421 -88
View File
@@ -1,90 +1,175 @@
#
# Fission chart configuration
#
## Fission chart configuration
##
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
## serviceType to consider while creating Fission Controller service.
## For minikube/kind, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
##
serviceType: ClusterIP
## routerServiceType to consider while creating Fission Router service.
## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
##
routerServiceType: LoadBalancer
## Image base repository
## Leave it empty for using existing local image
## repository represents base repository for images used in the chart.
## Keep it empty for using existing local image
##
repository: index.docker.io
## Fission image repository
## image represents the base image fission-bundle used by multiple Fission components.
## We alter arguments to the image to run a particular component.
##
image: fission/fission-bundle
## Image pull policy
## imageTag represents the tag of the base image fission-bundle used by multiple Fission components.
## It is also used by the chart to identify version of the few more images apart from fission-bundle.
## Keep it empty for using latest tag.
##
imageTag: v1.15.0-rc2
## pullPolicy represents the pull policy to use for images in the chart.
##
pullPolicy: IfNotPresent
## Fission image version
imageTag: 1.7.0-rc.2
## priorityClassName represents the priority class name to use for Fission components.
## Refer to https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
## executor.priorityClassName takes precedence over this value for executor.
## router.priorityClassName takes precedence over this value for router.
##
priorityClassName: ""
## Fission fetcher repository
fetcherImage: fission/fetcher
## terminationMessagePath is the path at which the pod termination message will be written.
## executor.terminationMessagePath takes precedence over this value for executor.
## router.terminationMessagePath takes precedence over this value for router.
##
terminationMessagePath: /dev/termination-log
## Fission fetcher image version
fetcherImageTag: 1.7.0-rc.2
## terminationMessagePolicy is the policy for the termination message.
## executor.terminationMessagePolicy takes precedence over this value for executor.
## router.terminationMessagePolicy takes precedence over this value for router.
##
terminationMessagePolicy: File
## Port at which Fission controller service should be exposed
## controllerPort represents the port at which the Fission controller service should be exposed.
##
controllerPort: 31313
## Port at which Fission router service should be exposed
## routerPort represents the port at which the Fission Router service should be exposed.
##
routerPort: 31314
## Port at which NATS streaming service should be exposed
natsStreamingPort: 31316
## Set to false if you create the namespaces manually
createNamespace: true
## Namespace in which to run fission functions (this is different from
## the release namespace)
## functionNamespace represents the namespace in which Fission Function resources will be created.
## This is different from the release namespace.
##
functionNamespace: fission-function
## Namespace in which to run fission builders (this is different from
## the release namespace)
## builderNamespace represents the namespace in which Fission Builder resources will be created.
## This is different from the release namespace.
##
builderNamespace: fission-builder
## Enable istio integration
## createNamespace decides to create namespaces by the chart.
## If set to true, functionNamespace and builderNamespace namespaces mentioned above will be created by the chart.
## Set to false if you want to create the namespaces manually.
##
createNamespace: true
## enableIstio indicates whether to enable istio integration.
##
enableIstio: false
## Logger config
logger:
influxdbAdmin: "admin"
fluentdImageRepository: index.docker.io
fluentdImage: fluent/fluent-bit
fluentdImageTag: 1.0.4
## Fluent-bit writes/reads its own sqlite database to record a history of tracked
## files and a state of offsets, this is very useful to resume a state if the ser-
## vice is restarted. For Kubernetes environment with constraints like OpenShift,
## the containers are limited to write hostPath volume. Hence, we have to enable
## security context and set privileged to true.
enableSecurityContext: false
## fetcher is a light weight component that helps in running functions.
## fetcher helps in fetching function source code/build and uploading it when function is invoked.
##
fetcher:
## image represents the image of the fetcher component.
image: fission/fetcher
## imageTag represents the tag of the image of the fetcher component.
imageTag: v1.15.0-rc2
## Router config
## Fetcher is only for to downloading or uploading archive.
## Normally, you don't need to change the value here, unless necessary.
##
resource:
## cpu represents the cpu resource required by the fetcher component.
##
cpu:
requests: "10m"
## Low CPU limits will increases the function specialization time.
limits: ""
## mem represents the memory resource required by the fetcher component.
##
mem:
requests: "16Mi"
limits: ""
## executor is responsible for providing resources to your functions.
##
executor:
## executor priorityClassName
## Ref. https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
## Recommended to use system-cluster-critical for executor pods.
##
priorityClassName: ""
## terminationMessagePath is the path at which the file to which the executor will write a message upon termination.
##
terminationMessagePath: ""
## terminationMessagePolicy is the policy for the executor termination message.
##
terminationMessagePolicy: ""
## adoptExistingResources decides whether to adopt existing resources when executor restarts or Fission is redeployed.
##
adoptExistingResources: false
## podReadyTimeout represents the timeout in seconds for waiting for pod to become ready.
## This is applicable to Pool Manager executor type only.
##
podReadyTimeout: 300s
## router is responsible for routing function calls to the appropriate function.
##
router:
## router priorityClassName
## Ref. https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
## Recommended to use system-cluster-critical for router pods.
##
priorityClassName: ""
## terminationMessagePath is the path at which the file to which the router will write a message upon termination.
##
terminationMessagePath: ""
## terminationMessagePolicy is the policy for the router termination message.
##
terminationMessagePolicy: ""
## deployAsDaemonSet decides whether to deploy router as a DaemonSet or a Deployment.
##
deployAsDaemonSet: false
## svcAddressMaxRetries is the max times for router to retry with a specific function service address
##
svcAddressMaxRetries: 5
## svcAddressUpdateTimeout is the timeout setting for a goroutine to wait for the update of a service entry.
##
svcAddressUpdateTimeout: 30s
## Display endpoint access logs
## To be aware of enabling logging endpoint access log, it increases
## unTapServiceTimeout is the timeout used in the request context of unTapService.
## unTapService is called to free up the resources once the function invocation is done.
##
unTapServiceTimeout: 3600s
## displayAccessLog display endpoing access logs
## Please be aware of enabling logging endpoint access log, it increases
## router resource utilization when under heavy workloads.
##
displayAccessLog: false
## Add annotations for router
## svcAnnotations is the annotations to be added to the service resource created for router.
##
# svcAnnotations:
# cloud.google.com/load-balancer-type: Internal
## For router to match encoded path.
## useEncodedPath decideds to match encoded path.
## If true, "/foo%2Fbar" will match the path "/{var}";
## Otherwise, it will match the path "/foo/bar".
## For details, see: https://github.com/fission/fission/issues/1317
##
useEncodedPath: false
roundTrip:
## If true, router will disable the HTTP keep-alive which result in performance degradation.
## But it ensures that router can redirect new coming requests to new function pods.
@@ -97,57 +182,139 @@ router:
## so that kubernetes will be able to reap old function pod quickly.
##
## For details, see https://github.com/fission/fission/issues/723
##
disableKeepAlive: false
## The keep-alive period for an active network connection to function pod.
## keepAliveTime is period for an active network connection to function pod.
##
keepAliveTime: 30s
## HTTP transport request timeout
## timeout is HTTP transport request timeout
##
timeout: 50ms
## The length of request timeout will multiply with timeoutExponent after each retry
##
timeoutExponent: 2
## Max retries times of a failed request
## maxRetries defines no of retries of a failed request
##
maxRetries: 10
## Sample with a rate per time window (traces/second)
traceSamplingRate: 0.5
## Extend the container specs for the core fission pods.
## Can be used to add things like affinty/tolerations/nodeSelectors/etc.
## For example:
## extraCoreComponentPodConfig:
## affinity:
## nodeAffinity:
## requiredDuringSchedulingIgnoredDuringExecution:
## nodeSelectorTerms:
## - matchExpressions:
## - key: capability
## operator: In
## values:
## - app
##
#extraCoreComponentPodConfig:
# affinity:
# tolerations:
# nodeSelector:
## Pod resources as:
## resources:
## limits:
## cpu: <tbd>
## memory: <tbd>
## requests:
## cpu: <tbd>
## memory: <tbd>
##
resources: {}
## Message queue trigger config
### NATS Streaming, enabled by default
## NATS Streaming, enabled by default
##
nats:
enabled: true
## whether or not to use NATS
##
enabled: false
## if true, don't install NATS, but
## use the existing NATS cluster
##
external: false
## Address of NATS server (domain:port)
## change from default for external NATS
##
hostaddress: "nats-streaming:4222"
## Authorization token to use with NATS
##
authToken: "defaultFissionAuthToken"
## NATS streaming clusterID
##
clusterID: "fissionMQTrigger"
## Client name registered with NATS streaming
##
clientID: "fission"
## Queue group registered with NATS streaming
##
queueGroup: "fission-messageQueueNatsTrigger"
## The image to use for NATS streaming server
##
streamingserver:
image: nats-streaming
tag: "0.23.0"
## Port at which NATS streaming service should be exposed
## (only if nats enabled and not external)
##
natsStreamingPort: 31316
## Azure-storage-queue: enable and configure the details
##
azureStorageQueue:
enabled: false
key: ""
accountName: ""
## Kafka: enable and configure the details
##
kafka:
enabled: false
# note: below link is only for reference.
# Please use the brokers link for your kafka here.
brokers: 'broker.kafka:9092' # or your-bootstrap-server.kafka:9092/9093
## note: below link is only for reference.
## Please use the brokers link for your kafka here.
##
brokers: "broker.kafka:9092" # or your-bootstrap-server.kafka:9092/9093
## Sample config for authentication
## authentication:
## tls:
## enabled: true
## caCert: 'auth/kafka/ca.crt'
## userCert: 'auth/kafka/user.crt'
## userKey: 'auth/kafka/user.key'
##
authentication:
tls:
enabled: false
caCert: '' # path to certificate containing public key of CA authority
userCert: '' # path to certificate containing public key of the user signed by CA authority
userKey: '' # path to private key of the user
# brokers: 'my-broker.kafka:9092' # or my-bootstrap-server.kafka:9092/9093
# Sample config for authentication
# authentication:
# tls:
# enabled: true
# caCert: 'auth/kafka/ca.crt'
# userCert: 'auth/kafka/user.crt'
# userKey: 'auth/kafka/user.key'
## InsecureSkipVerify controls whether a client verifies the server's certificate chain and host name.
## Warning: Setting this to true, makes TLS susceptible to man-in-the-middle attacks
##
insecureSkipVerify: false
## path to certificate containing public key of CA authority
##
caCert: ""
## path to certificate containing public key of the user signed by CA authority
##
userCert: ""
## path to private key of the user
##
userKey: ""
## version of Kafka broker
## For 0.x it must be a string in the format
@@ -155,15 +322,31 @@ kafka:
## For 1.x it must be a string in the format
## "major.major.veryMinor" example: 2.0.1
## Should be >= 0.11.2.0 to enable Kafka record headers support
##
# version: "0.11.2.0"
## Persist data to a persistent volume.
##
persistence:
## If true, fission will create/use a Persistent Volume Claim
## If true, fission will create/use a Persistent Volume Claim unless storageType is set to s3
## If false, use emptyDir
##
enabled: true
## Must be set to either local or S3.
## If storateType is set(other than local), one of its backend configuration must be set as below.
##
#storageType: local | s3
## Sample configuration for AWS s3 storage backend
##
# s3:
# bucketName: <awsBucketName>
# subDir: <sub directory within a bucket>
# accessKeyId: <awsAccessKeyId>
# secretAccessKey: <awsSecretAccessKey>
# region: <awsRegion>
## A manually managed Persistent Volume Claim name
## Requires persistence.enabled: true
## If defined, PVC must be created manually before volume will be bound
@@ -181,7 +364,7 @@ persistence:
accessMode: ReadWriteOnce
size: 8Gi
## Extend the container specs for the core fission pods.
## Extend the container specs for the core fission pods.
## Can be used to add things like affinty/tolerations/nodeSelectors/etc.
## For example:
## extraCoreComponentPodConfig:
@@ -194,6 +377,7 @@ persistence:
## operator: In
## values:
## - app
##
#extraCoreComponentPodConfig:
# affinity:
# tolerations:
@@ -201,39 +385,188 @@ persistence:
## Analytics let us count how many people installed fission. Set to
## false to disable analytics.
##
analytics: true
## Internally used for generating an analytics job for non-helm installs
##
analyticsNonHelmInstall: false
## Enable Heapster only in clusters where heapster does not exist already
heapster: false
## Google Analytics Tracking ID
##
gaTrackingID: UA-196546703-1
## Logger config
## This would be used if influxdb is enabled
##
logger:
influxdbAdmin: "admin"
fluentdImageRepository: index.docker.io
fluentdImage: fluent/fluent-bit
fluentdImageTag: 1.8.8
## Fluent-bit writes/reads its own sqlite database to record a history of tracked
## files and a state of offsets, this is very useful to resume a state if the ser-
## vice is restarted. For Kubernetes environment with constraints like OpenShift,
## the containers are limited to write hostPath volume. Hence, we have to enable
## security context and set privileged to true.
##
enableSecurityContext: false
## Enable PodSecurityPolicies to allow privileged container
## Only required in some clusters and when enableSecurityContext is true
##
podSecurityPolicy:
enabled: false
## Configure additional capabilities
##
additionalCapabilities:
# example values for linkerd
#- NET_RAW
#- NET_ADMIN
## Enable InfluxDB
##
influxdb:
enabled: false
image: influxdb:1.8
## Allow user to override busybox image used in fluent-bit init container
##
busyboxImage: busybox
## Archive pruner is a garbage collector for archives on the fission storage service.
## This interval configures the frequency at which it runs inside the storagesvc pod.
## The value is in minutes.
##
pruneInterval: 60
## Fission pre-install/pre-upgrade checks live in this image
preUpgradeChecksImage: fission/pre-upgrade-checks
preUpgradeChecks:
## Run pre-install/pre-upgrade checks if true
##
enabled: true
## pre-install/pre-upgrade checks live in this image
##
image: fission/pre-upgrade-checks
## pre-install/pre-upgrade checks image version
##
imageTag: v1.15.0-rc2
## 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
## Fission post-install/post-upgrade reporting live in this image
##
postInstallReportImage: fission/reporter
## If there are any pod specialization errors when a function is triggered, the error
## summary is returned as part of http response if this is set to true.
##
debugEnv: false
## Prometheus for scrapping service metrics
##
prometheus:
## set this flag to true if prometheus needs to be deployed along with fission
enabled: true
##
enabled: false
## If enabled is false, please assign the prometheus service URL
## that is accessible by components.
##
serviceEndpoint: ""
## set this flag to false if you dont need canary deployment feature
## set this flag to true if you need canary deployment feature
##
canaryDeployment:
enabled: true
enabled: false
# Use these flags to enable opentracing, the variable is endpoint of Jaeger collector in the format shown below
#traceCollectorEndpoint: "http://jaeger-collector.jaeger.svc:14268/api/traces?format=jaeger.thrift"
#traceSamplingRate: 0.75
## Use the following flags to enable OpenTracing.
## Note: OpenTracing support will be removed in an upcoming release.
## Please prefer using OpenTelemetry instead.
##
openTracing:
## set this flag to true if you wish to enable OpenTracing
##
enabled: false
## if enabled is true, the variable is endpoint of Jaeger collector in the format shown below
##
#collectorEndpoint: "http://jaeger-collector.jaeger.svc:14268/api/traces?format=jaeger.thrift"
## uniformly sample traces with the given probabilistic sampling rate
##
#samplingRate: 0.75
## OpenTelemetry is a set of tools for collecting, analyzing, and visualizing
## distributed tracing data across function calls.
##
openTelemetry:
## Use this flag to set the collector endpoint for OpenTelemetry.
## The variable is endpoint of the collector in the format shown below.
## otlpCollectorEndpoint: "otel-collector.observability.svc:4317"
##
otlpCollectorEndpoint: ""
## Set this flag to false if you are using secure endpoint for the collector.
##
otlpInsecure: true
## Key-value pairs to be used as headers associated with gRPC or HTTP requests to the collector.
## Eg. otlpHeaders: "key1=value1,key2=value2"
##
otlpHeaders: ""
## Supported samplers:
## always_on - Sampler that always samples spans, regardless of the parent span's sampling decision.
## always_off - Sampler that never samples spans, regardless of the parent span's sampling decision.
## traceidratio - Sampler that samples probabalistically based on rate.
## parentbased_always_on - (default if empty) Sampler that respects its parent span's sampling decision, but otherwise always samples.
## parentbased_always_off - Sampler that respects its parent span's sampling decision, but otherwise never samples.
## parentbased_traceidratio - Sampler that respects its parent span's sampling decision, but otherwise samples probabalistically based on rate.
##
tracesSampler: "parentbased_traceidratio"
## Each Sampler type defines its own expected input, if any.
## Currently we get trace ratio for the case of,
## 1. traceidratio
## 2. parentbased_traceidratio
## Sampling probability, a number in the [0..1] range, e.g. "0.1". Default is 0.1.
##
tracesSamplingRate: "0.1"
## Supported providers:
## tracecontext - W3C Trace Context
## baggage - W3C Baggage
## b3 - B3 Single
## b3multi - B3 Multi
## jaeger - Jaeger uber-trace-id header
## xray - AWS X-Ray (third party)
## ottrace - OpenTracing Trace (third party)
##
propagators: "tracecontext,baggage"
## Message Queue Trigger Kind, KEDA: enable and configuration
##
mqt_keda:
enabled: true
connector_images:
kafka:
image: fission/keda-kafka-http-connector
tag: v0.9
rabbitmq:
image: fission/keda-rabbitmq-http-connector
tag: v0.8
awskinesis:
image: fission/keda-aws-kinesis-http-connector
tag: v0.8
aws_sqs:
image: fission/keda-aws-sqs-http-connector
tag: v0.8
nats_steaming:
image: fission/keda-nats-streaming-http-connector
tag: v0.9
gcp_pub_sub:
image: fission/keda-gcp-pubsub-http-connector
tag: v0.3
redis:
image: fission/keda-redis-http-connector
tag: v0.1
## Enable Pprof based profiling used mostly by Fission developers
##
pprof:
enabled: false
-21
View File
@@ -1,21 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
-15
View File
@@ -1,15 +0,0 @@
apiVersion: v1
name: fission-core
version: 1.7.0-rc.2
description: Fission is a fast serverless framework for Kubernetes.
keywords:
- fission
- serverless
home: http://fission.io/
maintainers:
- name: Soam Vasani
email: soamvasani+1@gmail.com
- name: Ta Ching Chen
email: hello@tachingchen.com
engine: gotpl
appVersion: 1.7.0-rc.2
-202
View File
@@ -1,202 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-6
View File
@@ -1,6 +0,0 @@
dependencies:
- name: prometheus
repository: https://kubernetes-charts.storage.googleapis.com
version: 9.3.1
digest: sha256:89a63a5f01c08032106a94c59fc7a5929e449458bf5fd06d86c8b048ac628bf4
generated: "2019-11-18T10:16:25.945208326Z"
-5
View File
@@ -1,5 +0,0 @@
dependencies:
- name: prometheus
version: 9.3.1
repository: https://kubernetes-charts.storage.googleapis.com
condition: prometheus.enabled
-25
View File
@@ -1,25 +0,0 @@
1. Install the client CLI.
Mac:
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-osx && chmod +x fission && sudo mv fission /usr/local/bin/
Linux:
$ curl -Lo fission https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-linux && chmod +x fission && sudo mv fission /usr/local/bin/
Windows:
For Windows, you can use the linux binary on WSL. Or you can download this windows executable: https://github.com/fission/fission/releases/download/{{ .Chart.Version }}/fission-cli-windows.exe
2. You're ready to use Fission!
# Create an environment
$ fission env create --name nodejs --image fission/node-env
# Get a hello world
$ curl https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js > hello.js
# Register this function with Fission
$ fission function create --name hello --env nodejs --code hello.js
# Run this function
$ fission function test --name hello
Hello, world!
@@ -1,44 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 24 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 24 | trimSuffix "-" -}}
{{- end -}}
{{/*
This is a template with config parameters for optional features in fission. This gets mounted on to the controller pod
as a config map.
To add new features with config parameters, create a yaml block below with the feature name and define a corresponding struct in
controller/config.go
*/}}
{{- define "config" -}}
canary:
enabled: {{ .Values.canaryDeployment.enabled }}
{{- if .Values.prometheus.enabled }}
prometheusSvc: "http://{{ .Release.Name }}-prometheus-server.{{ .Release.Namespace }}"
{{- else }}
prometheusSvc: {{ .Values.prometheus.serviceEndpoint | default "" | quote }}
{{- end }}
{{- printf "\n" -}}
{{- end -}}
{{/*
This template generates the image name for the deployment depending on the value of "repository" field in values.yaml file.
*/}}
{{- define "fission-bundleImage" -}}
{{- if .Values.repository -}}
{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}
{{- else -}}
{{ .Values.image }}:{{ .Values.imageTag }}
{{- end }}
{{- end -}}
@@ -1,422 +0,0 @@
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.functionNamespace }}
labels:
name: fission-function
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
---
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Values.builderNamespace }}
labels:
name: fission-builder
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.enableIstio }}
istio-injection: enabled
{{- end }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: secret-configmap-getter
rules:
- apiGroups:
- '*'
resources:
- secrets
- configmaps
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: package-getter
rules:
- apiGroups:
- '*'
resources:
- packages
verbs:
- get
- watch
- list
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-svc
namespace: {{ .Release.Namespace }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fission-admin
namespace: {{ .Release.Namespace }}
subjects:
- kind: ServiceAccount
name: fission-svc
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: admin
apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: fission-crd
subjects:
- kind: ServiceAccount
name: fission-svc
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-fetcher
namespace: {{ .Values.functionNamespace }}
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-builder
namespace: {{ .Values.builderNamespace }}
---
apiVersion: v1
kind: ConfigMap
metadata:
name: feature-config
namespace: {{ .Release.Namespace }}
data:
"config.yaml": {{ include "config" . | b64enc }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: controller
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: controller
application: fission-api
spec:
replicas: 1
selector:
matchLabels:
svc: controller
application: fission-api
template:
metadata:
labels:
svc: controller
application: fission-api
spec:
containers:
- name: controller
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--controllerPort", "8888"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
volumeMounts:
- name: config-volume
mountPath: /etc/config/config.yaml
subPath: config.yaml
ports:
- containerPort: 8888
name: http
serviceAccountName: fission-svc
volumes:
- name: config-volume
configMap:
name: feature-config
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: executor
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: executor
spec:
replicas: 1
selector:
matchLabels:
svc: executor
template:
metadata:
labels:
svc: executor
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: executor
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}"]
env:
- name: FETCHER_IMAGE
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: FETCHER_MINCPU
value: {{ .Values.fetcherMinCpu | default "10m" | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcherMinMem | default "16Mi" | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcherMaxCpu | default "1000m" | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcherMaxMem | default "128Mi" | quote }}
readinessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: buildermgr
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: buildermgr
spec:
replicas: 1
selector:
matchLabels:
svc: buildermgr
template:
metadata:
labels:
svc: buildermgr
spec:
containers:
- name: buildermgr
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
env:
- name: FETCHER_IMAGE
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
- name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
- name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}"
- name: FETCHER_MINCPU
value: {{ .Values.fetcherMinCpu | default "10m" | quote }}
- name: FETCHER_MINMEM
value: {{ .Values.fetcherMinMem | default "16Mi" | quote }}
- name: FETCHER_MAXCPU
value: {{ .Values.fetcherMaxCpu | default "1000m" | quote }}
- name: FETCHER_MAXMEM
value: {{ .Values.fetcherMaxMem | default "128Mi" | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubewatcher
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: kubewatcher
spec:
replicas: 1
selector:
matchLabels:
svc: kubewatcher
template:
metadata:
labels:
svc: kubewatcher
spec:
containers:
- name: kubewatcher
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--kubewatcher", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: timer
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: timer
spec:
replicas: 1
selector:
matchLabels:
svc: timer
template:
metadata:
labels:
svc: timer
spec:
containers:
- name: timer
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--timer", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
env:
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: storagesvc
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: storagesvc
application: fission-storage
spec:
replicas: 1
selector:
matchLabels:
svc: storagesvc
application: fission-storage
template:
metadata:
labels:
svc: storagesvc
application: fission-storage
spec:
containers:
- name: storagesvc
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--storageServicePort", "8000", "--filePath", "/fission"]
env:
- name: PRUNE_INTERVAL
value: "{{.Values.pruneInterval}}"
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.traceSamplingRate | default "0.5" | quote }}
volumeMounts:
- name: fission-storage
mountPath: /fission
ports:
- containerPort: 8000
name: http
serviceAccountName: fission-svc
volumes:
- name: fission-storage
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }}
{{- else }}
emptyDir: {}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
@@ -1,31 +0,0 @@
{{- if .Values.analyticsNonHelmInstall }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "fullname" . }}-{{ .Chart.Version }}-{{ randNumeric 3 }}
labels:
# The "release" convention makes it easy to tie a release to all of the
# Kubernetes resources that were created as part of that release.
release: {{ .Release.Name }}
# This makes it easy to audit chart usage.
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app: {{ template "name" . }}
spec:
#ttlSecondsAfterFinished: 120
template:
metadata:
name: {{ template "fullname" . }}
labels:
release: {{ .Release.Name }}
app: {{ template "name" . }}
annotations:
{{- if .Values.enableIstio }}
"sidecar.istio.io/inject": "false"
{{- end }}
spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "fission/alpinecurl"
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"yaml-post-install\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
{{- end }}
@@ -1,35 +0,0 @@
{{- if .Values.analytics }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "fullname" . }}-{{ .Chart.Version }}
labels:
# The "release" convention makes it easy to tie a release to all of the
# Kubernetes resources that were created as part of that release.
release: {{ .Release.Name }}
# This makes it easy to audit chart usage.
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app: {{ template "name" . }}
annotations:
# This is what defines this resource as a hook. Without this line, the
# job is considered part of the release.
"helm.sh/hook": post-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: {{ template "fullname" . }}
labels:
release: {{ .Release.Name }}
app: {{ template "name" . }}
annotations:
{{- if .Values.enableIstio }}
"sidecar.istio.io/inject": "false"
{{- end }}
spec:
restartPolicy: Never
containers:
- name: post-install-job
image: "fission/alpinecurl"
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"helm-post-install\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
{{- end }}
@@ -1,35 +0,0 @@
{{- if .Values.analytics }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "fullname" . }}-{{ .Chart.Version }}
labels:
# The "release" convention makes it easy to tie a release to all of the
# Kubernetes resources that were created as part of that release.
release: {{ .Release.Name }}
# This makes it easy to audit chart usage.
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
app: {{ template "name" . }}
annotations:
# This is what defines this resource as a hook. Without this line, the
# job is considered part of the release.
"helm.sh/hook": post-upgrade
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: {{ template "fullname" . }}
labels:
release: {{ .Release.Name }}
app: {{ template "name" . }}
annotations:
{{- if .Values.enableIstio }}
"sidecar.istio.io/inject": "false"
{{- end }}
spec:
restartPolicy: Never
containers:
- name: post-upgrade-job
image: "fission/alpinecurl"
command: ["sh", "-c", "/usr/bin/curl -m 5 -H \"Content-Type: application/json\" -X POST -d '{\"type\": \"helm-post-upgrade\", \"chartName\": \"{{ .Chart.Name }}\", \"chartVersion\": \"{{ .Chart.Version }}\"}' https://g.fission.sh/analytics || true"]
{{- end }}
-94
View File
@@ -1,94 +0,0 @@
apiVersion: apps/v1
{{- if not .Values.router.deployAsDaemonSet }}
kind: Deployment
{{- else }}
kind: DaemonSet
{{- end }}
metadata:
name: router
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
svc: router
application: fission-router
spec:
{{- if not .Values.router.deployAsDaemonSet }}
replicas: 1
{{- end }}
selector:
matchLabels:
application: fission-router
svc: router
template:
metadata:
labels:
application: fission-router
svc: router
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
containers:
- name: router
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--routerPort", "8888", "--executorUrl", "http://executor.{{ .Release.Namespace }}"]
env:
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: ROUTER_ROUND_TRIP_TIMEOUT
value: {{ .Values.router.roundTrip.timeout | default "50ms" | quote }}
- name: ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT
value: {{ .Values.router.roundTrip.timeoutExponent | default 2 | quote }}
- name: ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME
value: {{ .Values.router.roundTrip.keepAliveTime | default "30s" | quote }}
- name: ROUTER_ROUND_TRIP_DISABLE_KEEP_ALIVE
value: {{ .Values.router.roundTrip.disableKeepAlive | default true | quote }}
- name: ROUTER_ROUND_TRIP_MAX_RETRIES
value: {{ .Values.router.roundTrip.maxRetries | default 10 | quote }}
- name: ROUTER_SVC_ADDRESS_MAX_RETRIES
value: {{ .Values.router.svcAddressMaxRetries | default 5 | quote }}
- name: ROUTER_SVC_ADDRESS_UPDATE_TIMEOUT
value: {{ .Values.router.svcAddressUpdateTimeout | default "30s" | quote }}
- name: TRACE_JAEGER_COLLECTOR_ENDPOINT
value: "{{ .Values.traceCollectorEndpoint }}"
- name: TRACING_SAMPLING_RATE
value: {{ .Values.router.traceSamplingRate | default "0.5" | quote }}
- name: USE_ENCODED_PATH
value: {{ .Values.router.useEncodedPath | default false | quote }}
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: DISPLAY_ACCESS_LOG
value: {{ .Values.router.displayAccessLog | default false | quote }}
{{- if .Values.analytics }}
- name: ANALYTICS_URL
value: "https://g.fission.sh/metrics"
{{- else if .Values.analyticsNonHelmInstall }}
- name: ANALYTICS_URL
value: "https://g.fission.sh/metrics"
{{- end }}
readinessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 1
periodSeconds: 1
failureThreshold: 30
livenessProbe:
httpGet:
path: "/router-healthz"
port: 8888
initialDelaySeconds: 35
periodSeconds: 5
ports:
- containerPort: 8080
name: metrics
- containerPort: 8888
name: http
serviceAccountName: fission-svc
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
-75
View File
@@ -1,75 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: router
labels:
svc: router
application: fission-router
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
{{- if .Values.router.svcAnnotations }}
annotations:
{{ toYaml .Values.router.svcAnnotations | indent 4 }}
{{- end }}
spec:
type: {{ .Values.routerServiceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.routerServiceType "NodePort" }}
nodePort: {{ .Values.routerPort }}
{{- end }}
selector:
svc: router
---
apiVersion: v1
kind: Service
metadata:
name: controller
labels:
svc: controller
application: fission-api
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: {{ .Values.serviceType }}
ports:
- port: 80
targetPort: 8888
{{- if eq .Values.serviceType "NodePort" }}
nodePort: {{ .Values.controllerPort }}
{{- end }}
selector:
svc: controller
---
apiVersion: v1
kind: Service
metadata:
name: storagesvc
labels:
svc: storagesvc
application: fission-storage
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8000
selector:
svc: storagesvc
---
apiVersion: v1
kind: Service
metadata:
name: executor
labels:
svc: executor
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8888
selector:
svc: executor
-173
View File
@@ -1,173 +0,0 @@
#
# Fission chart configuration
#
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
serviceType: ClusterIP
## For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
routerServiceType: LoadBalancer
## Image base repository
## Leave it empty for using existing local image
repository: index.docker.io
## Fission image repository
image: fission/fission-bundle
## Fission image version
imageTag: 1.7.0-rc.2
## Image pull policy
pullPolicy: IfNotPresent
## Fission fetcher repository
fetcherImage: fission/fetcher
## Fission fetcher image version
fetcherImageTag: 1.7.0-rc.2
## Port at which Fission controller service should be exposed
controllerPort: 31313
## Port at which Fission router service should be exposed
routerPort: 31314
## Namespace in which to run fission functions (this is different from
## the release namespace)
functionNamespace: fission-function
## Namespace in which to run fission builders (this is different from
## the release namespace)
builderNamespace: fission-builder
## Enable istio integration
enableIstio: false
## Router config
router:
deployAsDaemonSet: false
svcAddressMaxRetries: 5
svcAddressUpdateTimeout: 30s
## Display endpoint access logs
## To be aware of enabling logging endpoint access log, it increases
## router resource utilization when under heavy workloads.
displayAccessLog: false
## Add annotations for router
# svcAnnotations:
# cloud.google.com/load-balancer-type: Internal
## For router to match encoded path.
## If true, "/foo%2Fbar" will match the path "/{var}";
## Otherwise, it will match the path "/foo/bar".
useEncodedPath: false
roundTrip:
## If true, router will disable the HTTP keep-alive which result in performance degradation.
## But it ensures that router can redirect new coming requests to new function pods.
##
## If false, router will enable transport keep-alive feature for better performance.
## However, the drawback is it takes longer to switch to newly created function pods
## if using newdeploy as executor type for function. If you want to preserve the
## performance while keeping the short switching time to new function, you can create
## an environment with short grace period by setting flag "--graceperiod" (default 360s),
## so that kubernetes will be able to reap old function pod quickly.
##
## For details, see https://github.com/fission/fission/issues/723
disableKeepAlive: true
## The keep-alive period for an active network connection to function pod.
keepAliveTime: 30s
## HTTP transport request timeout
timeout: 50ms
## The length of request timeout will multiply with timeoutExponent after each retry
timeoutExponent: 2
## Max retries times of a failed request
maxRetries: 10
## Sample with a rate per time window (traces/second)
traceSamplingRate: 0.5
## Persist data to a persistent volume.
persistence:
## If true, fission will create/use a Persistent Volume Claim
## If false, use emptyDir
##
enabled: true
## A manually managed Persistent Volume Claim name
## Requires persistence.enabled: true
## If defined, PVC must be created manually before volume will be bound
##
# existingClaim:
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
# storageClass: "-"
accessMode: ReadWriteOnce
size: 8Gi
## Extend the container specs for the core fission pods.
## Can be used to add things like affinty/tolerations/nodeSelectors/etc.
## For example:
## extraCoreComponentPodConfig:
## affinity:
## nodeAffinity:
## requiredDuringSchedulingIgnoredDuringExecution:
## nodeSelectorTerms:
## - matchExpressions:
## - key: capability
## operator: In
## values:
## - app
#extraCoreComponentPodConfig:
# affinity:
# tolerations:
# nodeSelector:
## Analytics let us count how many people installed fission. Set to
## false to disable analytics.
analytics: true
## Internally used for generating an analytics job for non-helm installs
analyticsNonHelmInstall: false
## Archive pruner is a garbage collector for archives on the fission storage service.
## This interval configures the frequency at which it runs inside the storagesvc pod.
## The value is in minutes.
pruneInterval: 60
## Fission pre-install/pre-upgrade checks live in this image
preUpgradeChecksImage: fission/pre-upgrade-checks
## 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
debugEnv: false
## Prometheus for scrapping service metrics
prometheus:
## set this flag to true if prometheus needs to be deployed along with fission
enabled: true
## If enabled is false, please assign the prometheus service URL
## that is accessible by components.
serviceEndpoint: ""
## set this flag to false if you dont need canary deployment feature
canaryDeployment:
enabled: false
# Use these flags to enable opentracing, the variable is endpoint of Jaeger collector in the format shown below
#traceCollectorEndpoint: "http://jaeger-collector.jaeger.svc:14268/api/traces?format=jaeger.thrift"
#traceSamplingRate: 0.75
+2 -43
View File
@@ -1,45 +1,4 @@
FROM golang:1.12-alpine as godep
RUN apk add bash ca-certificates git gcc g++ libc-dev
ARG GOPKG=github.com/fission/fission
ENV GO111MODULE=on
WORKDIR /go/src/${GOPKG}
# To reuse build cache, copy go.mod & go.sum and download dependencies first.
COPY go.* ./
RUN go mod download
From godep as builder
ARG GOPKG
WORKDIR /go/src/${GOPKG}
# Copy whole fission directory to work dir
COPY ./ ./
WORKDIR /go/src/${GOPKG}/cmd/builder
ARG GITCOMMIT=unknown
# E.g. GITCOMMIT=$(git rev-parse HEAD)
ARG BUILDVERSION=unknown
# E.g. BUILDVERSION=$(git rev-parse HEAD)
ARG BUILDDATE=unknown
# E.g. BUILDDATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-o /go/bin/builder \
-gcflags=-trimpath=$GOPATH \
-asmflags=-trimpath=$GOPATH \
-ldflags "-X github.com/fission/fission/pkg/info.GitCommit=${GITCOMMIT} -X github.com/fission/fission/pkg/info.BuildDate=${BUILDDATE} -X github.com/fission/fission/pkg/info.Version=${BUILDVERSION}"
FROM alpine:3.10 as base
FROM alpine:3.14
RUN apk add --update ca-certificates
COPY --from=builder /go/bin/builder /
EXPOSE 8001
COPY builder /builder
ENTRYPOINT ["/builder"]
+6 -6
View File
@@ -17,22 +17,22 @@ limitations under the License.
package main
import (
"log"
"os"
"go.uber.org/zap"
"github.com/fission/fission/cmd/builder/app"
"github.com/fission/fission/pkg/utils/loggerfactory"
"github.com/fission/fission/pkg/utils/profile"
)
// Usage: builder <shared volume path>
func main() {
logger, err := zap.NewProduction()
if err != nil {
log.Fatalf("can't initialize zap logger: %v", err)
}
logger := loggerfactory.GetLogger()
defer logger.Sync()
profile.ProfileIfEnabled(logger)
shareVolume := os.Args[1]
if _, err := os.Stat(shareVolume); err != nil {
if os.IsNotExist(err) {
@@ -43,6 +43,6 @@ func main() {
}
}
err = app.Run(logger, shareVolume)
err := app.Run(logger, shareVolume)
logger.Error("error running builder", zap.Error(err))
}
+2 -43
View File
@@ -1,45 +1,4 @@
FROM golang:1.12-alpine as godep
RUN apk add bash ca-certificates git gcc g++ libc-dev
ARG GOPKG=github.com/fission/fission
ENV GO111MODULE=on
WORKDIR /go/src/${GOPKG}
# To reuse build cache, copy go.mod & go.sum and download dependencies first.
COPY go.* ./
RUN go mod download
From godep as builder
ARG GOPKG
WORKDIR /go/src/${GOPKG}
# Copy whole fission directory to work dir
COPY ./ ./
WORKDIR /go/src/${GOPKG}/cmd/fetcher
ARG GITCOMMIT=unknown
# E.g. GITCOMMIT=$(git rev-parse HEAD)
ARG BUILDVERSION=unknown
# E.g. BUILDVERSION=$(git rev-parse HEAD)
ARG BUILDDATE=unknown
# E.g. BUILDDATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
-o /go/bin/fetcher \
-gcflags=-trimpath=$GOPATH \
-asmflags=-trimpath=$GOPATH \
-ldflags "-X github.com/fission/fission/pkg/info.GitCommit=${GITCOMMIT} -X github.com/fission/fission/pkg/info.BuildDate=${BUILDDATE} -X github.com/fission/fission/pkg/info.Version=${BUILDVERSION}"
FROM alpine:3.10 as base
FROM alpine:3.14
RUN apk add --update ca-certificates
COPY --from=builder /go/bin/fetcher /
EXPOSE 8000
COPY fetcher /
ENTRYPOINT ["/fetcher"]
+43 -43
View File
@@ -21,42 +21,25 @@ import (
"encoding/json"
"flag"
"fmt"
"log"
"net/http"
"os"
"sync/atomic"
"contrib.go.opencensus.io/exporter/jaeger"
"go.opencensus.io/plugin/ochttp"
"go.opencensus.io/trace"
"go.opentelemetry.io/otel"
"go.uber.org/zap"
"github.com/fission/fission/pkg/fetcher"
"github.com/fission/fission/pkg/types"
otelUtils "github.com/fission/fission/pkg/utils/otel"
"github.com/fission/fission/pkg/utils/tracing"
)
func registerTraceExporter(collectorEndpoint string) error {
if collectorEndpoint == "" {
return nil
}
var (
readyToServe uint32
)
serviceName := "Fission-Fetcher"
exporter, err := jaeger.NewExporter(jaeger.Options{
CollectorEndpoint: collectorEndpoint,
Process: jaeger.Process{
ServiceName: serviceName,
Tags: []jaeger.Tag{
jaeger.BoolTag("fission", true),
},
},
})
if err != nil {
return err
}
trace.RegisterExporter(exporter)
trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
return nil
}
func Run(logger *zap.Logger) {
func Run(ctx context.Context, logger *zap.Logger) {
flag.Usage = fetcherUsage
collectorEndpoint := flag.String("jaeger-collector-endpoint", "", "")
specializeOnStart := flag.Bool("specialize-on-startup", false, "Flag to activate specialize process at pod starup")
@@ -79,36 +62,48 @@ func Run(logger *zap.Logger) {
}
}
}
if err := registerTraceExporter(*collectorEndpoint); err != nil {
logger.Fatal("could not register trace exporter", zap.Error(err), zap.String("collector_endpoint", *collectorEndpoint))
openTracingEnabled := tracing.TracingEnabled(logger)
if openTracingEnabled {
go func() {
if err := tracing.RegisterTraceExporter(logger, *collectorEndpoint, "Fission-Fetcher"); err != nil {
logger.Fatal("could not register trace exporter", zap.Error(err), zap.String("collector_endpoint", *collectorEndpoint))
}
}()
} else {
shutdown, err := otelUtils.InitProvider(ctx, logger, "Fission-Fetcher")
if err != nil {
logger.Fatal("error initializing provider for OTLP", zap.Error(err))
}
if shutdown != nil {
defer shutdown(ctx)
}
}
tracer := otel.Tracer("fetcher")
ctx, span := tracer.Start(ctx, "fetcher/Run")
defer span.End()
f, err := fetcher.MakeFetcher(logger, dir, *secretDir, *configDir)
if err != nil {
logger.Fatal("error making fetcher", zap.Error(err))
}
readyToServe := false
// do specialization in other goroutine to prevent blocking in newdeploy
go func() {
if *specializeOnStart {
var specializeReq types.FunctionSpecializeRequest
var specializeReq fetcher.FunctionSpecializeRequest
err := json.Unmarshal([]byte(*specializePayload), &specializeReq)
if err != nil {
logger.Fatal("error decoding specialize request", zap.Error(err))
}
ctx := context.Background()
err = f.SpecializePod(ctx, specializeReq.FetchReq, specializeReq.LoadReq)
if err != nil {
logger.Fatal("error specializing function pod", zap.Error(err))
}
readyToServe = true
}
atomic.StoreUint32(&readyToServe, 1)
}()
mux := http.NewServeMux()
@@ -116,9 +111,11 @@ func Run(logger *zap.Logger) {
mux.HandleFunc("/specialize", f.SpecializeHandler)
mux.HandleFunc("/upload", f.UploadHandler)
mux.HandleFunc("/version", f.VersionHandler)
mux.HandleFunc("/wsevent/start", f.WsStartHandler)
mux.HandleFunc("/wsevent/end", f.WsEndHandler)
readinessHandler := func(w http.ResponseWriter, r *http.Request) {
if !*specializeOnStart || readyToServe {
if atomic.LoadUint32(&readyToServe) == 1 {
w.WriteHeader(http.StatusOK)
} else {
w.WriteHeader(http.StatusServiceUnavailable)
@@ -130,14 +127,17 @@ func Run(logger *zap.Logger) {
w.WriteHeader(http.StatusOK)
})
// For backward compatibility
// TODO: remove this path in future
mux.HandleFunc("/readniess-healthz", readinessHandler)
logger.Info("fetcher ready to receive requests")
http.ListenAndServe(":8000", &ochttp.Handler{
Handler: mux,
})
var handler http.Handler
if openTracingEnabled {
handler = &ochttp.Handler{Handler: mux}
} else {
handler = otelUtils.GetHandlerWithOTEL(mux, "fission-fetcher", otelUtils.UrlsToIgnore("/healthz", "/readiness-healthz"))
}
if err = http.ListenAndServe(":8000", handler); err != nil {
log.Fatal(err)
}
}
func fetcherUsage() {

Some files were not shown because too many files have changed in this diff Show More