Compare commits

...
104 Commits
Author SHA1 Message Date
Sanket SudakeandGitHub 88039cad63 Update Go Dependencies (#2863)
---

github.com/IBM/sarama v1.41.2 [v1.41.3]
github.com/elastic/crd-ref-docs v0.0.9 [v0.0.10]
github.com/fsnotify/fsnotify v1.6.0 [v1.7.0]
github.com/go-git/go-git/v5 v5.9.0 [v5.10.0]
github.com/google/uuid v1.3.0 [v1.4.0]
github.com/prometheus/common v0.44.0 [v0.45.0]
google.golang.org/grpc v1.58.3 [v1.59.0]
k8s.io/api v0.28.2 [v0.28.3]
k8s.io/apiextensions-apiserver v0.28.2 [v0.28.3]
k8s.io/apimachinery v0.28.2 [v0.28.3]
k8s.io/client-go v0.28.2 [v0.28.3]
k8s.io/metrics v0.28.2 [v0.28.3]
sigs.k8s.io/controller-runtime v0.16.2 [v0.16.3]
sigs.k8s.io/yaml v1.3.0 [v1.4.0]

---

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-30 11:11:06 +05:30
Sanket SudakeandGitHub 267f7faf18 Add cause for all context timeouts (#2862) 2023-10-29 13:19:06 +05:30
Sanket SudakeandGitHub 2223081c80 Test for httptrigger and functions container/newdeploy (#2861)
* Test for httptrigger and functions
* Fixes with multierror
* review changes

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-27 15:05:20 +05:30
Vardhaman SuranaandGitHub 2eb2eba88c added function tests for fission cli (#2859)
* added function tests for fission cli

* code refactor
2023-10-26 14:40:38 +05:30
8a17d391c5 Envtest based integration tests for Fission (#2858)
* skeleton for envtest fission
* Refactor code and add CLI test
* hack
* Update server test
* remove skip-ci for lint tests
* Pass client go storagesvc
* Add clientGen interface across code
* Fix storagesvc test
* Fix cmd client
* add retry in server test
* Fix concurrenct access to pool deployment
* Remove old executor test
* get rid of ginkgo/gomega
* disable flaky test
* flaky test
* revert ci change
* handle err from ParseBool

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Pranoy Kundu <pranoy1998k@gmail.com>
2023-10-26 12:09:11 +05:30
Sanket SudakeandGitHub 15e16fcc82 Update chart version 1.20.0-rc1 (#2857)
- Update kubernets version 1.23+
- Update post chart install notes with namespace info
- Update upgrade notes in chart

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-23 19:40:09 +05:30
Sanket SudakeandGitHub 7137b39a14 Avoid duplicate role in release namespace for router (#2856)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-18 20:50:05 +05:30
Vardhaman SuranaandGitHub fc97b7609b added client generator inteface (#2854)
* added client generator inteface
* start router service asynchronously

Signed-off-by: Vardhaman Surana <vardhaman.surana@infracloud.io>
2023-10-18 18:59:28 +05:30
Sanket SudakeandGitHub c6329ee3db Switch to google/uuid from satori/go.uuid (#2852)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-17 12:19:17 +05:30
Sanket SudakeandGitHub 7b21fbc199 Remove unused generator package (#2851)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-17 10:50:58 +05:30
Sanket SudakeandGitHub 703d757c29 Remove controller component from Fission (#2850)
* Remove controller component from Fission
* Cleanup at few more places

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-17 09:29:13 +05:30
Sanket SudakeandGitHub c09319ceb3 Update CI actions and go modules (#2846)
* Update CI actions and go modules
* Fix kind cluster name
* Fix upgrade cluster name

---

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-12 10:13:47 +05:30
Guillaume MARTINEZandGitHub 3762ff80f2 Update the Kubernetes autoscaling API to v2 (#2722) (#2842)
* Update the Kubernetes autoscaling API to v2 (#2722)
  - k8s.io/api/autoscaling/v2
* generate all files
* fix missing v2beta ref

---------

Signed-off-by: Lunik <lunik@tiwabbit.fr>
2023-10-11 11:04:45 +05:30
Sanket SudakeandGitHub b43b31884a Update kubernetes versions in CI verification (#2844)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-10-10 13:11:43 +05:30
56b49dcee8 Ability to retain specialised pods for poolmanager functions (#2830)
- added retainPods flag to take in the number of specialized pods to retain
- add retainPods in both the create function and update function command
- modify crd keys to be typed instead of string
- keep track of function generation in case of update function operation
- add delete handler function to make sure specialized pods are deleted in case function is deleted

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Signed-off-by: Pranoy Kundu <pranoy1998k@gmail.com>
Co-authored-by: Pranoy Kundu <pranoy1998k@gmail.com>
2023-09-27 13:33:19 +05:30
Sanket SudakeandGitHub 657aee7cc2 Update go deps across project (#2837)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-09-24 11:14:43 +05:30
Anthony KingandGitHub 44922bce6c fix missing namespace environment variables for various services (#2828)
the FISSION_..._NAMESPACE environment variables are used by all services during init
to check if the CRDs are loaded.

Move them to the 'fission-resource-namespace' macro to ensure all services know the relavant namespaces.

Signed-off-by: Anthony King <anthony@datapane.com>
2023-09-23 13:01:53 +05:30
Sanket SudakeandGitHub 3bcda55aa8 Update kubernetes libs to latest (#2834)
- k8s.io/api v0.28.1
- k8s.io/apiextensions-apiserver v0.28.1
- k8s.io/apimachinery v0.28.1
- k8s.io/client-go v0.28.1
- k8s.io/metrics v0.28.1
- sigs.k8s.io/controller-runtime v0.16.1
- sigs.k8s.io/controller-tools v0.13.0

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-09-23 09:10:51 +05:30
Sanket SudakeandGitHub 997493351a Update go version 1.21 (#2833)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-09-05 22:15:32 +05:30
guangwuandGitHub 3d77077bc5 fix: Environment typo (#2829)
Signed-off-by: guoguangwu <guoguangwu@magic-shield.com>
2023-08-30 07:50:09 +05:30
Shubham BansalandGitHub f955d1182a update chart version to v1.19.0 (#2798)
Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-05-18 15:18:04 +05:30
AmborandGitHub 1cbc0ba9ff fix: passthrough the build log error (#2795)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-05-18 13:47:54 +05:30
Shubham BansalandGitHub 0936c6a2d7 Update dependencies (#2796)
* updated dependencies

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

* updated depencies related to otel and few other

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

* revert changes for go version

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

* revert changes for k8s dependencies

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

---------

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-05-18 13:44:51 +05:30
Shubham BansalandGitHub f0ec328d24 Changed prometheus version from latest to 45.28.0 (#2797)
* updated prometheus version for CI failure

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

* updated prometheus version for CI failure

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

---------

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-05-18 12:44:20 +05:30
Shubham BansalandGitHub 2b1ac28300 updating all direct dependencies (#2793)
Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-05-17 12:17:23 +05:30
Shubham BansalandGitHub 0fb2096788 security upgrade for alpine to 3.18 (#2792) 2023-05-16 17:45:36 +05:30
Scott CôtéandGitHub 6e375629e7 Configure router deployment replicas (#2782) 2023-05-16 16:20:29 +05:30
Shubham BansalandGitHub 1133386ce9 update chart version to v1.19.0-rc2 (#2791)
Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-05-12 10:33:51 +05:30
f99f10134c Executor: Dump function service cache for pool manager functions (#2789)
* dump function service cache for executor
* fix lint issue
* code refactor and lint fixes

---------

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2023-05-12 09:49:54 +05:30
6c431e4d9b Ensure handling for specialization failure in pool manager (#2788)
* Add fixes for failure in specialization
* reduce specialization in progress and remove expired requests from queue when specialization is timed out
* rename markSpecializationFailure and remove logger from the queue
* refactor clean up code in api.go and add test case for queue

Details:

- Cleanup svc waiting for the counter in the pool manager if specialization fails
- Cleanup active requests counter in pool manager if client exists the demand for function service while we have allocated function service
- Consider specialization timeout if pod ready timeout > specialization timeout in waiting for ready pod. We also consider if the request to choosePod is cancelled.
- We ensure if we have requests waiting for service requests but if there is no pod in the specialization we clean up those.
---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Pranoy Kundu <pranoy1998k@gmail.com>
2023-05-11 21:03:57 +05:30
31c81e132e fix: lose cold start error counter for the poolmgr functions (#2755)
* fix: lose cold start error counter for the poolmgr functions

Co-authored-by: ZhengHe-MD <ranchardzheng@gmail.com>
Co-authored-by: gw123 <iamakillerforyou@gmail.com>
Signed-off-by: saltbo <saltbo@foxmail.com>

* fix: miss code for the metric

Signed-off-by: saltbo <saltbo@foxmail.com>

---------

Signed-off-by: saltbo <saltbo@foxmail.com>
Co-authored-by: ZhengHe-MD <ranchardzheng@gmail.com>
Co-authored-by: gw123 <iamakillerforyou@gmail.com>
2023-05-09 12:37:58 +05:30
Nikhil SharmaandGitHub a5f3402dbc add functionality to update spec of fission custom resources (#2701)
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
2023-05-08 13:36:05 +05:30
AmborandGitHub 784bd82ec7 fix: panic for the builder/client (#2780)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-04-13 10:40:45 +05:30
AmborandGitHub cd742a6d18 fix: error port for the pprof server (#2766)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-04-11 08:43:36 +05:30
AmborandGitHub 32530ac474 fix: add flush to support chunked for the metric middleware (#2772)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-04-11 08:40:58 +05:30
AmborandGitHub 117c383fac style: typo for the BuilderNamespace (#2776)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-04-11 08:39:42 +05:30
Shubham BansalandGitHub 3a1db58066 update chart version to v1.19.0-rc1 (#2761)
Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-03-31 15:07:20 +05:30
AmborandGitHub ce42dbc647 refactor: update the client retry by the pkg retryablehttp (#2752)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-03-31 13:20:22 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
3840a90b54 Bump github.com/opencontainers/runc from 1.1.2 to 1.1.5 (#2757)
Bumps [github.com/opencontainers/runc](https://github.com/opencontainers/runc) from 1.1.2 to 1.1.5.
- [Release notes](https://github.com/opencontainers/runc/releases)
- [Changelog](https://github.com/opencontainers/runc/blob/v1.1.5/CHANGELOG.md)
- [Commits](https://github.com/opencontainers/runc/compare/v1.1.2...v1.1.5)

---
updated-dependencies:
- dependency-name: github.com/opencontainers/runc
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-31 13:06:55 +05:30
AmborandGitHub 77d4745242 fix: invalid error unwrap for the httperror (#2753)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-03-31 12:23:37 +05:30
715ef8267e Improve poolmanager concurrency handling with virtual capacity (#2737)
* add functionality to wait for specialization by keeping track of incoming requests
* format executor package
* fix required capacity to specialise new pod condition
* move handling concurrency logic into pool cache from executor
* remove unused methods and structs
* implement queue in to store the svc wait
* create a queue struct and its methods to handle concurrent inputs
* use newly created queue to store waiting for svc requests
* add waiting requests in queue and use them when a svc is ready
* set function to request in queue if the context is still alive
* remove concurrency approach to set svc for waiting requests
* update the active requests whenever requests from pool are assigned a svc
* add doc to define why the conditions exist
* remove unwanted params in strcut and clean up code
* set error while getting svc value if sum of specialization in progress and specialized is only more than concurrency limit
* remove duplicate functions and unnecessary values in struct
* close svc channel on set value and create constants for default concurrency and rpp
* get next value in queue in case context is timed out for fetched value
* remove specializationInProgress counter from pool cache
* return in case the queue is empty wihle setting func to svc
* test getSvcVaue and setSvcValue in poolcache
* add unit tests for GetConcurrent and GetRequestsPerPod methods
* reorder imports
* add fuzzy testing for getSVCValue and setSVCValue in poolcache
* restructure go mod file and update pool cache test cases
* Add tests and bug fixes
* refactor code and add test cases
* add svcWaiting check while setting svc value

---------

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2023-03-30 20:19:51 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
b622f13ab6 Bump golang.org/x/image from 0.0.0-20190802002840-cff245a6509b to 0.5.0 (#2735)
Bumps [golang.org/x/image](https://github.com/golang/image) from 0.0.0-20190802002840-cff245a6509b to 0.5.0.
- [Release notes](https://github.com/golang/image/releases)
- [Commits](https://github.com/golang/image/commits/v0.5.0)

---
updated-dependencies:
- dependency-name: golang.org/x/image
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-30 11:26:34 +05:30
2213ebc637 feat: add trace and timeout support for the timer (#2750)
* feat: add trace and timeout support for the timer

Co-authored-by: gw123 <iamakillerforyou@gmail.com>
Signed-off-by: saltbo <saltbo@foxmail.com>

* fix: add error check for the lint

Signed-off-by: saltbo <saltbo@foxmail.com>

---------

Signed-off-by: saltbo <saltbo@foxmail.com>
Co-authored-by: gw123 <iamakillerforyou@gmail.com>
2023-03-29 09:27:55 +05:30
Nikhil SharmaandGitHub 1f138d03fa handle addr when port is passed in host:port format in the StartServer func (#2747)
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
2023-03-23 16:38:17 +05:30
a8e8cfb72d fix: websocket event listener (#2745)
Co-authored-by: 李霖 <lee@lilindeMacBook-Pro.local>
2023-03-23 11:52:20 +05:30
AmborandGitHub 963081e096 fix: ending retry loop when the request canceled for the choosePod (#2731)
Signed-off-by: saltbo <saltbo@foxmail.com>
2023-03-21 14:38:45 +05:30
Sanket SudakeandGitHub a96b92f41f Update Go version 1.20 (#2740)
* Update Go version 1.20
* Update golangci-lint version v1.51.1

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-03-12 08:45:43 +05:30
Nikhil SharmaandGitHub a93e9b4074 poolmgr: stop pod specialization when pod namespace and cm/secret namespace is mismatched (#2703)
Signed-off-by: Nikhil Sharma <nikhilsharma230303@gmail.com>
2023-03-11 16:24:52 +05:30
Pranoy Kumar KunduandGitHub 0de8923ea8 Add funcSvcGroup type in pool cache for grouping of function services (#2728)
* add specfic structs for function svc and group

* remove unused var in funcSvcGroup

* format poolcache
2023-02-28 09:06:16 +05:30
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1cb18a78a6 Bump golang.org/x/net from 0.4.0 to 0.7.0 (#2724)
Bumps [golang.org/x/net](https://github.com/golang/net) from 0.4.0 to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/compare/v0.4.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-26 11:02:47 +05:30
Shubham BansalandGitHub 4ebdb16623 security upgrade for alpine to 3.17 (#2723) 2023-02-17 21:10:02 +05:30
Shubham BansalandGitHub 3c0c96e98e CLI: Use fntimeout to stop terminating of function in middle (#2709)
* use flag FnExecutionTimeout instead of FnTestTimeout

* use flag FnExecutionTimeout instead of FnTestTimeout

* keep FnTestTimeout and FunctionTimeout both

* code review changes

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>

---------

Signed-off-by: Shubham Bansal <shubhambansaliimtgn@gmail.com>
2023-02-09 13:57:57 +05:30
Shubham BansalandGitHub e462f9ab71 Allow permission to router for ingress resource (#2710) 2023-02-02 10:20:46 +05:30
Shubham BansalandGitHub d025022042 Make ghcr.io to default container registry (#2711)
* changed default container registry from docker.io to ghcr.io
* user ghcr.io in CI test
* use ghcr.io in reporter image
* revert skaffold changes
2023-02-02 10:19:59 +05:30
Shubham BansalandGitHub c4ed12d9c5 Push docker images to github container registry (#2705)
* changes to push images in github container registry

* reverting changes for helm chart to pass CI test

* use gitURL instead of whole URL

* use gitURL instead of whole URL

* added release process for docker.io

* removed trailing spaces

* added support for multi arch images in GHCR
2023-01-30 17:26:06 +05:30
Shubham BansalandGitHub d3a615211f router pod fails to run if authentication is enabled during helm upgrade (#2700) 2023-01-19 09:20:54 +05:30
Shubham BansalandGitHub 2b017f810a Fission version failed if authentication.enabled is set to true (#2697)
* set authorization header for fission version and check command

* display warning if response status is unauthorize or forbidden

* passing context to http request
2023-01-18 16:26:06 +05:30
Nikhil SharmaandGitHub 5c3c55d52f allow users to set envGracePeriod to 0 (#2696)
Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>

Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>
2023-01-18 10:57:30 +05:30
Shubham BansalandGitHub 5db09a899a Create roles for custom resource in function and builder namespace (#2695)
* create roles for custom resource in function and builder namespace
* Create roles for CR for builder in function and builder namespace
* convert warn to info to remove error stack trace
2023-01-17 22:15:04 +05:30
Sanket SudakeandGitHub 0edf2640b1 internal: Making poolcache typed and merged into fscache (#2693)
Merged pool cache package into fscache to avoid import cycle.
Also changed all types in pool cache from interface to specific
types.

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2023-01-15 23:50:05 +05:30
Shubham BansalandGitHub deb3523b59 update chart version to 1.18.0 (#2687) 2023-01-12 23:35:51 +05:30
Nikhil SharmaandGitHub 0635a6a644 remove .* suffix after Dockerfile (#2685)
Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>

Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>
2023-01-11 14:04:56 +05:30
Nikhil SharmaandGitHub a9d55423ae update vulnerable dependencies (#2684)
Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>

Signed-off-by: Nikhl Sharma <nikhilsharma230303@gmail.com>
2023-01-10 15:40:44 +05:30
Shubham NazareandGitHub 496e4e3162 feat(cli): provide imagepullsecret option for container as function (#2680)
Signed-off-by: Shubham Nazare <shubham4443@gmail.com>
2023-01-09 16:18:56 +05:30
AmborandGitHub 6667d7e383 fix: nil panic for the latestDepl.Name if not return in the for cycle (#2682)
Signed-off-by: saltbo <saltbo@foxmail.com>

Signed-off-by: saltbo <saltbo@foxmail.com>
2023-01-09 16:18:15 +05:30
Shubham NazareandGitHub 922cb34243 Change cron syntax to standard format (#2678)
* Change cron syntax to standard format
* Add standard cron example in showschedule command

Signed-off-by: Shubham Nazare <shubham4443@gmail.com>
2023-01-02 20:05:58 +05:30
Nico FeulnerandGitHub fcf4fd2e63 fix: add missing imagePullSecrets sections to pods (#2675) 2022-12-28 15:42:04 +05:30
Shubham NazareandGitHub 69470a68d0 Fix issue with updating timetrigger without --cron flag (#2677)
* Fix issue with updating time trigger without --cron flag
* Add check with ResourceVersion
* Change in UpdateFunc

Signed-off-by: Shubham Nazare <shubham4443@gmail.com>

Signed-off-by: Shubham Nazare <shubham4443@gmail.com>
2022-12-28 14:12:19 +05:30
Sanket SudakeandGitHub 8df4fd0e7c Allow service account check to run only once at start of executor (#2673)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-15 15:04:10 +05:30
Sanket SudakeandGitHub 275cfb55a6 Update chart version 1.18.0-rc2 (#2671)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-14 17:49:26 +05:30
Shubham BansalandGitHub 3e25f474b0 Remove singleDefaultNamespace field from helm chart (#2670)
* remove singleDefaultNamespace field from helm chart

* changed permission from list to get
2022-12-14 14:17:34 +05:30
Shubham BansalandGitHub d52c60216e Create role and rolebinding for event-fetcher in multiple namespaces (#2669)
* create event-fetcher role and rolebinding in all namespace

* code review changes

* changed rolebinding name
2022-12-14 12:18:23 +05:30
Shubham BansalandGitHub 16cbb87eab Create role/role binding/service account required for builder/function pods (#2667)
* service account changes for fission-builder
* moved code into executor
* changed default timing to 30 min
* code refactor and add new roles for executor
* create role if serviceAccountCheck is enabled
2022-12-14 09:06:20 +05:30
Sanket SudakeandGitHub 5fae765323 Use client generator to generate all k8s clients and add respective client-go metrics (#2668)
* Define client generator to generate all k8s clients
* Increase QPS and burst values
* Capture client-go metrics
* Support for controller runtime metrics

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-13 14:19:36 +05:30
Sanket SudakeandGitHub 31f4f8c57e Remove otel handler per function handler in router (#2664)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-11 22:32:24 +05:30
Sanket SudakeandGitHub 3ae1742953 Executor user informer factory in executors in place of informers (#2666)
* Use informerfactory across executor
* Run function informer for poolpodcontroller if istio enabled
* Use same namespace for secret as keda mqtriggers

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-11 20:41:12 +05:30
Sanket SudakeandGitHub d16de59e9f Pass prometheus dump path and port to analyzer script (#2665)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-09 15:16:51 +05:30
Sanket SudakeandGitHub 61d98152f1 Update go dependencies (#2663)
* Update go dependencies

- github.com/golang-jwt/jwt/v4 v4.4.2 [v4.4.3]
- github.com/influxdata/influxdb v1.10.0 [v1.11.0]
- go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.36.4 [v0.37.0]
- go.opentelemetry.io/contrib/propagators/autoprop v0.36.4 [v0.37.0]
- go.opentelemetry.io/otel v1.11.1 [v1.11.2]
- go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.11.1 [v1.11.2]
- go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.11.1 [v1.11.2]
- go.opentelemetry.io/otel/sdk v1.11.1 [v1.11.2]
- go.opentelemetry.io/otel/trace v1.11.1 [v1.11.2]
- go.uber.org/zap v1.23.0 [v1.24.0]
- golang.org/x/net v0.2.0 [v0.4.0]

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-09 14:24:27 +05:30
Sanket SudakeandGitHub 300739c031 Remove service account/role binding/role permissions from Fission services (#2655)
* Remove cluster role references
* Convert secret/package getter cluster roles to role
* Remove all cluster role binding permissions
* Remove unwanted permission
* Try removing all RBAC-related code
* Remove additional constants
* Add functionality for service account checks
* Restrict permission across services
* Remove package informer factory from the executor
* Revert service account check code for now
* Skip adding roles in place of cluster roles
* Remove additional permission from the router

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-08 16:15:19 +05:30
Shubham BansalandGitHub 94eead8697 change archive location for integration-test-old job (#2662) 2022-12-08 13:36:29 +05:30
612206b033 test job with old namespace support to ensure backward compatibility of fission (#2654)
* trigger test job to ensure backward compatibility
* update builder and function namespace in the CI test
* resolve namespace to show logs for fission-CLI
* export function-namespace variable
* Use a common script for an old and new test run
* Revert empty namespace values in the chart

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-08 12:15:23 +05:30
Sanket SudakeandGitHub 985d94b5b8 Consume podspec patch directly on executor/builder mounts (#2661)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-08 11:38:57 +05:30
Shubham BansalandGitHub 4dde3c9520 Fix namespace resolution with DEFAULT_NAMESPACE and other parameters set (#2659) 2022-12-07 14:50:45 +05:30
Shubham BansalandGitHub 9ccd2a4128 Generate kubernetes roles in fission-function and fission-builder namespace (#2656)
* generate roles in fission-builder and fission-function namespace

* use default namespace if buidler namespace is empty
2022-12-06 13:22:58 +05:30
e9fd13b60c Remove cluster roles for all Fission service accounts (#2629)
* Replace all cluster roles with autogenerated namespaced roles
* Use cluster role only for preupgrade api extension permissions
* Correct role definition typos

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: shaunak_deshmukh <shaunak@infracloud.io>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-05 15:11:37 +05:30
Shubham BansalandGitHub ee623d31b2 Check pods events via infomer in user configured namespaces (#2653)
* informer changes for event checker in multi namespace

* run informers in wait group
2022-12-05 13:06:47 +05:30
Sanket SudakeandGitHub 9612baecc0 Upgrade skaffold to v2 manifest (#2633)
* Upgrade skaffold to v2 manifest
* Update note in skaffold file

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


Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-12-05 09:23:31 +05:30
Shubham BansalandGitHub 691feaa84f K8s informer to work with specific namespaces for executor (#2651)
Consider specific namespaces mentioned by the user in building informers in the executor
- Confimaps
- Secrets
- Deployments
- Services
- Pods
- Replicasets
2022-12-04 21:01:31 +05:30
Shubham BansalandGitHub 6bf0c4124a K8s informer to work with specific namespaces for builder manager (#2649)
* watch informer for buildermgr in specific namepspaces

* code review changes
2022-12-01 11:41:18 +05:30
neha_guptaandGitHub 9eb7acf061 wait in testcase until server starts (#2648) 2022-11-30 17:31:19 +05:30
neha_guptaandGitHub e015d6d61f add version info in fission support (#2645) 2022-11-30 13:51:24 +05:30
Shubham BansalandGitHub 918214c0a9 K8s informer to work with specific namespaces for logger (#2647)
* watch informer for logger in specific namespaces

* changes to run infomrer in goroutine
2022-11-30 13:43:58 +05:30
526b5f0beb Deployments to work with specific namespaces instead of all namespaces (#2635)
* remove namespaceAll in deployments
* remove GetNamespace function from informer
* added logger and improvement for naming
* move reaper logic to utils

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
Co-authored-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-29 17:09:51 +05:30
Sanket SudakeandGitHub 0aec9e139e Enable security context by default (#2644)
We enable security context by default now, so that the fission pod do not have root access to the system.

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

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-29 10:44:30 +05:30
Sanket SudakeandGitHub 8a3d8a4762 Optimize Kafka Client in Kafka Connector (#2630)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-28 16:31:34 +05:30
Sanket SudakeandGitHub 38d380924d Update golangci-lint version to v1.50.1 (#2642)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-26 11:47:27 +05:30
neha_guptaandGitHub 1e0641d5f9 Removed call to InfluxDB via controller proxy (#2638)
* handle error condition in fission fn log command
* use the single stream for log exclude fetcher logs
* add all pods in the fn logs command
* update the previous stable version
* remove proxy to the controller for influxdb call
* stop running controller if influxdb flag turned true
* port-forward for influx DB
* remove controller dependency from test case
* port forward to influx DB if URL not provided by the user
* archive pruner test
2022-11-25 21:11:25 +05:30
Sanket SudakeandGitHub f11902e81b Backup prometheus data from CI run (#2636)
* Backup Prometheus data from CI run
* use `kube-prometheus-stack` instead of `prometheus`
* Add dump-analyzer script
* Fix monitor helm chart values
* Update readme for dump-analyzer
* Disable grafana and alertmanager

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-25 15:48:09 +05:30
Sanket SudakeandGitHub 8db3d0065a Move build cache key operation from goroutine (#2641)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-25 12:41:37 +05:30
Sanket SudakeandGitHub 92453908c6 Capture trace_id in builder logs (#2640)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-25 10:16:47 +05:30
Sanket SudakeandGitHub 28daccb3aa Capture trace_id in storage service logs (#2639)
Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>

Signed-off-by: Sanket Sudake <sanketsudake@gmail.com>
2022-11-25 08:17:33 +05:30
neha_guptaandGitHub 31639774b0 Handle logs from all pods in function and error condition in fission fn log command (#2634)
* handle error condition in fission fn log command
* use single stream for log exclude fetcher logs
* add all-pods in fn logs command
* update previous stable version
2022-11-24 11:21:00 +05:30
Alex AngeliniandGitHub 82d066b73a Add sync triggers debounce (#2631) 2022-11-22 14:30:51 +05:30
neha_guptaandGitHub 9c4fc4a306 remove controller check (#2632) 2022-11-22 13:10:50 +05:30
317 changed files with 9075 additions and 11978 deletions
+2 -2
View File
@@ -25,10 +25,10 @@ jobs:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: setup go - name: setup go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version-file: "go.mod" go-version-file: "go.mod"
cache: true cache: true
+3 -3
View File
@@ -19,12 +19,12 @@ jobs:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version: 1.18.5 go-version-file: "go.mod"
- name: Install dashboard linter - name: Install dashboard linter
run: | run: |
+3 -3
View File
@@ -18,7 +18,7 @@ on:
workflow_dispatch: workflow_dispatch:
env: env:
GOLANGCI_LINT_VERSION: v1.49.0 GOLANGCI_LINT_VERSION: v1.51.1
GOLANGCI_LINT_TIMEOUT: 5m GOLANGCI_LINT_TIMEOUT: 5m
jobs: jobs:
@@ -27,10 +27,10 @@ jobs:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }} if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Set up Go - name: Set up Go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version-file: "go.mod" go-version-file: "go.mod"
cache: true cache: true
+177 -15
View File
@@ -22,8 +22,9 @@ on:
workflow_dispatch: workflow_dispatch:
env: env:
HELM_VERSION: v3.10.1 HELM_VERSION: v3.13.0
KIND_VERSION: v0.17.0 KIND_VERSION: v0.20.0
KIND_CLUSTER_NAME: kind
jobs: jobs:
# Job to run change detection # Job to run change detection
@@ -33,20 +34,20 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
kindversion: ["v1.19.16", "v1.20.15", "v1.21.14"] kindversion: ["v1.23.17", "v1.25.11", "v1.27.3"]
os: [ubuntu-latest] os: [ubuntu-latest]
steps: steps:
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: setup go - name: setup go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version-file: "go.mod" go-version-file: "go.mod"
cache: true cache: true
- name: Checkout sources - name: Checkout sources
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
repository: fission/examples repository: fission/examples
path: examples path: examples
@@ -57,18 +58,19 @@ jobs:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
- name: Kind Cluster - name: Kind Cluster
uses: engineerd/setup-kind@v0.5.0 uses: helm/kind-action@v1.8.0
with: with:
image: kindest/node:${{ matrix.kindversion }} node_image: kindest/node:${{ matrix.kindversion }}
version: ${{ env.KIND_VERSION }} version: ${{ env.KIND_VERSION }}
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
config: kind.yaml config: kind.yaml
- name: Configuring and testing the Installation - name: Configuring and testing the Installation
run: | run: |
kubectl cluster-info --context kind-kind kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl get nodes kubectl get nodes
sudo apt-get install -y apache2-utils sudo apt-get install -y apache2-utils
kubectl config use-context kind-kind kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl config view kubectl config view
- name: Helm chart lint - name: Helm chart lint
@@ -77,12 +79,12 @@ jobs:
- name: Install Skaffold - name: Install Skaffold
run: | run: |
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v1.39.2/skaffold-linux-amd64 curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.3/skaffold-linux-amd64
sudo install skaffold /usr/local/bin/ sudo install skaffold /usr/local/bin/
skaffold version skaffold version
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v3 uses: goreleaser/goreleaser-action@v5
with: with:
install-only: true install-only: true
@@ -91,7 +93,8 @@ jobs:
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update helm repo update
kubectl create ns monitoring kubectl create ns monitoring
helm install monitoring prometheus-community/prometheus -n monitoring helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring \
--version 45.28.0 --set grafana.enabled=false --set alertmanager.enabled=false
- name: Build and Install Fission CLI - name: Build and Install Fission CLI
run: | run: |
@@ -110,7 +113,6 @@ jobs:
- name: Port-forward fission components - name: Port-forward fission components
run: | run: |
kubectl port-forward svc/router 8888:80 -nfission & kubectl port-forward svc/router 8888:80 -nfission &
kubectl port-forward svc/controller 8889:80 -nfission &
- name: Get fission version - name: Get fission version
timeout-minutes: 10 timeout-minutes: 10
@@ -131,7 +133,13 @@ jobs:
timeout-minutes: 10 timeout-minutes: 10
if: ${{ always() }} if: ${{ always() }}
run: | run: |
kind export logs --name kind kind-logs kind export logs --name ${{ env.KIND_CLUSTER_NAME }} kind-logs
- name: Backup prometheus data
timeout-minutes: 10
if: ${{ always() }}
run: |
TRACE=1 ./hack/backup-prometheus.sh
- name: Archive fission dump - name: Archive fission dump
timeout-minutes: 10 timeout-minutes: 10
@@ -142,6 +150,15 @@ jobs:
path: fission-dump/*.zip path: fission-dump/*.zip
retention-days: 5 retention-days: 5
- name: Archive prometheus dump
timeout-minutes: 10
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: prom-dump-${{ github.run_id }}-${{ matrix.kindversion }}
path: /tmp/prometheus/*
retention-days: 5
- name: Archive kind logs - name: Archive kind logs
timeout-minutes: 10 timeout-minutes: 10
if: ${{ always() }} if: ${{ always() }}
@@ -150,3 +167,148 @@ jobs:
name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }} name: kind-logs-${{ github.run_id }}-${{ matrix.kindversion }}
path: kind-logs/* path: kind-logs/*
retention-days: 5 retention-days: 5
# Job to ensure backward compatibility if function and builder pods are created
# inside functionNamespace and builderNamespace
integration-test-old:
runs-on: ${{ matrix.os }}
if: ${{ contains(github.event.pull_request.labels.*.name, 'run-old-ci') }}
strategy:
fail-fast: false
matrix:
kindversion: ["v1.19.16"]
os: [ubuntu-latest]
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: setup go
uses: actions/setup-go@v4
with:
go-version-file: "go.mod"
cache: true
- name: Checkout sources
uses: actions/checkout@v4
with:
repository: fission/examples
path: examples
- name: Helm installation
uses: Azure/setup-helm@v3
with:
version: ${{ env.HELM_VERSION }}
- name: Kind Cluster
uses: helm/kind-action@v1.8.0
with:
node_image: kindest/node:${{ matrix.kindversion }}
version: ${{ env.KIND_VERSION }}
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
config: kind.yaml
- name: Configuring and testing the Installation
run: |
kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl get nodes
sudo apt-get install -y apache2-utils
kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl config view
- name: Helm chart lint
run: |
helm lint charts/fission-all/
- name: Install Skaffold
run: |
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v2.0.3/skaffold-linux-amd64
sudo install skaffold /usr/local/bin/
skaffold version
- name: Install GoReleaser
uses: goreleaser/goreleaser-action@v5
with:
install-only: true
- name: Setup Prometheus Stack
run: |
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
kubectl create ns monitoring
helm install prometheus prometheus-community/kube-prometheus-stack -n monitoring \
--version 45.28.0 --set grafana.enabled=false --set alertmanager.enabled=false
- name: Build and Install Fission CLI
run: |
make debug-vars
make build-fission-cli
sudo make install-fission-cli
sudo chmod +x /usr/local/bin/fission
- name: Build and Install Fission
timeout-minutes: 10
run: |
kubectl create ns fission
make create-crds
SKAFFOLD_PROFILE=kind-ci-old make skaffold-deploy
- name: Port-forward fission components
run: |
kubectl port-forward svc/router 8888:80 -nfission &
- name: Get fission version
timeout-minutes: 10
run: |
fission version
- name: Integration tests
timeout-minutes: 90
run: |
export FUNCTION_NAMESPACE=fission-function
export BUILDER_NAMESPACE=fission-builder
./test/kind_CI.sh
- name: Collect Fission Dump
timeout-minutes: 5
if: ${{ always() }}
run: |
command -v fission && fission support dump
- name: Kind export logs
timeout-minutes: 10
if: ${{ always() }}
run: |
kind export logs --name kind kind-logs
- name: Backup prometheus data
timeout-minutes: 10
if: ${{ always() }}
run: |
TRACE=1 ./hack/backup-prometheus.sh
- name: Archive fission dump
timeout-minutes: 10
if: ${{ failure() || cancelled() }}
uses: actions/upload-artifact@v3
with:
name: fission-dump-${{ github.run_id }}-${{ github.job_id }}-${{ matrix.kindversion }}
path: fission-dump/*.zip
retention-days: 5
- name: Archive prometheus dump
timeout-minutes: 10
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: prom-dump-${{ github.run_id }}-${{ github.job_id }}-${{ matrix.kindversion }}
path: /tmp/prometheus/*
retention-days: 5
- name: Archive kind logs
timeout-minutes: 10
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: kind-logs-${{ github.run_id }}-${{ github.job_id }}-${{ matrix.kindversion }}
path: kind-logs/*
retention-days: 5
+20 -11
View File
@@ -6,20 +6,21 @@ on:
- v2.** - v2.**
env: env:
KIND_VERSION: v0.17.0 KIND_VERSION: v0.20.0
KIND_NODE_IMAGE_TAG: v1.19.16 KIND_NODE_IMAGE_TAG: v1.23.17
KIND_CLUSTER_NAME: kind
jobs: jobs:
create-draft-release: create-draft-release:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check out code - name: Check out code
uses: actions/checkout@v3 uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Setup go - name: Setup go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version-file: "go.mod" go-version-file: "go.mod"
cache: true cache: true
@@ -29,22 +30,30 @@ jobs:
run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//} run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\//}
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v3 uses: goreleaser/goreleaser-action@v5
with: with:
install-only: true install-only: true
- name: Kind Clutser - name: Kind Clutser
uses: engineerd/setup-kind@v0.5.0 uses: helm/kind-action@v1.8.0
with: with:
image: kindest/node:${{ env.KIND_NODE_IMAGE_TAG }} node_image: kindest/node:${{ env.KIND_NODE_IMAGE_TAG }}
version: ${{ env.KIND_VERSION }} version: ${{ env.KIND_VERSION }}
config: kind.yaml config: kind.yaml
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
- name: Set up QEMU - name: Set up QEMU
uses: docker/setup-qemu-action@v2 uses: docker/setup-qemu-action@v3
- name: Docker Login - name: Login to ghcr.io
uses: docker/login-action@v2 uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to docker.io
uses: docker/login-action@v3
with: with:
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -69,7 +78,7 @@ jobs:
shell: bash shell: bash
- name: Run GoReleaser - name: Run GoReleaser
uses: goreleaser/goreleaser-action@v3 uses: goreleaser/goreleaser-action@v5
with: with:
version: latest version: latest
args: release args: release
+13 -11
View File
@@ -22,8 +22,9 @@ on:
workflow_dispatch: workflow_dispatch:
env: env:
HELM_VERSION: v3.10.1 HELM_VERSION: v3.13.0
KIND_VERSION: v0.17.0 KIND_VERSION: v0.20.0
KIND_CLUSTER_NAME: kind
jobs: jobs:
upgrade-test: upgrade-test:
@@ -32,14 +33,14 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
kindimage: ["kindest/node:v1.19.16"] kindimage: ["kindest/node:v1.23.17"]
os: [ubuntu-latest] os: [ubuntu-latest]
steps: steps:
- name: Checkout action sources - name: Checkout action sources
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup go - name: Setup go
uses: actions/setup-go@v3 uses: actions/setup-go@v4
with: with:
go-version-file: "go.mod" go-version-file: "go.mod"
cache: true cache: true
@@ -50,22 +51,23 @@ jobs:
version: ${{ env.HELM_VERSION }} version: ${{ env.HELM_VERSION }}
- name: Setup Kind Clutser - name: Setup Kind Clutser
uses: engineerd/setup-kind@v0.5.0 uses: helm/kind-action@v1.8.0
with: with:
image: ${{ matrix.kindimage }} node_image: ${{ matrix.kindimage }}
version: ${{ env.KIND_VERSION }} version: ${{ env.KIND_VERSION }}
cluster_name: ${{ env.KIND_CLUSTER_NAME }}
- name: Install GoReleaser - name: Install GoReleaser
uses: goreleaser/goreleaser-action@v3 uses: goreleaser/goreleaser-action@v5
with: with:
install-only: true install-only: true
- name: Setup kubectl & fetch node information - name: Setup kubectl & fetch node information
run: | run: |
kubectl cluster-info --context kind-kind kubectl cluster-info --context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl get nodes kubectl get nodes
kubectl get storageclasses.storage.k8s.io kubectl get storageclasses.storage.k8s.io
kubectl config use-context kind-kind kubectl config use-context kind-${{ env.KIND_CLUSTER_NAME }}
kubectl config set-context --current --namespace=default kubectl config set-context --current --namespace=default
kubectl config view kubectl config view
@@ -99,7 +101,7 @@ jobs:
- name: Kind export logs - name: Kind export logs
if: ${{ always() }} if: ${{ always() }}
run: | run: |
kind export logs --name kind kind-logs kind export logs --name ${{ env.KIND_CLUSTER_NAME }} kind-logs
- name: Archive fission dump - name: Archive fission dump
if: ${{ failure() || cancelled() }} if: ${{ failure() || cancelled() }}
+3
View File
@@ -37,3 +37,6 @@ manifest/
coverage.txt coverage.txt
cosign.key cosign.key
# Dumps
.dumps/
+1 -1
View File
@@ -32,4 +32,4 @@ linters-settings:
goimports: goimports:
# put imports beginning with prefix after 3rd-party packages; # put imports beginning with prefix after 3rd-party packages;
# it's a comma-separated list of prefixes # it's a comma-separated list of prefixes
local-prefixes: github.com/fission/fission local: github.com/fission/fission
+171 -16
View File
@@ -84,8 +84,11 @@ dockers:
image_templates: image_templates:
- "fission/builder:latest-amd64" - "fission/builder:latest-amd64"
- "fission/builder:{{ .Tag }}-amd64" - "fission/builder:{{ .Tag }}-amd64"
dockerfile: cmd/builder/Dockerfile.fission-builder - "ghcr.io/fission/builder:latest-amd64"
- "ghcr.io/fission/builder:{{ .Tag }}-amd64"
dockerfile: cmd/builder/Dockerfile
build_flag_templates: build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64" - "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}"
@@ -96,28 +99,60 @@ dockers:
image_templates: image_templates:
- "fission/fetcher:latest-amd64" - "fission/fetcher:latest-amd64"
- "fission/fetcher:{{ .Tag }}-amd64" - "fission/fetcher:{{ .Tag }}-amd64"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher - "ghcr.io/fission/fetcher:latest-amd64"
- "ghcr.io/fission/fetcher:{{ .Tag }}-amd64"
dockerfile: cmd/fetcher/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-amd64 - <<: *docker-amd64
ids: ids:
- fission-bundle - fission-bundle
image_templates: image_templates:
- "fission/fission-bundle:latest-amd64" - "fission/fission-bundle:latest-amd64"
- "fission/fission-bundle:{{ .Tag }}-amd64" - "fission/fission-bundle:{{ .Tag }}-amd64"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle - "ghcr.io/fission/fission-bundle:latest-amd64"
- "ghcr.io/fission/fission-bundle:{{ .Tag }}-amd64"
dockerfile: cmd/fission-bundle/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-amd64 - <<: *docker-amd64
ids: ids:
- pre-upgrade-checks - pre-upgrade-checks
image_templates: image_templates:
- "fission/pre-upgrade-checks:latest-amd64" - "fission/pre-upgrade-checks:latest-amd64"
- "fission/pre-upgrade-checks:{{ .Tag }}-amd64" - "fission/pre-upgrade-checks:{{ .Tag }}-amd64"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks - "ghcr.io/fission/pre-upgrade-checks:latest-amd64"
- "ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-amd64"
dockerfile: cmd/preupgradechecks/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-amd64 - <<: *docker-amd64
ids: ids:
- reporter - reporter
image_templates: image_templates:
- "fission/reporter:latest-amd64" - "fission/reporter:latest-amd64"
- "fission/reporter:{{ .Tag }}-amd64" - "fission/reporter:{{ .Tag }}-amd64"
dockerfile: cmd/reporter/Dockerfile.reporter - "ghcr.io/fission/reporter:latest-amd64"
- "ghcr.io/fission/reporter:{{ .Tag }}-amd64"
dockerfile: cmd/reporter/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/amd64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- &docker-arm64 - &docker-arm64
use: buildx use: buildx
goos: linux goos: linux
@@ -127,8 +162,11 @@ dockers:
image_templates: image_templates:
- "fission/builder:latest-arm64" - "fission/builder:latest-arm64"
- "fission/builder:{{ .Tag }}-arm64" - "fission/builder:{{ .Tag }}-arm64"
dockerfile: cmd/builder/Dockerfile.fission-builder - "ghcr.io/fission/builder:latest-arm64"
- "ghcr.io/fission/builder:{{ .Tag }}-arm64"
dockerfile: cmd/builder/Dockerfile
build_flag_templates: build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64" - "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}"
@@ -139,28 +177,60 @@ dockers:
image_templates: image_templates:
- "fission/fetcher:latest-arm64" - "fission/fetcher:latest-arm64"
- "fission/fetcher:{{ .Tag }}-arm64" - "fission/fetcher:{{ .Tag }}-arm64"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher - "ghcr.io/fission/fetcher:latest-arm64"
- "ghcr.io/fission/fetcher:{{ .Tag }}-arm64"
dockerfile: cmd/fetcher/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-arm64 - <<: *docker-arm64
ids: ids:
- fission-bundle - fission-bundle
image_templates: image_templates:
- "fission/fission-bundle:latest-arm64" - "fission/fission-bundle:latest-arm64"
- "fission/fission-bundle:{{ .Tag }}-arm64" - "fission/fission-bundle:{{ .Tag }}-arm64"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle - "ghcr.io/fission/fission-bundle:latest-arm64"
- "ghcr.io/fission/fission-bundle:{{ .Tag }}-arm64"
dockerfile: cmd/fission-bundle/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-arm64 - <<: *docker-arm64
ids: ids:
- pre-upgrade-checks - pre-upgrade-checks
image_templates: image_templates:
- "fission/pre-upgrade-checks:latest-arm64" - "fission/pre-upgrade-checks:latest-arm64"
- "fission/pre-upgrade-checks:{{ .Tag }}-arm64" - "fission/pre-upgrade-checks:{{ .Tag }}-arm64"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks - "ghcr.io/fission/pre-upgrade-checks:latest-arm64"
- "ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-arm64"
dockerfile: cmd/preupgradechecks/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-arm64 - <<: *docker-arm64
ids: ids:
- reporter - reporter
image_templates: image_templates:
- "fission/reporter:latest-arm64" - "fission/reporter:latest-arm64"
- "fission/reporter:{{ .Tag }}-arm64" - "fission/reporter:{{ .Tag }}-arm64"
dockerfile: cmd/reporter/Dockerfile.reporter - "ghcr.io/fission/reporter:latest-arm64"
- "ghcr.io/fission/reporter:{{ .Tag }}-arm64"
dockerfile: cmd/reporter/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm64"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- &docker-armv7 - &docker-armv7
use: buildx use: buildx
goos: linux goos: linux
@@ -171,8 +241,11 @@ dockers:
image_templates: image_templates:
- "fission/builder:latest-armv7" - "fission/builder:latest-armv7"
- "fission/builder:{{ .Tag }}-armv7" - "fission/builder:{{ .Tag }}-armv7"
dockerfile: cmd/builder/Dockerfile.fission-builder - "ghcr.io/fission/builder:latest-armv7"
- "ghcr.io/fission/builder:{{ .Tag }}-armv7"
dockerfile: cmd/builder/Dockerfile
build_flag_templates: build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm/v7" - "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}"
@@ -183,74 +256,156 @@ dockers:
image_templates: image_templates:
- "fission/fetcher:latest-armv7" - "fission/fetcher:latest-armv7"
- "fission/fetcher:{{ .Tag }}-armv7" - "fission/fetcher:{{ .Tag }}-armv7"
dockerfile: cmd/fetcher/Dockerfile.fission-fetcher - "ghcr.io/fission/fetcher:latest-armv7"
- "ghcr.io/fission/fetcher:{{ .Tag }}-armv7"
dockerfile: cmd/fetcher/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-armv7 - <<: *docker-armv7
ids: ids:
- fission-bundle - fission-bundle
image_templates: image_templates:
- "fission/fission-bundle:latest-armv7" - "fission/fission-bundle:latest-armv7"
- "fission/fission-bundle:{{ .Tag }}-armv7" - "fission/fission-bundle:{{ .Tag }}-armv7"
dockerfile: cmd/fission-bundle/Dockerfile.fission-bundle - "ghcr.io/fission/fission-bundle:latest-armv7"
- "ghcr.io/fission/fission-bundle:{{ .Tag }}-armv7"
dockerfile: cmd/fission-bundle/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-armv7 - <<: *docker-armv7
ids: ids:
- pre-upgrade-checks - pre-upgrade-checks
image_templates: image_templates:
- "fission/pre-upgrade-checks:latest-armv7" - "fission/pre-upgrade-checks:latest-armv7"
- "fission/pre-upgrade-checks:{{ .Tag }}-armv7" - "fission/pre-upgrade-checks:{{ .Tag }}-armv7"
dockerfile: cmd/preupgradechecks/Dockerfile.fission-preupgradechecks - "ghcr.io/fission/pre-upgrade-checks:latest-armv7"
- "ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-armv7"
dockerfile: cmd/preupgradechecks/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
- <<: *docker-armv7 - <<: *docker-armv7
ids: ids:
- reporter - reporter
image_templates: image_templates:
- "fission/reporter:latest-armv7" - "fission/reporter:latest-armv7"
- "fission/reporter:{{ .Tag }}-armv7" - "fission/reporter:{{ .Tag }}-armv7"
dockerfile: cmd/reporter/Dockerfile.reporter - "ghcr.io/fission/reporter:latest-armv7"
- "ghcr.io/fission/reporter:{{ .Tag }}-armv7"
dockerfile: cmd/reporter/Dockerfile
build_flag_templates:
- "--label=org.opencontainers.image.source={{.GitURL}}"
- "--platform=linux/arm/v7"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Tag}}"
docker_manifests: docker_manifests:
- name_template: ghcr.io/fission/builder:{{ .Tag }}
image_templates:
- ghcr.io/fission/builder:{{ .Tag }}-amd64
- ghcr.io/fission/builder:{{ .Tag }}-arm64
- ghcr.io/fission/builder:{{ .Tag }}-armv7
- name_template: fission/builder:{{ .Tag }} - name_template: fission/builder:{{ .Tag }}
image_templates: image_templates:
- fission/builder:{{ .Tag }}-amd64 - fission/builder:{{ .Tag }}-amd64
- fission/builder:{{ .Tag }}-arm64 - fission/builder:{{ .Tag }}-arm64
- fission/builder:{{ .Tag }}-armv7 - fission/builder:{{ .Tag }}-armv7
- name_template: ghcr.io/fission/fetcher:{{ .Tag }}
image_templates:
- ghcr.io/fission/fetcher:{{ .Tag }}-amd64
- ghcr.io/fission/fetcher:{{ .Tag }}-arm64
- ghcr.io/fission/fetcher:{{ .Tag }}-armv7
- name_template: fission/fetcher:{{ .Tag }} - name_template: fission/fetcher:{{ .Tag }}
image_templates: image_templates:
- fission/fetcher:{{ .Tag }}-amd64 - fission/fetcher:{{ .Tag }}-amd64
- fission/fetcher:{{ .Tag }}-arm64 - fission/fetcher:{{ .Tag }}-arm64
- fission/fetcher:{{ .Tag }}-armv7 - fission/fetcher:{{ .Tag }}-armv7
- name_template: ghcr.io/fission/fission-bundle:{{ .Tag }}
image_templates:
- ghcr.io/fission/fission-bundle:{{ .Tag }}-amd64
- ghcr.io/fission/fission-bundle:{{ .Tag }}-arm64
- ghcr.io/fission/fission-bundle:{{ .Tag }}-armv7
- name_template: fission/fission-bundle:{{ .Tag }} - name_template: fission/fission-bundle:{{ .Tag }}
image_templates: image_templates:
- fission/fission-bundle:{{ .Tag }}-amd64 - fission/fission-bundle:{{ .Tag }}-amd64
- fission/fission-bundle:{{ .Tag }}-arm64 - fission/fission-bundle:{{ .Tag }}-arm64
- fission/fission-bundle:{{ .Tag }}-armv7 - fission/fission-bundle:{{ .Tag }}-armv7
- name_template: ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}
image_templates:
- ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-amd64
- ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-arm64
- ghcr.io/fission/pre-upgrade-checks:{{ .Tag }}-armv7
- name_template: fission/pre-upgrade-checks:{{ .Tag }} - name_template: fission/pre-upgrade-checks:{{ .Tag }}
image_templates: image_templates:
- fission/pre-upgrade-checks:{{ .Tag }}-amd64 - fission/pre-upgrade-checks:{{ .Tag }}-amd64
- fission/pre-upgrade-checks:{{ .Tag }}-arm64 - fission/pre-upgrade-checks:{{ .Tag }}-arm64
- fission/pre-upgrade-checks:{{ .Tag }}-armv7 - fission/pre-upgrade-checks:{{ .Tag }}-armv7
- name_template: ghcr.io/fission/reporter:{{ .Tag }}
image_templates:
- ghcr.io/fission/reporter:{{ .Tag }}-amd64
- ghcr.io/fission/reporter:{{ .Tag }}-arm64
- ghcr.io/fission/reporter:{{ .Tag }}-armv7
- name_template: fission/reporter:{{ .Tag }} - name_template: fission/reporter:{{ .Tag }}
image_templates: image_templates:
- fission/reporter:{{ .Tag }}-amd64 - fission/reporter:{{ .Tag }}-amd64
- fission/reporter:{{ .Tag }}-arm64 - fission/reporter:{{ .Tag }}-arm64
- fission/reporter:{{ .Tag }}-armv7 - fission/reporter:{{ .Tag }}-armv7
- name_template: ghcr.io/fission/builder:latest
image_templates:
- ghcr.io/fission/builder:latest-amd64
- ghcr.io/fission/builder:latest-arm64
- ghcr.io/fission/builder:latest-armv7
- name_template: fission/builder:latest - name_template: fission/builder:latest
image_templates: image_templates:
- fission/builder:latest-amd64 - fission/builder:latest-amd64
- fission/builder:latest-arm64 - fission/builder:latest-arm64
- fission/builder:latest-armv7 - fission/builder:latest-armv7
- name_template: ghcr.io/fission/fetcher:latest
image_templates:
- ghcr.io/fission/fetcher:latest-amd64
- ghcr.io/fission/fetcher:latest-arm64
- ghcr.io/fission/fetcher:latest-armv7
- name_template: fission/fetcher:latest - name_template: fission/fetcher:latest
image_templates: image_templates:
- fission/fetcher:latest-amd64 - fission/fetcher:latest-amd64
- fission/fetcher:latest-arm64 - fission/fetcher:latest-arm64
- fission/fetcher:latest-armv7 - fission/fetcher:latest-armv7
- name_template: ghcr.io/fission/fission-bundle:latest
image_templates:
- ghcr.io/fission/fission-bundle:latest-amd64
- ghcr.io/fission/fission-bundle:latest-arm64
- ghcr.io/fission/fission-bundle:latest-armv7
- name_template: fission/fission-bundle:latest - name_template: fission/fission-bundle:latest
image_templates: image_templates:
- fission/fission-bundle:latest-amd64 - fission/fission-bundle:latest-amd64
- fission/fission-bundle:latest-arm64 - fission/fission-bundle:latest-arm64
- fission/fission-bundle:latest-armv7 - fission/fission-bundle:latest-armv7
- name_template: ghcr.io/fission/pre-upgrade-checks:latest
image_templates:
- ghcr.io/fission/pre-upgrade-checks:latest-amd64
- ghcr.io/fission/pre-upgrade-checks:latest-arm64
- ghcr.io/fission/pre-upgrade-checks:latest-armv7
- name_template: fission/pre-upgrade-checks:latest - name_template: fission/pre-upgrade-checks:latest
image_templates: image_templates:
- fission/pre-upgrade-checks:latest-amd64 - fission/pre-upgrade-checks:latest-amd64
- fission/pre-upgrade-checks:latest-arm64 - fission/pre-upgrade-checks:latest-arm64
- fission/pre-upgrade-checks:latest-armv7 - fission/pre-upgrade-checks:latest-armv7
- name_template: ghcr.io/fission/reporter:latest
image_templates:
- ghcr.io/fission/reporter:latest-amd64
- ghcr.io/fission/reporter:latest-arm64
- ghcr.io/fission/reporter:latest-armv7
- name_template: fission/reporter:latest - name_template: fission/reporter:latest
image_templates: image_templates:
- fission/reporter:latest-amd64 - fission/reporter:latest-amd64
+4 -4
View File
@@ -8,10 +8,10 @@ pull_request_rules:
- check-success=CodeQL-Build - check-success=CodeQL-Build
- check-success=CodeQL - check-success=CodeQL
- check-success=lint - check-success=lint
- check-success=upgrade-test (kindest/node:v1.19.11, ubuntu-latest) - check-success=upgrade-test (kindest/node:v1.23.17, ubuntu-latest)
- check-success=integration-test (v1.19.11, ubuntu-latest) - check-success=integration-test (v1.23.17, ubuntu-latest)
- check-success=integration-test (v1.20.7, ubuntu-latest) - check-success=integration-test (v1.25.11, ubuntu-latest)
- check-success=integration-test (v1.21.1, ubuntu-latest) - check-success=integration-test (v1.27.3, ubuntu-latest)
actions: actions:
merge: merge:
method: squash method: squash
+16 -9
View File
@@ -51,7 +51,7 @@ test-run: code-checks
### Binaries ### Binaries
build-fission-cli: build-fission-cli:
@GOOS=$(GOOS) GOARCH=$(GOARCH) GOAMD64=$(GOAMD64) GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --rm-dist --single-target --id fission-cli @GOOS=$(GOOS) GOARCH=$(GOARCH) GOAMD64=$(GOAMD64) GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --clean --single-target --id fission-cli
install-fission-cli: install-fission-cli:
# TODO: Fix this hack, replace v1 with GOAMD64 # TODO: Fix this hack, replace v1 with GOAMD64
@@ -64,7 +64,7 @@ codegen: controller-gen-install
### CRDs ### CRDs
controller-gen-install: controller-gen-install:
go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.10.0 go install sigs.k8s.io/controller-tools/cmd/controller-gen@v0.13.0
generate-crds: controller-gen-install generate-crds: controller-gen-install
controller-gen crd \ controller-gen crd \
@@ -99,7 +99,7 @@ generate-cli-docs:
go run tools/cmd-docs/main.go -o "../fission.io/content/en/docs/reference/fission-cli" go run tools/cmd-docs/main.go -o "../fission.io/content/en/docs/reference/fission-cli"
install-crd-ref-docs: install-crd-ref-docs:
go install github.com/elastic/crd-ref-docs@v0.0.8 go install github.com/elastic/crd-ref-docs@v0.0.9
generate-crd-ref-docs: install-crd-ref-docs generate-crd-ref-docs: install-crd-ref-docs
# crd-ref-docs: https://github.com/elastic/crd-ref-docs # crd-ref-docs: https://github.com/elastic/crd-ref-docs
@@ -111,12 +111,12 @@ generate-crd-ref-docs: install-crd-ref-docs
all-generators: codegen generate-crds generate-swagger-doc generate-cli-docs generate-crd-ref-docs all-generators: codegen generate-crds generate-swagger-doc generate-cli-docs generate-crd-ref-docs
skaffold-prebuild: skaffold-prebuild:
@GOOS=linux GOARCH=amd64 GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --rm-dist --single-target @GOOS=linux GOARCH=amd64 GORELEASER_CURRENT_TAG=$(VERSION) goreleaser build --snapshot --clean --single-target
@cp -v cmd/builder/Dockerfile.fission-builder dist/builder_linux_amd64_v1/Dockerfile @cp -v cmd/builder/Dockerfile dist/builder_linux_amd64_v1/Dockerfile
@cp -v cmd/fetcher/Dockerfile.fission-fetcher dist/fetcher_linux_amd64_v1/Dockerfile @cp -v cmd/fetcher/Dockerfile dist/fetcher_linux_amd64_v1/Dockerfile
@cp -v cmd/fission-bundle/Dockerfile.fission-bundle dist/fission-bundle_linux_amd64_v1/Dockerfile @cp -v cmd/fission-bundle/Dockerfile dist/fission-bundle_linux_amd64_v1/Dockerfile
@cp -v cmd/reporter/Dockerfile.reporter dist/reporter_linux_amd64_v1/Dockerfile @cp -v cmd/reporter/Dockerfile dist/reporter_linux_amd64_v1/Dockerfile
@cp -v cmd/preupgradechecks/Dockerfile.fission-preupgradechecks dist/pre-upgrade-checks_linux_amd64_v1/Dockerfile @cp -v cmd/preupgradechecks/Dockerfile dist/pre-upgrade-checks_linux_amd64_v1/Dockerfile
skaffold-deploy: skaffold-prebuild skaffold-deploy: skaffold-prebuild
skaffold run -p $(SKAFFOLD_PROFILE) skaffold run -p $(SKAFFOLD_PROFILE)
@@ -127,3 +127,10 @@ release:
@./hack/release.sh $(VERSION) @./hack/release.sh $(VERSION)
@./hack/release-tag.sh $(VERSION) @./hack/release-tag.sh $(VERSION)
@./hack/changelog.sh @./hack/changelog.sh
## Envtest
install-envtest:
go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
setup-envtest:
setup-envtest -p path use 1.23.x
+2 -2
View File
@@ -1,7 +1,7 @@
apiVersion: v2 apiVersion: v2
name: fission-all name: fission-all
version: v1.18.0-rc1 version: v1.20.0-rc1
appVersion: v1.18.0-rc1 appVersion: v1.20.0-rc1
description: Fission is a fast serverless framework for Kubernetes. description: Fission is a fast serverless framework for Kubernetes.
home: https://fission.io/ home: https://fission.io/
icon: https://fission.io/images/fission-logo-white.svg icon: https://fission.io/images/fission-logo-white.svg
+20 -1
View File
@@ -4,7 +4,7 @@
## Prerequisites ## Prerequisites
- Kubernetes 1.19+ - Kubernetes 1.23+
- Helm 3+ - Helm 3+
## Get Repo Info ## Get Repo Info
@@ -93,6 +93,25 @@ _See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documen
A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. 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.18.x to 1.20.x
We have removed controller service from fission-all chart.
### Upgrade from 1.17.x to 1.18.x
With 1.18.x, we have major change in the way we are deploying Fission.
We have added parameters `defaultNamespace`, `additionalFissionNamespaces`, `functionNamespace` and `builderNamespace` to manage the namespaces.
We watch and manage specific namespaces for Fission resources configured via `defaultNamespace` and `additionalFissionNamespaces` parameters.
You dont need to worry about `builderNamespace` and `functionNamespace` parameters, unless you want to consider legacy Fission resources.
Please refer to [core changes](https://fission.io/docs/releases/v1.18.0/#fission-core-changes) for more details.
### Upgrade from 1.16.x to 1.17.x
By default, Fission runs with the default security context. This means that it will be run as root. We have added settings in Helm chart for securityContext across all services in Fission. You can enable recommended securityContext settings during Fission installation.
Please refer to [security context settings](https://fission.io/docs/releases/v1.17.0/#security-context-setting-for-fission-installation) for more details.
### Upgrade from 1.15.x to 1.16.x ### Upgrade from 1.15.x to 1.16.x
If you have been using `prometheus.enabled=true` in your fission-all chart, you will need to deploy the prometheus using prometheus community supported chart. If you have been using `prometheus.enabled=true` in your fission-all chart, you will need to deploy the prometheus using prometheus community supported chart.
+9 -3
View File
@@ -11,14 +11,20 @@ Windows:
2. You're ready to use Fission! 2. You're ready to use Fission!
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
You can create fission resources in the namespaces "{{ .Values.defaultNamespace }},{{ join "," .Values.additionalFissionNamespaces }}"
{{- else }}
You can create fission resources in the namespace "{{ .Values.defaultNamespace }}"
{{- end }}
# Create an environment # Create an environment
$ fission env create --name nodejs --image fission/node-env $ fission env create --name nodejs --image fission/node-env --namespace {{ .Values.defaultNamespace }}
# Get a hello world # Get a hello world
$ curl https://raw.githubusercontent.com/fission/examples/master/nodejs/hello.js > hello.js $ curl https://raw.githubusercontent.com/fission/examples/master/nodejs/hello.js > hello.js
# Register this function with Fission # Register this function with Fission
$ fission function create --name hello --env nodejs --code hello.js $ fission function create --name hello --env nodejs --code hello.js --namespace {{ .Values.defaultNamespace }}
{{- if .Values.authentication.enabled }} {{- if .Values.authentication.enabled }}
@@ -29,6 +35,6 @@ Windows:
{{- end }} {{- end }}
# Run this function # Run this function
$ fission function test --name hello $ fission function test --name hello --namespace {{ .Values.defaultNamespace }}
Hello, world! Hello, world!
@@ -15,28 +15,6 @@ rules:
- patch - patch
- delete - delete
{{- end }} {{- end }}
{{- define "controller-rules" }}
rules:
- apiGroups:
- fission.io
resources:
- canaryconfigs
- environments
- functions
- httptriggers
- kuberneteswatchtriggers
- messagequeuetriggers
- packages
- timetriggers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
{{- end }}
{{- define "executor-rules" }} {{- define "executor-rules" }}
rules: rules:
- apiGroups: - apiGroups:
@@ -0,0 +1,364 @@
{{- define "buildermgr-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- pods
- services
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- apps
resources:
- deployments
verbs:
- list
- create
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
{{- define "canaryconfig-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- list
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
{{- define "executor-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- pods
- services
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- list
- watch
{{- if .Values.executor.serviceAccountCheck.enabled }}
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- create
- get
- apiGroups:
- authorization.k8s.io
resources:
- localsubjectaccessreviews
verbs:
- create
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
- roles
verbs:
- create
{{- end }}
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
{{- end }}
{{- define "fluentbit-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
{{- end }}
{{- define "kubewatcher-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- replicationcontrollers
- events
verbs:
- get
- list
- watch
- apiGroups:
- batch
resources:
- jobs
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
{{- define "kafka-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
{{- define "keda-kuberules" }}
rules:
- apiGroups:
- ""
resources:
- pods
- services
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- keda.sh
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
{{- if .Values.mqt_keda.enabled }}
- apiGroups:
- keda.k8s.io
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
{{- end }}
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
{{- end }}
{{- define "preupgrade-kuberules" }}
# TODO: Kept for future in case preupgrade needs any permissions in the future
rules: []
{{- end }}
{{- define "router-kuberules" }}
rules:
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
{{- define "timer-kuberules" }}
rules: []
{{- end }}
@@ -0,0 +1,64 @@
{{- define "kubernetes-role-generator" }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
{{- if eq "preupgrade" .component }}
annotations:
helm.sh/hook: pre-upgrade
helm.sh/hook-delete-policy: before-hook-creation
helm.sh/hook-weight: "-2"
{{- end }}
name: "{{ .Release.Name }}-{{ .component }}"
namespace: {{ .namespace }}
{{- if eq "buildermgr" .component }}
{{- include "buildermgr-kuberules" . }}
{{- end }}
{{- if eq "canaryconfig" .component }}
{{- include "canaryconfig-kuberules" . }}
{{- end }}
{{- if eq "fluentbit" .component }}
{{- include "fluentbit-kuberules" . }}
{{- end }}
{{- if eq "executor" .component }}
{{- include "executor-kuberules" . }}
{{- end }}
{{- if eq "kubewatcher" .component }}
{{- include "kubewatcher-kuberules" . }}
{{- end }}
{{- if eq "kafka" .component }}
{{- include "kafka-kuberules" . }}
{{- end }}
{{- if eq "keda" .component }}
{{- include "keda-kuberules" . }}
{{- end }}
{{- if eq "preupgrade" .component }}
{{- include "preupgrade-kuberules" . }}
{{- end }}
{{- if eq "router" .component }}
{{- include "router-kuberules" . }}
{{- end }}
{{- if eq "timer" .component }}
{{- include "timer-kuberules" . }}
{{- end }}
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
{{- if eq "preupgrade" .component }}
annotations:
helm.sh/hook: pre-upgrade
helm.sh/hook-delete-policy: before-hook-creation
{{- end }}
name: "{{ .Release.Name }}-{{ .component }}"
namespace: {{ .namespace }}
subjects:
- kind: ServiceAccount
name: "fission-{{ .component }}"
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: "{{ .Release.Name }}-{{ .component }}"
apiGroup: rbac.authorization.k8s.io
{{- end }}
@@ -14,9 +14,6 @@ metadata:
{{- if eq "buildermgr" .component }} {{- if eq "buildermgr" .component }}
{{- include "buildermgr-rules" . }} {{- include "buildermgr-rules" . }}
{{- end }} {{- end }}
{{- if eq "controller" .component }}
{{- include "controller-rules" . }}
{{- end }}
{{- if eq "executor" .component }} {{- if eq "executor" .component }}
{{- include "executor-rules" . }} {{- include "executor-rules" . }}
{{- end }} {{- end }}
@@ -13,18 +13,12 @@ rules:
- secrets - secrets
verbs: verbs:
- get - get
- apiGroups:
- ""
resources:
- pods
verbs:
- list
- apiGroups: - apiGroups:
- fission.io - fission.io
resources: resources:
- packages - packages
verbs: verbs:
- "get" - get
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: Role kind: Role
@@ -37,7 +31,7 @@ rules:
resources: resources:
- packages - packages
verbs: verbs:
- "get" - get
- apiGroups: - apiGroups:
- "" - ""
resources: resources:
@@ -45,6 +39,30 @@ rules:
- secrets - secrets
verbs: verbs:
- get - get
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ .namespace }}
name: {{ .Release.Name }}-fission-fetcher-websocket
rules:
- apiGroups:
- ""
resources:
- "events"
verbs:
- "get"
- "list"
- "watch"
- "create"
- "update"
- "patch"
- apiGroups:
- ""
resources:
- pods
verbs:
- get
{{- end -}} {{- end -}}
{{- define "fissionFunction.rolebindings" }} {{- define "fissionFunction.rolebindings" }}
@@ -61,7 +79,11 @@ roleRef:
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: fission-fetcher name: fission-fetcher
namespace: {{template "fission-function-ns" . }} {{- if and (.Values.functionNamespace) (eq .namespace "default") }}
namespace: {{ .Values.functionNamespace }}
{{- else }}
namespace: {{ .namespace }}
{{- end }}
--- ---
apiVersion: rbac.authorization.k8s.io/v1 apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding kind: RoleBinding
@@ -75,5 +97,27 @@ roleRef:
subjects: subjects:
- kind: ServiceAccount - kind: ServiceAccount
name: fission-builder name: fission-builder
namespace: {{ template "fission-builder-ns" . }} {{- if and (.Values.builderNamespace) (eq .namespace "default") }}
namespace: {{ .Values.builderNamespace }}
{{- else }}
namespace: {{ .namespace }}
{{- end }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-fission-fetcher-websocket
namespace: {{ .namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ .Release.Name }}-fission-fetcher-websocket
subjects:
- kind: ServiceAccount
name: fission-fetcher
{{- if and (.Values.functionNamespace) (eq .namespace "default") }}
namespace: {{ .Values.functionNamespace }}
{{- else }}
namespace: {{ .namespace }}
{{- end }}
{{- end -}} {{- end -}}
+24 -2
View File
@@ -55,6 +55,22 @@ This template generates the image name for the deployment depending on the value
{{- end }} {{- end }}
{{- end -}} {{- end -}}
{{- define "reporterImage" -}}
{{- if .Values.repository -}}
{{- if eq .Values.imageTag "" -}}
{{ .Values.repository }}/{{ .Values.postInstallReportImage }}
{{- else -}}
{{ .Values.repository }}/{{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- end }}
{{- else -}}
{{- if eq .Values.imageTag "" -}}
{{ .Values.postInstallReportImage }}
{{- else -}}
{{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- end }}
{{- end }}
{{- end -}}
{{- define "opentelemtry.envs" }} {{- define "opentelemtry.envs" }}
- name: OTEL_EXPORTER_OTLP_ENDPOINT - name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "{{ .Values.openTelemetry.otlpCollectorEndpoint }}" value: "{{ .Values.openTelemetry.otlpCollectorEndpoint }}"
@@ -73,8 +89,14 @@ This template generates the image name for the deployment depending on the value
{{- end }} {{- end }}
{{- define "fission-resource-namespace.envs" }} {{- define "fission-resource-namespace.envs" }}
- name: FISSION_BUILDER_NAMESPACE
value: "{{ .Values.builderNamespace }}"
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: FISSION_DEFAULT_NAMESPACE
value: "{{ .Values.defaultNamespace }}"
- name: FISSION_RESOURCE_NAMESPACES - name: FISSION_RESOURCE_NAMESPACES
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
value: "{{ .Values.defaultNamespace }},{{ join "," .Values.additionalFissionNamespaces }}" value: "{{ .Values.defaultNamespace }},{{ join "," .Values.additionalFissionNamespaces }}"
{{- else }} {{- else }}
value: {{ .Values.defaultNamespace }} value: {{ .Values.defaultNamespace }}
@@ -100,6 +122,6 @@ Define the svc's name
{{- if .Values.builderNamespace -}} {{- if .Values.builderNamespace -}}
{{- printf "%s" .Values.builderNamespace -}} {{- printf "%s" .Values.builderNamespace -}}
{{- else -}} {{- else -}}
{{- printf "%s" .Values.builderNamespace -}} {{- printf "%s" .Values.defaultNamespace -}}
{{- end -}} {{- end -}}
{{- end -}} {{- end -}}
@@ -26,15 +26,15 @@ spec:
restartPolicy: Never restartPolicy: Never
containers: containers:
- name: post-install-job - name: post-install-job
{{- if .Values.imageTag }} image: {{ include "reporterImage" . | quote }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }} imagePullPolicy: {{ .Values.pullPolicy }}
command: [ "/reporter" ] command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "yaml-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"] args: ["event", "-c", "fission-use", "-a", "yaml-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
env: env:
- name: GA_TRACKING_ID - name: GA_TRACKING_ID
value: "{{ .Values.gaTrackingID }}" value: "{{ .Values.gaTrackingID }}"
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
@@ -30,11 +30,7 @@ spec:
restartPolicy: Never restartPolicy: Never
containers: containers:
- name: post-install-job - name: post-install-job
{{- if .Values.imageTag }} image: {{ include "reporterImage" . | quote }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }} imagePullPolicy: {{ .Values.pullPolicy }}
command: [ "/reporter" ] command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "helm-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"] args: ["event", "-c", "fission-use", "-a", "helm-post-install", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
@@ -47,4 +43,8 @@ spec:
{{- if .Values.terminationMessagePolicy }} {{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }} terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }} {{- end }}
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
@@ -30,11 +30,7 @@ spec:
restartPolicy: Never restartPolicy: Never
containers: containers:
- name: post-upgrade-job - name: post-upgrade-job
{{- if .Values.imageTag }} image: {{ include "reporterImage" . | quote }}
image: {{ .Values.postInstallReportImage }}:{{ .Values.imageTag }}
{{- else }}
image: {{ .Values.postInstallReportImage }}
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }} imagePullPolicy: {{ .Values.pullPolicy }}
command: [ "/reporter" ] command: [ "/reporter" ]
args: ["event", "-c", "fission-use", "-a", "helm-post-upgrade", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"] args: ["event", "-c", "fission-use", "-a", "helm-post-upgrade", "-l", "{{ .Chart.Name }}-{{ .Chart.Version }}"]
@@ -47,4 +43,8 @@ spec:
{{- if .Values.terminationMessagePolicy }} {{- if .Values.terminationMessagePolicy }}
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }} terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }} {{- end }}
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
@@ -1,53 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-buildermgr
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- services
- serviceaccounts
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- apps
resources:
- deployments
verbs:
- list
- create
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-buildermgr
subjects:
- kind: ServiceAccount
name: fission-buildermgr
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-buildermgr
apiGroup: rbac.authorization.k8s.io
@@ -4,6 +4,6 @@ kind: ConfigMap
metadata: metadata:
name: builder-podspec-patch name: builder-podspec-patch
data: data:
spec: | builder-podspec-patch.yaml: |
{{- toYaml .Values.builderPodSpec.podSpec | nindent 4 }} {{- toYaml .Values.builderPodSpec.podSpec | nindent 4 }}
{{- end -}} {{- end -}}
@@ -39,12 +39,6 @@ spec:
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: BUILDER_IMAGE_PULL_POLICY - name: BUILDER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: FISSION_BUILDER_NAMESPACE
value: "{{ .Values.builderNamespace }}"
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: FISSION_DEFAULT_NAMESPACE
value: "{{ .Values.defaultNamespace }}"
- name: ENABLE_ISTIO - name: ENABLE_ISTIO
value: "{{ .Values.enableIstio }}" value: "{{ .Values.enableIstio }}"
- name: FETCHER_MINCPU - name: FETCHER_MINCPU
@@ -61,8 +55,15 @@ spec:
value: {{ .Values.pprof.enabled | quote }} value: {{ .Values.pprof.enabled | quote }}
- name: HELM_RELEASE_NAME - name: HELM_RELEASE_NAME
value: {{ .Release.Name | quote }} value: {{ .Release.Name | quote }}
{{- include "fission-resource-namespace.envs" . | indent 8 }} {{- include "fission-resource-namespace.envs" . | indent 8 }}
{{- include "opentelemtry.envs" . | indent 8 }} {{- include "opentelemtry.envs" . | indent 8 }}
{{- if .Values.builderPodSpec.enabled }}
volumeMounts:
- name: builder-podspec-patch-volume
mountPath: /etc/fission/builder-podspec-patch.yaml
subPath: builder-podspec-patch.yaml
readOnly: true
{{- end }}
ports: ports:
- containerPort: 8080 - containerPort: 8080
name: metrics name: metrics
@@ -75,11 +76,17 @@ spec:
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }} terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }} {{- end }}
serviceAccountName: fission-buildermgr serviceAccountName: fission-buildermgr
{{- if .Values.builderPodSpec.enabled }}
volumes:
- name: builder-podspec-patch-volume
configMap:
name: builder-podspec-patch
{{- end }}
{{- if .Values.priorityClassName }} {{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }} priorityClassName: {{ .Values.priorityClassName }}
{{- end }} {{- end }}
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{- if .Values.extraCoreComponentPodConfig }} {{- if .Values.extraCoreComponentPodConfig }}
@@ -1,7 +1,13 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "buildermgr") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "buildermgr") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "buildermgr") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "buildermgr") $) }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if .Values.builderNamespace -}}
{{ include "fission-role-generator" (merge (dict "namespace" .Values.builderNamespace "component" "buildermgr") $) }}
{{- end }}
{{- if .Values.functionNamespace -}}
{{ include "fission-role-generator" (merge (dict "namespace" .Values.functionNamespace "component" "buildermgr") $) }}
{{- end }}
@@ -0,0 +1,13 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "buildermgr") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "buildermgr") $) }}
{{- end }}
{{- end }}
{{- if .Values.builderNamespace -}}
{{ include "kubernetes-role-generator" (merge (dict "namespace" .Values.builderNamespace "component" "buildermgr") $) }}
{{- end }}
{{- if .Values.functionNamespace -}}
{{ include "kubernetes-role-generator" (merge (dict "namespace" .Values.functionNamespace "component" "buildermgr") $) }}
{{- end }}
@@ -1,43 +0,0 @@
{{- if .Values.canaryDeployment.enabled }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-canaryconfig
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- list
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- create
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end }}
@@ -1,14 +0,0 @@
{{- if .Values.canaryDeployment.enabled }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-canaryconfig
subjects:
- kind: ServiceAccount
name: fission-canaryconfig
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-canaryconfig
apiGroup: rbac.authorization.k8s.io
{{- end -}}
@@ -1,7 +1,7 @@
{{- if .Values.canaryDeployment.enabled }} {{- if .Values.canaryDeployment.enabled }}
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "canaryconfig") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "canaryconfig") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "canaryconfig") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "canaryconfig") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,9 @@
{{- if .Values.canaryDeployment.enabled }}
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "canaryconfig") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "canaryconfig") $) }}
{{- end }}
{{- end }}
{{- end }}
@@ -1,43 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-controller
rules:
- apiGroups:
- ""
resources:
- services
verbs:
- list
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- get
- apiGroups:
- ""
resources:
- namespaces
verbs:
- get
- create
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
{{- end -}}
@@ -1,14 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-controller
subjects:
- kind: ServiceAccount
name: fission-controller
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-controller
apiGroup: rbac.authorization.k8s.io
{{- end -}}
@@ -1,102 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
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
annotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "8080"
spec:
{{- if .Values.controller.securityContext.enabled }}
securityContext: {{- omit .Values.controller.securityContext "enabled" | toYaml | nindent 8 }}
{{- end }}
containers:
- name: controller
image: {{ include "fission-bundleImage" . | quote }}
imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"]
args: ["--controllerPort", "8888"]
env:
- name: FISSION_DEFAULT_NAMESPACE
value: "{{ .Values.defaultNamespace }}"
- name: FISSION_BUILDER_NAMESPACE
value: "{{ .Values.builderNamespace }}"
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: DEBUG_ENV
value: {{ .Values.debugEnv | quote }}
- name: PPROF_ENABLED
value: {{ .Values.pprof.enabled | quote }}
{{- include "fission-resource-namespace.envs" . | indent 8 }}
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
{{- include "opentelemtry.envs" . | indent 8 }}
resources:
{{- toYaml .Values.controller.resources | nindent 10 }}
{{- 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: 8080
name: metrics
- containerPort: 8888
name: http
{{- if .Values.pprof.enabled }}
- containerPort: 6060
name: pprof
{{- end }}
serviceAccountName: fission-controller
volumes:
- name: config-volume
configMap:
name: feature-config
{{- if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }}
{{- end }}
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }}
{{- end -}}
@@ -1,9 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "controller") .) }}
{{- if not .Values.singleDefaultNamespace }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "controller") $) }}
{{- end }}
{{- end }}
{{- end -}}
@@ -1,7 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: fission-controller
namespace: {{ .Release.Namespace }}
{{- end -}}
@@ -1,24 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
{{- if .Values.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: controller-monitor
{{- if .Values.serviceMonitor.namespace }}
namespace: {{ .Values.serviceMonitor.namespace }}
{{- end }}
{{- with .Values.serviceMonitor.additionalServiceMonitorLabels }}
labels:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
svc: controller
endpoints:
- targetPort: 8080
{{- end -}}
{{- end -}}
@@ -1,20 +0,0 @@
{{- if or (.Values.controller.enabled) (.Values.influxdb.enabled) }}
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
{{- end -}}
@@ -1,81 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-executor
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- autoscaling
resources:
- horizontalpodautoscalers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-executor
subjects:
- kind: ServiceAccount
name: fission-executor
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-executor
apiGroup: rbac.authorization.k8s.io
@@ -4,6 +4,6 @@ kind: ConfigMap
metadata: metadata:
name: runtime-podspec-patch name: runtime-podspec-patch
data: data:
spec: | runtime-podspec-patch.yaml: |
{{- toYaml .Values.runtimePodSpec.podSpec | nindent 4 }} {{- toYaml .Values.runtimePodSpec.podSpec | nindent 4 }}
{{- end -}} {{- end -}}
@@ -37,12 +37,6 @@ spec:
{{- end }} {{- end }}
- name: FETCHER_IMAGE_PULL_POLICY - name: FETCHER_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: FISSION_BUILDER_NAMESPACE
value: "{{ .Values.builderNamespace }}"
- name: FISSION_FUNCTION_NAMESPACE
value: "{{ .Values.functionNamespace }}"
- name: FISSION_DEFAULT_NAMESPACE
value: "{{ .Values.defaultNamespace }}"
- name: RUNTIME_IMAGE_PULL_POLICY - name: RUNTIME_IMAGE_PULL_POLICY
value: "{{ .Values.pullPolicy }}" value: "{{ .Values.pullPolicy }}"
- name: ADOPT_EXISTING_RESOURCES - name: ADOPT_EXISTING_RESOURCES
@@ -77,6 +71,12 @@ spec:
- name: CONTAINER_OBJECT_REAPER_INTERVAL - name: CONTAINER_OBJECT_REAPER_INTERVAL
value: {{ .Values.executor.container.objectReaperInterval | quote }} value: {{ .Values.executor.container.objectReaperInterval | quote }}
{{- end}} {{- end}}
{{- if .Values.executor.serviceAccountCheck.enabled }}
- name: SERVICEACCOUNT_CHECK_ENABLED
value: {{ .Values.executor.serviceAccountCheck.enabled | quote }}
- name: SERVICEACCOUNT_CHECK_INTERVAL
value: {{ .Values.executor.serviceAccountCheck.interval | quote }}
{{- end}}
{{- include "fission-resource-namespace.envs" . | indent 8 }} {{- include "fission-resource-namespace.envs" . | indent 8 }}
- name: HELM_RELEASE_NAME - name: HELM_RELEASE_NAME
value: {{ .Release.Name | quote }} value: {{ .Release.Name | quote }}
@@ -96,6 +96,13 @@ spec:
port: 8888 port: 8888
initialDelaySeconds: 35 initialDelaySeconds: 35
periodSeconds: 5 periodSeconds: 5
{{- if .Values.runtimePodSpec.enabled }}
volumeMounts:
- name: runtime-podspec-patch-volume
mountPath: /etc/fission/runtime-podspec-patch.yaml
subPath: runtime-podspec-patch.yaml
readOnly: true
{{- end }}
ports: ports:
- containerPort: 8080 - containerPort: 8080
name: metrics name: metrics
@@ -116,13 +123,19 @@ spec:
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }} terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }} {{- end }}
serviceAccountName: fission-executor serviceAccountName: fission-executor
{{- if .Values.runtimePodSpec.enabled }}
volumes:
- name: runtime-podspec-patch-volume
configMap:
name: runtime-podspec-patch
{{- end }}
{{- if .Values.executor.priorityClassName }} {{- if .Values.executor.priorityClassName }}
priorityClassName: {{ .Values.executor.priorityClassName }} priorityClassName: {{ .Values.executor.priorityClassName }}
{{- else if .Values.priorityClassName }} {{- else if .Values.priorityClassName }}
priorityClassName: {{ .Values.priorityClassName }} priorityClassName: {{ .Values.priorityClassName }}
{{- end }} {{- end }}
{{- with .Values.imagePullSecrets }} {{- with .Values.imagePullSecrets }}
imagePullSecrets: imagePullSecrets:
{{- toYaml . | nindent 8 }} {{- toYaml . | nindent 8 }}
{{- end }} {{- end }}
{{- if .Values.extraCoreComponentPodConfig }} {{- if .Values.extraCoreComponentPodConfig }}
@@ -1,7 +1,13 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "executor") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "executor") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "executor") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "executor") $) }}
{{- end }} {{- end }}
{{- end }} {{- end }}
{{- if .Values.builderNamespace -}}
{{ include "fission-role-generator" (merge (dict "namespace" .Values.builderNamespace "component" "executor") $) }}
{{- end }}
{{- if .Values.functionNamespace -}}
{{ include "fission-role-generator" (merge (dict "namespace" .Values.functionNamespace "component" "executor") $) }}
{{- end }}
@@ -0,0 +1,13 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "executor") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "executor") $) }}
{{- end }}
{{- end }}
{{- if .Values.builderNamespace -}}
{{ include "kubernetes-role-generator" (merge (dict "namespace" .Values.builderNamespace "component" "executor") $) }}
{{- end }}
{{- if .Values.functionNamespace -}}
{{ include "kubernetes-role-generator" (merge (dict "namespace" .Values.functionNamespace "component" "executor") $) }}
{{- end }}
@@ -1,13 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-fluentbit
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-fluentbit
subjects:
- kind: ServiceAccount
name: fission-fluentbit
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-fluentbit
apiGroup: rbac.authorization.k8s.io
@@ -185,6 +185,10 @@ spec:
- name: fluentbit-config - name: fluentbit-config
configMap: configMap:
name: {{ .Release.Name }}-fission-fluentbit name: {{ .Release.Name }}-fission-fluentbit
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
updateStrategy: updateStrategy:
type: RollingUpdate type: RollingUpdate
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "fluentbit") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "fluentbit") $) }}
{{- end }}
{{- end }}
@@ -49,6 +49,10 @@ spec:
secretKeyRef: secretKeyRef:
name: influxdb name: influxdb
key: password key: password
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.extraCoreComponentPodConfig }} {{- if .Values.extraCoreComponentPodConfig }}
{{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}}
{{- end }} {{- end }}
@@ -1,56 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-kubewatcher
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- batch
resources:
- jobs
verbs:
- get
- list
- watch
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-kubewatcher
subjects:
- kind: ServiceAccount
name: fission-kubewatcher
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-kubewatcher
apiGroup: rbac.authorization.k8s.io
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kubewatcher") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kubewatcher") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "kubewatcher") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "kubewatcher") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kubewatcher") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "kubewatcher") $) }}
{{- end }}
{{- end }}
@@ -1,33 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-secret-configmap-getter
rules:
- apiGroups:
- "*"
resources:
- secrets
- configmaps
verbs:
- get
- watch
- list
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-package-getter
rules:
- apiGroups:
- "*"
resources:
- packages
verbs:
- "*"
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- "*"
@@ -4,26 +4,8 @@ Need to use merge function to pass in the current scope so that ".Release" value
can be used can be used
*/}} */}}
{{ include "fissionFunction.roles" (merge (dict "namespace" .Values.defaultNamespace) .) }} {{ include "fissionFunction.roles" (merge (dict "namespace" .Values.defaultNamespace) .) }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: {{ template "fission-function-ns" . }}
name: {{ .Release.Name }}-event-fetcher
rules:
- apiGroups:
- ""
resources:
- "events"
verbs:
- "get"
- "list"
- "watch"
- "create"
- "update"
- "patch"
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fissionFunction.roles" (merge (dict "namespace" $namespace) $) }} {{ include "fissionFunction.roles" (merge (dict "namespace" $namespace) $) }}
{{- end }} {{- end }}
@@ -4,22 +4,8 @@ Need to use merge function to pass in the current scope so that ".Release" value
can be used can be used
*/}} */}}
{{ include "fissionFunction.rolebindings" (merge (dict "namespace" .Values.defaultNamespace) .) }} {{ include "fissionFunction.rolebindings" (merge (dict "namespace" .Values.defaultNamespace) .) }}
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ .Release.Name }}-fission-fetcher-pod-reader
namespace: {{ template "fission-function-ns" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ .Release.Name }}-event-fetcher
subjects:
- kind: ServiceAccount
name: fission-fetcher
namespace: {{ template "fission-function-ns" . }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fissionFunction.rolebindings" (merge (dict "namespace" $namespace) $) }} {{ include "fissionFunction.rolebindings" (merge (dict "namespace" $namespace) $) }}
{{- end }} {{- end }}
@@ -1,62 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-kafka
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-kafka
subjects:
- kind: ServiceAccount
name: fission-kafka
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-kafka
apiGroup: rbac.authorization.k8s.io
@@ -25,11 +25,7 @@ spec:
spec: spec:
containers: containers:
- name: mqtrigger - name: mqtrigger
{{- if eq .Values.imageTag "" }} image: {{ include "fission-bundleImage" . | quote }}
image: "{{ .Values.image }}"
{{- else }}
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
{{- end }}
imagePullPolicy: {{ .Values.pullPolicy }} imagePullPolicy: {{ .Values.pullPolicy }}
command: ["/fission-bundle"] command: ["/fission-bundle"]
args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"] args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"]
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kafka") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kafka") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "kafka") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "kafka") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "kafka") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "kafka") $) }}
{{- end }}
{{- end }}
@@ -1,105 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-keda
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- apps
resources:
- deployments
- deployments/scale
- replicasets
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- keda.sh
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
{{- if .Values.mqt_keda.enabled }}
- apiGroups:
- keda.k8s.io
resources:
- scaledjobs
- scaledobjects
- scaledjobs/finalizers
- scaledjobs/status
- triggerauthentications
- triggerauthentications/status
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
{{- end }}
- apiGroups:
- metrics.k8s.io
resources:
- pods
verbs:
- get
- list
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-keda
subjects:
- kind: ServiceAccount
name: fission-keda
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-keda
apiGroup: rbac.authorization.k8s.io
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "keda") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "keda") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "keda") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "keda") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "keda") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "keda") $) }}
{{- end }}
{{- end }}
@@ -44,4 +44,8 @@ spec:
terminationMessagePolicy: {{ .Values.terminationMessagePolicy }} terminationMessagePolicy: {{ .Values.terminationMessagePolicy }}
{{- end }} {{- end }}
serviceAccountName: fission-preupgrade serviceAccountName: fission-preupgrade
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }} {{- end }}
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "preupgrade") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "preupgrade") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "preupgrade") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "preupgrade") $) }}
{{- end }} {{- end }}
@@ -1,60 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-router
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-router
subjects:
- kind: ServiceAccount
name: fission-router
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-router
apiGroup: rbac.authorization.k8s.io
@@ -12,7 +12,7 @@ metadata:
application: fission-router application: fission-router
spec: spec:
{{- if not .Values.router.deployAsDaemonSet }} {{- if not .Values.router.deployAsDaemonSet }}
replicas: 1 replicas: {{ .Values.router.replicas | default 1 }}
{{- end }} {{- end }}
selector: selector:
matchLabels: matchLabels:
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "router") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "router") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "router") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "router") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "router") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "router") $) }}
{{- end }}
{{- end }}
@@ -6,7 +6,7 @@ metadata:
labels: labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
annotations: annotations:
"helm.sh/hook": pre-install "helm.sh/hook": pre-install,pre-upgrade
data: data:
username: {{ .Values.authentication.authUsername | b64enc | quote }} username: {{ .Values.authentication.authUsername | b64enc | quote }}
password: {{ randAlphaNum 20 | b64enc | quote }} password: {{ randAlphaNum 20 | b64enc | quote }}
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "storagesvc") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "storagesvc") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "storagesvc") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "storagesvc") $) }}
{{- end }} {{- end }}
@@ -1,48 +0,0 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ .Release.Name }}-timer
rules:
- apiGroups:
- ""
resources:
- configmaps
- pods
- secrets
- services
- serviceaccounts
- replicationcontrollers
- events
verbs:
- create
- delete
- get
- list
- watch
- patch
- apiGroups:
- rbac.authorization.k8s.io
resources:
- rolebindings
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- rbac.authorization.k8s.io
resources:
- clusterroles
verbs:
- bind
- apiGroups:
- apiextensions.k8s.io
resources:
- customresourcedefinitions
verbs:
- get
- list
- watch
@@ -1,12 +0,0 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ .Release.Name }}-timer
subjects:
- kind: ServiceAccount
name: fission-timer
namespace: {{ .Release.Namespace }}
roleRef:
kind: ClusterRole
name: {{ .Release.Name }}-timer
apiGroup: rbac.authorization.k8s.io
@@ -1,6 +1,6 @@
{{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "timer") .) }} {{- include "fission-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "timer") .) }}
{{- if not .Values.singleDefaultNamespace }} {{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }} {{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "timer") $) }} {{ include "fission-role-generator" (merge (dict "namespace" $namespace "component" "timer") $) }}
{{- end }} {{- end }}
@@ -0,0 +1,7 @@
{{- include "kubernetes-role-generator" (merge (dict "namespace" .Values.defaultNamespace "component" "timer") .) }}
{{- if gt (len .Values.additionalFissionNamespaces) 0 }}
{{- range $namespace := $.Values.additionalFissionNamespaces }}
{{ include "kubernetes-role-generator" (merge (dict "namespace" $namespace "component" "timer") $) }}
{{- end }}
{{- end }}
+31 -59
View File
@@ -1,7 +1,7 @@
## Fission chart configuration ## Fission chart configuration
## ##
## serviceType to consider while creating Fission Controller service. ## serviceType to consider while creating Fission webhook service.
## For minikube/kind, set this to NodePort, elsewhere use LoadBalancer or ClusterIP. ## For minikube/kind, set this to NodePort, elsewhere use LoadBalancer or ClusterIP.
## ##
serviceType: ClusterIP serviceType: ClusterIP
@@ -14,7 +14,7 @@ routerServiceType: LoadBalancer
## repository represents base repository for images used in the chart. ## repository represents base repository for images used in the chart.
## Keep it empty for using existing local image ## Keep it empty for using existing local image
## ##
repository: index.docker.io repository: ghcr.io
## image represents the base image fission-bundle used by multiple Fission components. ## image represents the base image fission-bundle used by multiple Fission components.
## We alter arguments to the image to run a particular component. ## We alter arguments to the image to run a particular component.
@@ -25,7 +25,7 @@ image: fission/fission-bundle
## It is also used by the chart to identify version of the few more images apart from fission-bundle. ## 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. ## Keep it empty for using latest tag.
## ##
imageTag: v1.18.0-rc1 imageTag: v1.20.0-rc1
## pullPolicy represents the pull policy to use for images in the chart. ## pullPolicy represents the pull policy to use for images in the chart.
## ##
@@ -53,19 +53,13 @@ terminationMessagePath: /dev/termination-log
## ##
terminationMessagePolicy: File terminationMessagePolicy: File
## controllerPort represents the port at which the Fission controller service should be exposed.
##
controllerPort: 31313
## routerPort represents the port at which the Fission Router service should be exposed. ## routerPort represents the port at which the Fission Router service should be exposed.
## ##
routerPort: 31314 routerPort: 31314
## defaultNamespace represents the namespace in which Fission custom resources will be created by the Fission user. ## defaultNamespace represents the namespace in which Fission custom resources will be created by the Fission user.
## This is different from the release namespace. ## This is different from the release namespace.
## Please consider setting `singleDefaultNamespace` and `additionalFissionNamespaces` if you want ## Please consider setting `additionalFissionNamespaces` if you want more than one namespace to be used for Fission custom resources.
## more than one namespace to be used for Fission custom resources.
## Fission will watch the defaultNamespace only if `singleDefaultNamespace` is true.
## ##
defaultNamespace: default defaultNamespace: default
@@ -81,12 +75,7 @@ builderNamespace: ""
## ##
functionNamespace: "" functionNamespace: ""
## If true, fission will only watch for fission custom resources created in the `defaultNamespace` above.
##
singleDefaultNamespace: true
## Fission will watch the following namespaces along with the `defaultNamespace` for fission custom resources. ## Fission will watch the following namespaces along with the `defaultNamespace` for fission custom resources.
## Only works if `singleDefaultNamespace` is false.
## additionalFissionNamespaces: ## additionalFissionNamespaces:
## - namespace1 ## - namespace1
## - namespace2 ## - namespace2
@@ -110,7 +99,7 @@ fetcher:
## image represents the image of the fetcher component. ## image represents the image of the fetcher component.
image: fission/fetcher image: fission/fetcher
## imageTag represents the tag of the image of the fetcher component. ## imageTag represents the tag of the image of the fetcher component.
imageTag: v1.18.0-rc1 imageTag: v1.20.0-rc1
## Fetcher is only for to downloading or uploading archive. ## Fetcher is only for to downloading or uploading archive.
## Normally, you don't need to change the value here, unless necessary. ## Normally, you don't need to change the value here, unless necessary.
@@ -166,7 +155,7 @@ executor:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -193,6 +182,14 @@ executor:
## ##
## objectReaperInterval: 5 ## objectReaperInterval: 5
serviceAccountCheck:
## enables fission to create service account, roles and rolebinding for missing permission for builder and fetcher.
enabled: true
## indicates the time interval in minutes, after that fission will create service account, roles and rolebinding for builder and fetcher.
## interval will be applicable only if enable value is set to true.
## default timing will be 0 minutes. That means check will run only once.
## if you want to run check every 30 minutes then set interval to 30.
interval: 0
## router is responsible for routing function calls to the appropriate function. ## router is responsible for routing function calls to the appropriate function.
## ##
router: router:
@@ -210,6 +207,9 @@ router:
## deployAsDaemonSet decides whether to deploy router as a DaemonSet or a Deployment. ## deployAsDaemonSet decides whether to deploy router as a DaemonSet or a Deployment.
## ##
deployAsDaemonSet: false deployAsDaemonSet: false
## replicas decides how many router pods to deploy. Only used when deployAsDaemonSet is false.
##
replicas: 1
## svcAddressMaxRetries is the max times for router to retry with a specific function service address ## svcAddressMaxRetries is the max times for router to retry with a specific function service address
## ##
svcAddressMaxRetries: 5 svcAddressMaxRetries: 5
@@ -303,7 +303,7 @@ router:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -329,41 +329,13 @@ buildermgr:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
runAsUser: 10001 runAsUser: 10001
runAsGroup: 10001 runAsGroup: 10001
## controller is the component that the client talks to.
## It contains CRUD APIs for functions, triggers, environments, Kubernetes event watches, etc. and proxy APIs to internal 3rd-party services.
##
controller:
enabled: false
## Pod resources as:
## resources:
## limits:
## cpu: <tbd>
## memory: <tbd>
## requests:
## cpu: <tbd>
## memory: <tbd>
##
resources: {}
## Security Context
## It holds pod-level and container level security configuration.
## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext:
enabled: false
## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true
fsGroup: 10001
runAsUser: 10001
runAsGroup: 10001
## webhook is the component that validates API calls. ## webhook is the component that validates API calls.
## It contains validation and mutation for functions, triggers, environments, Kubernetes event watches, etc. ## It contains validation and mutation for functions, triggers, environments, Kubernetes event watches, etc.
## ##
@@ -394,7 +366,7 @@ webhook:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -421,7 +393,7 @@ kubewatcher:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -453,7 +425,7 @@ storagesvc:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -480,7 +452,7 @@ timer:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -530,7 +502,7 @@ kafka:
# version: "0.11.2.0" # version: "0.11.2.0"
# The following components expose Prometheus metrics and have servicemonitors in this chart (disabled by default) # The following components expose Prometheus metrics and have servicemonitors in this chart (disabled by default)
# Controller, router, executor, storage svc # router, executor, storage svc
serviceMonitor: serviceMonitor:
enabled: false enabled: false
##namespace in which you want to deploy servicemonitor ##namespace in which you want to deploy servicemonitor
@@ -684,7 +656,7 @@ preUpgradeChecks:
image: fission/pre-upgrade-checks image: fission/pre-upgrade-checks
## pre-install/pre-upgrade checks image version ## pre-install/pre-upgrade checks image version
## ##
imageTag: v1.18.0-rc1 imageTag: v1.20.0-rc1
## Fission post-install/post-upgrade reporting live in this image ## Fission post-install/post-upgrade reporting live in this image
## ##
@@ -725,7 +697,7 @@ canaryDeployment:
## This is an experimental section, please verify before enabling in production. ## This is an experimental section, please verify before enabling in production.
## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1 ## Ref: https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#security-context-1
securityContext: securityContext:
enabled: false enabled: true
## Mark it false, if you want to stop the non root user validation ## Mark it false, if you want to stop the non root user validation
runAsNonRoot: true runAsNonRoot: true
fsGroup: 10001 fsGroup: 10001
@@ -816,7 +788,7 @@ mqt_keda:
connector_images: connector_images:
kafka: kafka:
image: fission/keda-kafka-http-connector image: fission/keda-kafka-http-connector
tag: v0.11 tag: v0.12
rabbitmq: rabbitmq:
image: fission/keda-rabbitmq-http-connector image: fission/keda-rabbitmq-http-connector
tag: v0.10 tag: v0.10
@@ -825,16 +797,16 @@ mqt_keda:
tag: v0.10 tag: v0.10
aws_sqs: aws_sqs:
image: fission/keda-aws-sqs-http-connector image: fission/keda-aws-sqs-http-connector
tag: v0.10 tag: v0.11
nats_steaming: nats_steaming:
image: fission/keda-nats-streaming-http-connector image: fission/keda-nats-streaming-http-connector
tag: v0.12 tag: v0.13
nats_jetstream: nats_jetstream:
image: fission/keda-nats-jetstream-http-connector image: fission/keda-nats-jetstream-http-connector
tag: v0.2 tag: v0.4
gcp_pubsub: gcp_pubsub:
image: fission/keda-gcp-pubsub-http-connector image: fission/keda-gcp-pubsub-http-connector
tag: v0.5 tag: v0.6
redis: redis:
image: fission/keda-redis-http-connector image: fission/keda-redis-http-connector
tag: v0.3 tag: v0.3
@@ -1,4 +1,4 @@
FROM alpine:3.16 FROM alpine:3.18
RUN apk add --update ca-certificates RUN apk add --update ca-certificates
COPY builder /builder COPY builder /builder
ENTRYPOINT ["/builder"] ENTRYPOINT ["/builder"]
@@ -1,4 +1,4 @@
FROM alpine:3.16 FROM alpine:3.18
RUN apk add --update ca-certificates RUN apk add --update ca-certificates
COPY fetcher / COPY fetcher /
ENTRYPOINT ["/fetcher"] ENTRYPOINT ["/fetcher"]
+3 -2
View File
@@ -28,6 +28,7 @@ import (
"go.opentelemetry.io/otel" "go.opentelemetry.io/otel"
"go.uber.org/zap" "go.uber.org/zap"
"github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/fetcher" "github.com/fission/fission/pkg/fetcher"
"github.com/fission/fission/pkg/utils/httpserver" "github.com/fission/fission/pkg/utils/httpserver"
otelUtils "github.com/fission/fission/pkg/utils/otel" otelUtils "github.com/fission/fission/pkg/utils/otel"
@@ -37,7 +38,7 @@ var (
readyToServe uint32 readyToServe uint32
) )
func Run(ctx context.Context, logger *zap.Logger) { func Run(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger) {
flag.Usage = fetcherUsage flag.Usage = fetcherUsage
specializeOnStart := flag.Bool("specialize-on-startup", false, "Flag to activate specialize process at pod startup") specializeOnStart := flag.Bool("specialize-on-startup", false, "Flag to activate specialize process at pod startup")
specializePayload := flag.String("specialize-request", "", "JSON payload for specialize request") specializePayload := flag.String("specialize-request", "", "JSON payload for specialize request")
@@ -72,7 +73,7 @@ func Run(ctx context.Context, logger *zap.Logger) {
ctx, span := tracer.Start(ctx, "fetcher/Run") ctx, span := tracer.Start(ctx, "fetcher/Run")
defer span.End() defer span.End()
f, err := fetcher.MakeFetcher(logger, dir, *secretDir, *configDir) f, err := fetcher.MakeFetcher(logger, clientGen, dir, *secretDir, *configDir)
if err != nil { if err != nil {
logger.Fatal("error making fetcher", zap.Error(err)) logger.Fatal("error making fetcher", zap.Error(err))
} }
+2 -1
View File
@@ -20,6 +20,7 @@ import (
"sigs.k8s.io/controller-runtime/pkg/manager/signals" "sigs.k8s.io/controller-runtime/pkg/manager/signals"
"github.com/fission/fission/cmd/fetcher/app" "github.com/fission/fission/cmd/fetcher/app"
"github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
"github.com/fission/fission/pkg/utils/profile" "github.com/fission/fission/pkg/utils/profile"
) )
@@ -31,5 +32,5 @@ func main() {
ctx := signals.SetupSignalHandler() ctx := signals.SetupSignalHandler()
profile.ProfileIfEnabled(ctx, logger) profile.ProfileIfEnabled(ctx, logger)
app.Run(ctx, logger) app.Run(ctx, crd.NewClientGenerator(), logger)
} }
@@ -1,4 +1,4 @@
FROM alpine:3.16 FROM alpine:3.18
RUN apk add --update ca-certificates RUN apk add --update ca-certificates
COPY fission-bundle / COPY fission-bundle /
ENTRYPOINT ["/fission-bundle"] ENTRYPOINT ["/fission-bundle"]
+43 -54
View File
@@ -30,7 +30,7 @@ import (
"github.com/fission/fission/cmd/fission-bundle/mqtrigger" "github.com/fission/fission/cmd/fission-bundle/mqtrigger"
"github.com/fission/fission/pkg/buildermgr" "github.com/fission/fission/pkg/buildermgr"
"github.com/fission/fission/pkg/canaryconfigmgr" "github.com/fission/fission/pkg/canaryconfigmgr"
"github.com/fission/fission/pkg/controller" "github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/executor" "github.com/fission/fission/pkg/executor"
"github.com/fission/fission/pkg/info" "github.com/fission/fission/pkg/info"
"github.com/fission/fission/pkg/kubewatcher" "github.com/fission/fission/pkg/kubewatcher"
@@ -50,49 +50,45 @@ func runWebhook(ctx context.Context, logger *zap.Logger, port int) error {
return webhook.Start(ctx, logger, port) return webhook.Start(ctx, logger, port)
} }
func runController(ctx context.Context, logger *zap.Logger, port int) { func runCanaryConfigServer(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger) error {
controller.Start(ctx, logger, port, false) return canaryconfigmgr.StartCanaryServer(ctx, clientGen, logger, false)
} }
func runCanaryConfigServer(ctx context.Context, logger *zap.Logger) error { func runRouter(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, port int, executorUrl string) error {
return canaryconfigmgr.StartCanaryServer(ctx, logger, false) return router.Start(ctx, clientGen, logger, port, executorUrl)
} }
func runRouter(ctx context.Context, logger *zap.Logger, port int, executorUrl string) { func runExecutor(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, port int) error {
router.Start(ctx, logger, port, executorUrl) return executor.StartExecutor(ctx, clientGen, logger, port)
} }
func runExecutor(ctx context.Context, logger *zap.Logger, port int) error { func runKubeWatcher(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, routerUrl string) error {
return executor.StartExecutor(ctx, logger, port) return kubewatcher.Start(ctx, clientGen, logger, routerUrl)
} }
func runKubeWatcher(ctx context.Context, logger *zap.Logger, routerUrl string) error { func runTimer(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, routerUrl string) error {
return kubewatcher.Start(ctx, logger, routerUrl) return timer.Start(ctx, clientGen, logger, routerUrl)
} }
func runTimer(ctx context.Context, logger *zap.Logger, routerUrl string) error { func runMessageQueueMgr(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, routerUrl string) error {
return timer.Start(ctx, logger, routerUrl) return mqtrigger.Start(ctx, clientGen, logger, routerUrl)
}
func runMessageQueueMgr(ctx context.Context, logger *zap.Logger, routerUrl string) error {
return mqtrigger.Start(ctx, logger, routerUrl)
} }
// KEDA based MessageQueue Trigger Manager // KEDA based MessageQueue Trigger Manager
func runMQManager(ctx context.Context, logger *zap.Logger, routerURL string) error { func runMQManager(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, routerURL string) error {
return mqt.StartScalerManager(ctx, logger, routerURL) return mqt.StartScalerManager(ctx, clientGen, logger, routerURL)
} }
func runStorageSvc(ctx context.Context, logger *zap.Logger, port int, storage storagesvc.Storage) error { func runStorageSvc(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, port int, storage storagesvc.Storage) error {
return storagesvc.Start(ctx, logger, storage, port) return storagesvc.Start(ctx, clientGen, logger, storage, port)
} }
func runBuilderMgr(ctx context.Context, logger *zap.Logger, storageSvcUrl string) error { func runBuilderMgr(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, storageSvcUrl string) error {
return buildermgr.Start(ctx, logger, storageSvcUrl) return buildermgr.Start(ctx, clientGen, logger, storageSvcUrl)
} }
func runLogger(ctx context.Context, logger *zap.Logger) { func runLogger(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger) error {
functionLogger.Start(ctx, logger) return functionLogger.Start(ctx, clientGen, logger)
} }
func getPort(logger *zap.Logger, portArg interface{}) int { func getPort(logger *zap.Logger, portArg interface{}) int {
@@ -115,9 +111,7 @@ func getStringArgWithDefault(arg interface{}, defaultValue string) string {
func getServiceName(arguments map[string]interface{}) string { func getServiceName(arguments map[string]interface{}) string {
serviceName := "Fission-Unknown" serviceName := "Fission-Unknown"
if arguments["--controllerPort"] != nil { if arguments["--routerPort"] != nil {
serviceName = "Fission-Controller"
} else if arguments["--routerPort"] != nil {
serviceName = "Fission-Router" serviceName = "Fission-Router"
} else if arguments["--executorPort"] != nil { } else if arguments["--executorPort"] != nil {
serviceName = "Fission-Executor" serviceName = "Fission-Executor"
@@ -155,18 +149,17 @@ func main() {
// TODO: fix the lint error. Error checking here is causing all components to crash with error "logtostderr not found" // TODO: fix the lint error. Error checking here is causing all components to crash with error "logtostderr not found"
flag.Set("logtostderr", "true") //nolint: errcheck flag.Set("logtostderr", "true") //nolint: errcheck
usage := `fission-bundle: Package of all fission microservices: controller, router, executor. usage := `fission-bundle: Package of all fission microservices: router, executor.
Use it to start one or more of the fission servers: Use it to start one or more of the fission servers:
Controller is a stateless API frontend for fission resources.
Pool manager maintains a pool of generalized function containers, and Pool manager maintains a pool of generalized function containers, and
specializes them on-demand. Executor must be run from a pod in a specializes them on-demand. Executor must be run from a pod in a
Kubernetes cluster. Kubernetes cluster.
Router implements HTTP triggers: it routes to running instances, Router implements HTTP triggers: it routes to running instances,
working with the controller and executor. working with the executor.
Kubewatcher implements Kubernetes Watch triggers: it watches Kubewatcher implements Kubernetes Watch triggers: it watches
Kubernetes resources and invokes functions described in the Kubernetes resources and invokes functions described in the
@@ -177,7 +170,6 @@ Use it to start one or more of the fission servers:
backends. backends.
Usage: Usage:
fission-bundle --controllerPort=<port>
fission-bundle --canaryConfig fission-bundle --canaryConfig
fission-bundle --routerPort=<port> [--executorUrl=<url>] fission-bundle --routerPort=<port> [--executorUrl=<url>]
fission-bundle --executorPort=<port> [--namespace=<namespace>] [--fission-namespace=<namespace>] fission-bundle --executorPort=<port> [--namespace=<namespace>] [--fission-namespace=<namespace>]
@@ -191,7 +183,6 @@ Usage:
fission-bundle --logger fission-bundle --logger
fission-bundle --version fission-bundle --version
Options: Options:
--controllerPort=<port> Port that the controller should listen on.
--canaryConfig Start canary config server. --canaryConfig Start canary config server.
--webhookPort=<port> Port that the webhook should listen on. --webhookPort=<port> Port that the webhook should listen on.
--routerPort=<port> Port that the router should listen on. --routerPort=<port> Port that the router should listen on.
@@ -216,7 +207,7 @@ Options:
ctx := signals.SetupSignalHandler() ctx := signals.SetupSignalHandler()
profile.ProfileIfEnabled(ctx, logger) profile.ProfileIfEnabled(ctx, logger)
version := fmt.Sprintf("Fission Bundle Version: %v", info.BuildInfo().String()) version := fmt.Sprintf("Fission Bundle Version: %s", info.BuildInfo().String())
arguments, err := docopt.ParseArgs(usage, nil, version) arguments, err := docopt.ParseArgs(usage, nil, version)
if err != nil { if err != nil {
logger.Error("failed to parse arguments", zap.Error(err)) logger.Error("failed to parse arguments", zap.Error(err))
@@ -235,6 +226,7 @@ Options:
executorUrl := getStringArgWithDefault(arguments["--executorUrl"], "http://executor.fission") executorUrl := getStringArgWithDefault(arguments["--executorUrl"], "http://executor.fission")
routerUrl := getStringArgWithDefault(arguments["--routerUrl"], "http://router.fission") routerUrl := getStringArgWithDefault(arguments["--routerUrl"], "http://router.fission")
storageSvcUrl := getStringArgWithDefault(arguments["--storageSvcUrl"], "http://storagesvc.fission") storageSvcUrl := getStringArgWithDefault(arguments["--storageSvcUrl"], "http://storagesvc.fission")
clientGen := crd.NewClientGenerator()
if arguments["--webhookPort"] != nil { if arguments["--webhookPort"] != nil {
port := getPort(logger, arguments["--webhookPort"]) port := getPort(logger, arguments["--webhookPort"])
@@ -243,15 +235,8 @@ Options:
return return
} }
if arguments["--controllerPort"] != nil {
port := getPort(logger, arguments["--controllerPort"])
runController(ctx, logger, port)
logger.Error("controller exited")
return
}
if arguments["--canaryConfig"] == true { if arguments["--canaryConfig"] == true {
err := runCanaryConfigServer(ctx, logger) err := runCanaryConfigServer(ctx, clientGen, logger)
if err != nil { if err != nil {
logger.Error("canary config server exited with error: ", zap.Error(err)) logger.Error("canary config server exited with error: ", zap.Error(err))
return return
@@ -260,14 +245,16 @@ Options:
if arguments["--routerPort"] != nil { if arguments["--routerPort"] != nil {
port := getPort(logger, arguments["--routerPort"]) port := getPort(logger, arguments["--routerPort"])
runRouter(ctx, logger, port, executorUrl) err = runRouter(ctx, clientGen, logger, port, executorUrl)
logger.Error("router exited") if err != nil {
return logger.Error("router exited", zap.Error(err))
return
}
} }
if arguments["--executorPort"] != nil { if arguments["--executorPort"] != nil {
port := getPort(logger, arguments["--executorPort"]) port := getPort(logger, arguments["--executorPort"])
err = runExecutor(ctx, logger, port) err = runExecutor(ctx, clientGen, logger, port)
if err != nil { if err != nil {
logger.Error("executor exited", zap.Error(err)) logger.Error("executor exited", zap.Error(err))
return return
@@ -275,7 +262,7 @@ Options:
} }
if arguments["--kubewatcher"] == true { if arguments["--kubewatcher"] == true {
err = runKubeWatcher(ctx, logger, routerUrl) err = runKubeWatcher(ctx, clientGen, logger, routerUrl)
if err != nil { if err != nil {
logger.Error("kubewatcher exited", zap.Error(err)) logger.Error("kubewatcher exited", zap.Error(err))
return return
@@ -283,7 +270,7 @@ Options:
} }
if arguments["--timer"] == true { if arguments["--timer"] == true {
err = runTimer(ctx, logger, routerUrl) err = runTimer(ctx, clientGen, logger, routerUrl)
if err != nil { if err != nil {
logger.Error("timer exited", zap.Error(err)) logger.Error("timer exited", zap.Error(err))
return return
@@ -291,7 +278,7 @@ Options:
} }
if arguments["--mqt"] == true { if arguments["--mqt"] == true {
err = runMessageQueueMgr(ctx, logger, routerUrl) err = runMessageQueueMgr(ctx, clientGen, logger, routerUrl)
if err != nil { if err != nil {
logger.Error("message queue manager exited", zap.Error(err)) logger.Error("message queue manager exited", zap.Error(err))
return return
@@ -299,7 +286,7 @@ Options:
} }
if arguments["--mqt_keda"] == true { if arguments["--mqt_keda"] == true {
err = runMQManager(ctx, logger, routerUrl) err = runMQManager(ctx, clientGen, logger, routerUrl)
if err != nil { if err != nil {
logger.Error("mqt scaler manager exited", zap.Error(err)) logger.Error("mqt scaler manager exited", zap.Error(err))
return return
@@ -307,7 +294,7 @@ Options:
} }
if arguments["--builderMgr"] == true { if arguments["--builderMgr"] == true {
err = runBuilderMgr(ctx, logger, storageSvcUrl) err = runBuilderMgr(ctx, clientGen, logger, storageSvcUrl)
if err != nil { if err != nil {
logger.Error("builder manager exited", zap.Error(err)) logger.Error("builder manager exited", zap.Error(err))
return return
@@ -315,8 +302,10 @@ Options:
} }
if arguments["--logger"] == true { if arguments["--logger"] == true {
runLogger(ctx, logger) err = runLogger(ctx, clientGen, logger)
logger.Error("logger exited") if err != nil {
logger.Error("logger exited", zap.Error(err))
}
return return
} }
@@ -330,7 +319,7 @@ Options:
} else if arguments["--storageType"] == string(storagesvc.StorageTypeLocal) { } else if arguments["--storageType"] == string(storagesvc.StorageTypeLocal) {
storage = storagesvc.NewLocalStorage("/fission") storage = storagesvc.NewLocalStorage("/fission")
} }
err := runStorageSvc(ctx, logger, port, storage) err := runStorageSvc(ctx, clientGen, logger, port, storage)
if err != nil { if err != nil {
logger.Error("storage service exited", zap.Error(err)) logger.Error("storage service exited", zap.Error(err))
return return
+7 -5
View File
@@ -34,11 +34,10 @@ import (
_ "github.com/fission/fission/pkg/mqtrigger/messageQueue/kafka" _ "github.com/fission/fission/pkg/mqtrigger/messageQueue/kafka"
) )
func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error { func Start(ctx context.Context, clientGen crd.ClientGeneratorInterface, logger *zap.Logger, routerUrl string) error {
fissionClient, _, _, _, err := crd.MakeFissionClient() fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return errors.Wrap(err, "failed to get fission or kubernetes client") return errors.Wrap(err, "failed to get fission client")
} }
err = crd.WaitForCRDs(ctx, logger, fissionClient) err = crd.WaitForCRDs(ctx, logger, fissionClient)
@@ -74,7 +73,10 @@ func Start(ctx context.Context, logger *zap.Logger, routerUrl string) error {
logger.Fatal("failed to connect to remote message queue server", zap.Error(err)) logger.Fatal("failed to connect to remote message queue server", zap.Error(err))
} }
mqtMgr := mqtrigger.MakeMessageQueueTriggerManager(logger, fissionClient, mqType, mq) mqtMgr := mqtrigger.MakeMessageQueueTriggerManager(logger, fissionClient, mqType, mq)
mqtMgr.Run(ctx) err = mqtMgr.Run(ctx)
if err != nil {
return err
}
return nil return nil
} }
+2 -4
View File
@@ -49,7 +49,7 @@ const (
` `
) )
func App() *cobra.Command { func App(clientOptions cmd.ClientOptions) *cobra.Command {
cobra.EnableCommandSorting = false cobra.EnableCommandSorting = false
rootCmd := &cobra.Command{ rootCmd := &cobra.Command{
@@ -59,9 +59,7 @@ func App() *cobra.Command {
PersistentPreRunE: wrapper.Wrapper( PersistentPreRunE: wrapper.Wrapper(
func(input cli.Input) error { func(input cli.Input) error {
console.Verbosity = input.Int(flagkey.Verbosity) console.Verbosity = input.Int(flagkey.Verbosity)
clientOptions := cmd.ClientOptions{ clientOptions.KubeContext = input.String(flagkey.KubeContext)
KubeContext: input.String(flagkey.KubeContext),
}
// TODO: use fake rest client for offline spec generation // TODO: use fake rest client for offline spec generation
// if input.IsSet(flagkey.ClientOnly) || input.IsSet(flagkey.PreCheckOnly) { // if input.IsSet(flagkey.ClientOnly) || input.IsSet(flagkey.PreCheckOnly) {
// } // }
+2 -1
View File
@@ -20,11 +20,12 @@ import (
"os" "os"
"github.com/fission/fission/cmd/fission-cli/app" "github.com/fission/fission/cmd/fission-cli/app"
"github.com/fission/fission/pkg/fission-cli/cmd"
"github.com/fission/fission/pkg/fission-cli/console" "github.com/fission/fission/pkg/fission-cli/console"
) )
func main() { func main() {
cmd := app.App() cmd := app.App(cmd.ClientOptions{})
cmd.SilenceErrors = true // use our own error message printer cmd.SilenceErrors = true // use our own error message printer
err := cmd.Execute() err := cmd.Execute()
@@ -1,4 +1,4 @@
FROM alpine:3.16 FROM alpine:3.18
RUN apk add --update ca-certificates RUN apk add --update ca-certificates
COPY pre-upgrade-checks / COPY pre-upgrade-checks /
ENTRYPOINT ["/pre-upgrade-checks"] ENTRYPOINT ["/pre-upgrade-checks"]
+20 -11
View File
@@ -18,11 +18,10 @@ package main
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"strings" "strings"
multierror "github.com/hashicorp/go-multierror"
"github.com/pkg/errors"
"go.uber.org/zap" "go.uber.org/zap"
v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
@@ -51,10 +50,19 @@ const (
MqtCRD = "messagequeuetriggers.fission.io" MqtCRD = "messagequeuetriggers.fission.io"
) )
func makePreUpgradeTaskClient(logger *zap.Logger) (*PreUpgradeTaskClient, error) { func makePreUpgradeTaskClient(clientGen crd.ClientGeneratorInterface, logger *zap.Logger) (*PreUpgradeTaskClient, error) {
fissionClient, k8sClient, apiExtClient, _, err := crd.MakeFissionClient() var err error
fissionClient, err := clientGen.GetFissionClient()
if err != nil { if err != nil {
return nil, errors.Wrap(err, "error making fission client") return nil, fmt.Errorf("failed to get fission client: %w", err)
}
k8sClient, err := clientGen.GetKubernetesClient()
if err != nil {
return nil, fmt.Errorf("failed to get kubernetes client: %w", err)
}
apiExtClient, err := clientGen.GetApiExtensionsClient()
if err != nil {
return nil, fmt.Errorf("failed to get apiextensions client: %w", err)
} }
return &PreUpgradeTaskClient{ return &PreUpgradeTaskClient{
@@ -121,9 +129,9 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences(ctx context.Con
var err error var err error
var fList *fv1.FunctionList var fList *fv1.FunctionList
errs := &multierror.Error{} var errs error
for _, namespace := range utils.GetNamespaces() { for _, namespace := range utils.DefaultNSResolver().FissionResourceNS {
for i := 0; i < maxRetries; i++ { for i := 0; i < maxRetries; i++ {
fList, err = client.fissionClient.CoreV1().Functions(namespace).List(ctx, metav1.ListOptions{}) fList, err = client.fissionClient.CoreV1().Functions(namespace).List(ctx, metav1.ListOptions{})
if err == nil { if err == nil {
@@ -142,24 +150,25 @@ func (client *PreUpgradeTaskClient) VerifyFunctionSpecReferences(ctx context.Con
secrets := fn.Spec.Secrets secrets := fn.Spec.Secrets
for _, secret := range secrets { for _, secret := range secrets {
if secret.Namespace != "" && secret.Namespace != fn.ObjectMeta.Namespace { if secret.Namespace != "" && secret.Namespace != fn.ObjectMeta.Namespace {
errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a secret : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, secret.Name, secret.Namespace)) errs = errors.Join(errs, fmt.Errorf("function : %s.%s cannot reference a secret : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, secret.Name, secret.Namespace))
} }
} }
configmaps := fn.Spec.ConfigMaps configmaps := fn.Spec.ConfigMaps
for _, configmap := range configmaps { for _, configmap := range configmaps {
if configmap.Namespace != "" && configmap.Namespace != fn.ObjectMeta.Namespace { if configmap.Namespace != "" && configmap.Namespace != fn.ObjectMeta.Namespace {
errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a configmap : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, configmap.Name, configmap.Namespace)) errs = errors.Join(errs, fmt.Errorf("function : %s.%s cannot reference a configmap : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, configmap.Name, configmap.Namespace))
} }
} }
if fn.Spec.Package.PackageRef.Namespace != "" && fn.Spec.Package.PackageRef.Namespace != fn.ObjectMeta.Namespace { if fn.Spec.Package.PackageRef.Namespace != "" && fn.Spec.Package.PackageRef.Namespace != fn.ObjectMeta.Namespace {
errs = multierror.Append(errs, fmt.Errorf("function : %s.%s cannot reference a package : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, fn.Spec.Package.PackageRef.Name, fn.Spec.Package.PackageRef.Namespace)) errs = errors.Join(errs, fmt.Errorf("function : %s.%s cannot reference a package : %s in namespace : %s", fn.ObjectMeta.Name, fn.ObjectMeta.Namespace, fn.Spec.Package.PackageRef.Name, fn.Spec.Package.PackageRef.Namespace))
} }
} }
} }
if errs.ErrorOrNil() != nil { if errs != nil {
client.logger.Fatal("installation failed", client.logger.Fatal("installation failed",
zap.Error(errs), zap.Error(errs),
zap.String("summary", "a function cannot reference secrets, configmaps and packages outside it's own namespace")) zap.String("summary", "a function cannot reference secrets, configmaps and packages outside it's own namespace"))
+2 -1
View File
@@ -20,6 +20,7 @@ import (
"go.uber.org/zap" "go.uber.org/zap"
"sigs.k8s.io/controller-runtime/pkg/manager/signals" "sigs.k8s.io/controller-runtime/pkg/manager/signals"
"github.com/fission/fission/pkg/crd"
"github.com/fission/fission/pkg/utils/loggerfactory" "github.com/fission/fission/pkg/utils/loggerfactory"
) )
@@ -27,7 +28,7 @@ func main() {
logger := loggerfactory.GetLogger() logger := loggerfactory.GetLogger()
defer logger.Sync() defer logger.Sync()
crdBackedClient, err := makePreUpgradeTaskClient(logger) crdBackedClient, err := makePreUpgradeTaskClient(crd.NewClientGenerator(), logger)
if err != nil { if err != nil {
logger.Fatal("error creating a crd client, please retry helm upgrade", logger.Fatal("error creating a crd client, please retry helm upgrade",
zap.Error(err)) zap.Error(err))
@@ -1,4 +1,4 @@
FROM alpine:3.16 FROM alpine:3.18
RUN apk add --update ca-certificates RUN apk add --update ca-certificates
COPY reporter / COPY reporter /
ENTRYPOINT ["/reporter"] ENTRYPOINT ["/reporter"]
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: canaryconfigs.fission.io name: canaryconfigs.fission.io
spec: spec:
group: fission.io group: fission.io
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: httptriggers.fission.io name: httptriggers.fission.io
spec: spec:
group: fission.io group: fission.io
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: kuberneteswatchtriggers.fission.io name: kuberneteswatchtriggers.fission.io
spec: spec:
group: fission.io group: fission.io
+441 -119
View File
@@ -3,8 +3,7 @@ apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition kind: CustomResourceDefinition
metadata: metadata:
annotations: annotations:
controller-gen.kubebuilder.io/version: v0.10.0 controller-gen.kubebuilder.io/version: v0.13.0
creationTimestamp: null
name: messagequeuetriggers.fission.io name: messagequeuetriggers.fission.io
spec: spec:
group: fission.io group: fission.io
@@ -1250,7 +1249,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1349,7 +1351,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1431,8 +1436,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -1464,7 +1468,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1639,8 +1645,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -1672,7 +1677,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -1762,10 +1769,54 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: 'Compute Resources required by this container. description: 'Compute Resources required by this container.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -1787,9 +1838,30 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: 'RestartPolicy defines the restart behavior
of individual containers in a pod. This field may only
be set for init containers, and the only allowed value
is "Always". For non-init containers or when this field
is not specified, the restart behavior is defined by the
Pod''s restart policy and the container type. Setting
the RestartPolicy as "Always" for the init container will
have the following effect: this init container will be
continually restarted on exit until all regular containers
have terminated. Once all regular containers have completed,
all init containers with restartPolicy "Always" will be
shut down. This lifecycle differs from normal init containers
and is often referred to as a "sidecar" container. Although
this init container still starts in the init container
sequence, it does not wait for the container to complete
before proceeding to the next init container. Instead,
the next init container starts immediately after this
init container is started, or after any startupProbe has
successfully completed.'
type: string
securityContext: securityContext:
description: 'SecurityContext defines the security options description: 'SecurityContext defines the security options
the container should be run with. If set, the fields of the container should be run with. If set, the fields of
@@ -1914,7 +1986,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -1947,15 +2020,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -2004,8 +2073,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2037,7 +2105,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2557,7 +2627,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2656,7 +2729,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2736,8 +2812,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2769,7 +2844,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -2935,8 +3012,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -2968,7 +3044,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3058,11 +3136,55 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: Resources are not allowed for ephemeral containers. description: Resources are not allowed for ephemeral containers.
Ephemeral containers use spare resources already allocated Ephemeral containers use spare resources already allocated
to the pod. to the pod.
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -3084,9 +3206,15 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: Restart policy for the container to manage
the restart behavior of each container within a pod. This
may only be set for init containers. You cannot set this
field on ephemeral containers.
type: string
securityContext: securityContext:
description: 'Optional: SecurityContext defines the security description: 'Optional: SecurityContext defines the security
options the ephemeral container should be run with. If options the ephemeral container should be run with. If
@@ -3211,7 +3339,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -3244,15 +3373,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -3293,8 +3418,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -3326,7 +3450,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3877,7 +4003,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -3976,7 +4105,10 @@ spec:
header to be used in HTTP probes header to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This
will be canonicalized upon output, so
case-variant names will be understood
as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4058,8 +4190,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4091,7 +4222,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4266,8 +4399,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4299,7 +4431,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4389,10 +4523,54 @@ spec:
format: int32 format: int32
type: integer type: integer
type: object type: object
resizePolicy:
description: Resources resize policy for the container.
items:
description: ContainerResizePolicy represents resource
resize policy for the container.
properties:
resourceName:
description: 'Name of the resource to which this resource
resize policy applies. Supported values: cpu, memory.'
type: string
restartPolicy:
description: Restart policy to apply when specified
resource is resized. If not specified, it defaults
to NotRequired.
type: string
required:
- resourceName
- restartPolicy
type: object
type: array
x-kubernetes-list-type: atomic
resources: resources:
description: 'Compute Resources required by this container. description: 'Compute Resources required by this container.
Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
properties: properties:
claims:
description: "Claims lists the names of resources, defined
in spec.resourceClaims, that are used by this container.
\n This is an alpha field and requires enabling the
DynamicResourceAllocation feature gate. \n This field
is immutable. It can only be set for containers."
items:
description: ResourceClaim references one entry in
PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name of one entry
in pod.spec.resourceClaims of the Pod where
this field is used. It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -4414,9 +4592,30 @@ spec:
of compute resources required. If Requests is omitted of compute resources required. If Requests is omitted
for a container, it defaults to Limits if that is for a container, it defaults to Limits if that is
explicitly specified, otherwise to an implementation-defined explicitly specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
restartPolicy:
description: 'RestartPolicy defines the restart behavior
of individual containers in a pod. This field may only
be set for init containers, and the only allowed value
is "Always". For non-init containers or when this field
is not specified, the restart behavior is defined by the
Pod''s restart policy and the container type. Setting
the RestartPolicy as "Always" for the init container will
have the following effect: this init container will be
continually restarted on exit until all regular containers
have terminated. Once all regular containers have completed,
all init containers with restartPolicy "Always" will be
shut down. This lifecycle differs from normal init containers
and is often referred to as a "sidecar" container. Although
this init container still starts in the init container
sequence, it does not wait for the container to complete
before proceeding to the next init container. Instead,
the next init container starts immediately after this
init container is started, or after any startupProbe has
successfully completed.'
type: string
securityContext: securityContext:
description: 'SecurityContext defines the security options description: 'SecurityContext defines the security options
the container should be run with. If set, the fields of the container should be run with. If set, the fields of
@@ -4541,7 +4740,8 @@ spec:
The profile must be preconfigured on the node The profile must be preconfigured on the node
to work. Must be a descending path, relative to to work. Must be a descending path, relative to
the kubelet's configured seccomp profile location. the kubelet's configured seccomp profile location.
Must only be set if type is "Localhost". Must be set if type is "Localhost". Must NOT be
set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp description: "type indicates which kind of seccomp
@@ -4574,15 +4774,11 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container description: HostProcess determines if a container
should be run as a 'Host Process' container. This should be run as a 'Host Process' container. All
field is alpha-level and will only be honored of a Pod's containers must have the same effective
by components that enable the WindowsHostProcessContainers HostProcess value (it is not allowed to have a
feature flag. Setting this field without the feature mix of HostProcess containers and non-HostProcess
flag will result in errors when validating the containers). In addition, if HostProcess is true
Pod. All of a Pod's containers must have the same
effective HostProcess value (it is not allowed
to have a mix of HostProcess containers and non-HostProcess
containers). In addition, if HostProcess is true
then HostNetwork must also be set to true. then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
@@ -4631,8 +4827,7 @@ spec:
type: integer type: integer
grpc: grpc:
description: GRPC specifies an action involving a GRPC description: GRPC specifies an action involving a GRPC
port. This is a beta field and requires enabling GRPCContainerProbe port.
feature gate.
properties: properties:
port: port:
description: Port number of the gRPC service. Number description: Port number of the gRPC service. Number
@@ -4664,7 +4859,9 @@ spec:
to be used in HTTP probes to be used in HTTP probes
properties: properties:
name: name:
description: The header field name description: The header field name. This will
be canonicalized upon output, so case-variant
names will be understood as the same header.
type: string type: string
value: value:
description: The header field value description: The header field value
@@ -4966,9 +5163,56 @@ spec:
- conditionType - conditionType
type: object type: object
type: array type: array
resourceClaims:
description: "ResourceClaims defines which ResourceClaims must
be allocated and reserved before the Pod is allowed to start.
The resources will be made available to those containers which
consume them by name. \n This is an alpha field and requires
enabling the DynamicResourceAllocation feature gate. \n This
field is immutable."
items:
description: PodResourceClaim references exactly one ResourceClaim
through a ClaimSource. It adds a name to it that uniquely
identifies the ResourceClaim inside the Pod. Containers that
need access to the ResourceClaim reference it with this name.
properties:
name:
description: Name uniquely identifies this resource claim
inside the pod. This must be a DNS_LABEL.
type: string
source:
description: Source describes where to find the ResourceClaim.
properties:
resourceClaimName:
description: ResourceClaimName is the name of a ResourceClaim
object in the same namespace as this pod.
type: string
resourceClaimTemplateName:
description: "ResourceClaimTemplateName is the name
of a ResourceClaimTemplate object in the same namespace
as this pod. \n The template will be used to create
a new ResourceClaim, which will be bound to this pod.
When this pod is deleted, the ResourceClaim will also
be deleted. The pod name and resource name, along
with a generated component, will be used to form a
unique name for the ResourceClaim, which will be recorded
in pod.status.resourceClaimStatuses. \n This field
is immutable and no changes will be made to the corresponding
ResourceClaim by the control plane after creating
the ResourceClaim."
type: string
type: object
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
restartPolicy: restartPolicy:
description: 'Restart policy for all containers within the pod. description: 'Restart policy for all containers within the pod.
One of Always, OnFailure, Never. Default to Always. More info: One of Always, OnFailure, Never. In some contexts, only a subset
of those values may be permitted. Default to Always. More info:
https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy' https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy'
type: string type: string
runtimeClassName: runtimeClassName:
@@ -4984,6 +5228,29 @@ spec:
scheduler. If not specified, the pod will be dispatched by default scheduler. If not specified, the pod will be dispatched by default
scheduler. scheduler.
type: string type: string
schedulingGates:
description: "SchedulingGates is an opaque list of values that
if specified will block scheduling the pod. If schedulingGates
is not empty, the pod will stay in the SchedulingGated state
and the scheduler will not attempt to schedule the pod. \n SchedulingGates
can only be set at pod creation time, and be removed only afterwards.
\n This is a beta feature enabled by the PodSchedulingReadiness
feature gate."
items:
description: PodSchedulingGate is associated to a Pod to guard
its scheduling.
properties:
name:
description: Name of the scheduling gate. Each scheduling
gate must have a unique name field.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
securityContext: securityContext:
description: 'SecurityContext holds pod-level security attributes description: 'SecurityContext holds pod-level security attributes
and common container settings. Optional: Defaults to empty. See and common container settings. Optional: Defaults to empty. See
@@ -5075,7 +5342,8 @@ spec:
in a file on the node should be used. The profile must in a file on the node should be used. The profile must
be preconfigured on the node to work. Must be a descending be preconfigured on the node to work. Must be a descending
path, relative to the kubelet's configured seccomp profile path, relative to the kubelet's configured seccomp profile
location. Must only be set if type is "Localhost". location. Must be set if type is "Localhost". Must NOT
be set for any other type.
type: string type: string
type: type:
description: "type indicates which kind of seccomp profile description: "type indicates which kind of seccomp profile
@@ -5090,9 +5358,13 @@ spec:
supplementalGroups: supplementalGroups:
description: A list of groups applied to the first process description: A list of groups applied to the first process
run in each container, in addition to the container's primary run in each container, in addition to the container's primary
GID. If unspecified, no groups will be added to any container. GID, the fsGroup (if specified), and group memberships defined
Note that this field cannot be set when spec.os.name is in the container image for the uid of the container process.
windows. If unspecified, no additional groups are added to any container.
Note that group memberships defined in the container image
for the uid of the container process are still effective,
even if they are not included in this list. Note that this
field cannot be set when spec.os.name is windows.
items: items:
format: int64 format: int64
type: integer type: integer
@@ -5136,15 +5408,12 @@ spec:
type: string type: string
hostProcess: hostProcess:
description: HostProcess determines if a container should description: HostProcess determines if a container should
be run as a 'Host Process' container. This field is be run as a 'Host Process' container. All of a Pod's
alpha-level and will only be honored by components that containers must have the same effective HostProcess
enable the WindowsHostProcessContainers feature flag. value (it is not allowed to have a mix of HostProcess
Setting this field without the feature flag will result containers and non-HostProcess containers). In addition,
in errors when validating the Pod. All of a Pod's containers if HostProcess is true then HostNetwork must also be
must have the same effective HostProcess value (it is set to true.
not allowed to have a mix of HostProcess containers
and non-HostProcess containers). In addition, if HostProcess
is true then HostNetwork must also be set to true.
type: boolean type: boolean
runAsUserName: runAsUserName:
description: The UserName in Windows to run the entrypoint description: The UserName in Windows to run the entrypoint
@@ -5299,14 +5568,19 @@ spec:
type: object type: object
x-kubernetes-map-type: atomic x-kubernetes-map-type: atomic
matchLabelKeys: matchLabelKeys:
description: MatchLabelKeys is a set of pod label keys to description: "MatchLabelKeys is a set of pod label keys
select the pods over which spreading will be calculated. to select the pods over which spreading will be calculated.
The keys are used to lookup values from the incoming pod The keys are used to lookup values from the incoming pod
labels, those key-value labels are ANDed with labelSelector labels, those key-value labels are ANDed with labelSelector
to select the group of existing pods over which spreading to select the group of existing pods over which spreading
will be calculated for the incoming pod. Keys that don't will be calculated for the incoming pod. The same key
exist in the incoming pod labels will be ignored. A null is forbidden to exist in both MatchLabelKeys and LabelSelector.
or empty list means only match against labelSelector. MatchLabelKeys cannot be set when LabelSelector isn't
set. Keys that don't exist in the incoming pod labels
will be ignored. A null or empty list means only match
against labelSelector. \n This is a beta field and requires
the MatchLabelKeysInPodTopologySpread feature gate to
be enabled (enabled by default)."
items: items:
type: string type: string
type: array type: array
@@ -5366,7 +5640,7 @@ spec:
- Ignore: nodeAffinity/nodeSelector are ignored. All nodes - Ignore: nodeAffinity/nodeSelector are ignored. All nodes
are included in the calculations. \n If this value is are included in the calculations. \n If this value is
nil, the behavior is equivalent to the Honor policy. This nil, the behavior is equivalent to the Honor policy. This
is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread
feature flag." feature flag."
type: string type: string
nodeTaintsPolicy: nodeTaintsPolicy:
@@ -5376,8 +5650,8 @@ spec:
tainted nodes for which the incoming pod has a toleration, tainted nodes for which the incoming pod has a toleration,
are included. - Ignore: node taints are ignored. All nodes are included. - Ignore: node taints are ignored. All nodes
are included. \n If this value is nil, the behavior is are included. \n If this value is nil, the behavior is
equivalent to the Ignore policy. This is a alpha-level equivalent to the Ignore policy. This is a beta-level
feature enabled by the NodeInclusionPolicyInPodTopologySpread feature default enabled by the NodeInclusionPolicyInPodTopologySpread
feature flag." feature flag."
type: string type: string
topologyKey: topologyKey:
@@ -5825,7 +6099,7 @@ spec:
value between the SizeLimit specified here and the value between the SizeLimit specified here and the
sum of memory limits of all containers in a pod. The sum of memory limits of all containers in a pod. The
default is nil which means that the limit is undefined. default is nil which means that the limit is undefined.
More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir'
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string: true x-kubernetes-int-or-string: true
type: object type: object
@@ -5900,10 +6174,13 @@ spec:
If the provisioner or an external controller If the provisioner or an external controller
can support the specified data source, it can support the specified data source, it
will create a new volume based on the contents will create a new volume based on the contents
of the specified data source. If the AnyVolumeDataSource of the specified data source. When the AnyVolumeDataSource
feature gate is enabled, this field will always feature gate is enabled, dataSource contents
have the same contents as the DataSourceRef will be copied to dataSourceRef, and dataSourceRef
field.' contents will be copied to dataSource when
dataSourceRef.namespace is not specified.
If the namespace is specified, then dataSourceRef
will not be copied to dataSource.'
properties: properties:
apiGroup: apiGroup:
description: APIGroup is the group for the description: APIGroup is the group for the
@@ -5929,29 +6206,37 @@ spec:
description: 'dataSourceRef specifies the object description: 'dataSourceRef specifies the object
from which to populate the volume with data, from which to populate the volume with data,
if a non-empty volume is desired. This may if a non-empty volume is desired. This may
be any local object from a non-empty API group be any object from a non-empty API group (non
(non core object) or a PersistentVolumeClaim core object) or a PersistentVolumeClaim object.
object. When this field is specified, volume When this field is specified, volume binding
binding will only succeed if the type of the will only succeed if the type of the specified
specified object matches some installed volume object matches some installed volume populator
populator or dynamic provisioner. This field or dynamic provisioner. This field will replace
will replace the functionality of the DataSource the functionality of the dataSource field
field and as such if both fields are non-empty, and as such if both fields are non-empty,
they must have the same value. For backwards they must have the same value. For backwards
compatibility, both fields (DataSource and compatibility, when namespace isn''t specified
DataSourceRef) will be set to the same value in dataSourceRef, both fields (dataSource
automatically if one of them is empty and and dataSourceRef) will be set to the same
the other is non-empty. There are two important value automatically if one of them is empty
differences between DataSource and DataSourceRef: and the other is non-empty. When namespace
* While DataSource only allows two specific is specified in dataSourceRef, dataSource
types of objects, DataSourceRef allows any isn''t set to the same value and must be empty.
non-core object, as well as PersistentVolumeClaim There are three important differences between
objects. * While DataSource ignores disallowed dataSource and dataSourceRef: * While dataSource
values (dropping them), DataSourceRef preserves only allows two specific types of objects,
all values, and generates an error if a disallowed dataSourceRef allows any non-core object,
value is specified. (Beta) Using this field as well as PersistentVolumeClaim objects.
requires the AnyVolumeDataSource feature gate * While dataSource ignores disallowed values
to be enabled.' (dropping them), dataSourceRef preserves all
values, and generates an error if a disallowed
value is specified. * While dataSource only
allows local objects, dataSourceRef allows
objects in any namespaces. (Beta) Using this
field requires the AnyVolumeDataSource feature
gate to be enabled. (Alpha) Using the namespace
field of dataSourceRef requires the CrossNamespaceVolumeDataSource
feature gate to be enabled.'
properties: properties:
apiGroup: apiGroup:
description: APIGroup is the group for the description: APIGroup is the group for the
@@ -5968,11 +6253,21 @@ spec:
description: Name is the name of resource description: Name is the name of resource
being referenced being referenced
type: string type: string
namespace:
description: Namespace is the namespace
of resource being referenced Note that
when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant
object is required in the referent namespace
to allow that namespace's owner to accept
the reference. See the ReferenceGrant
documentation for details. (Alpha) This
field requires the CrossNamespaceVolumeDataSource
feature gate to be enabled.
type: string
required: required:
- kind - kind
- name - name
type: object type: object
x-kubernetes-map-type: atomic
resources: resources:
description: 'resources represents the minimum description: 'resources represents the minimum
resources the volume should have. If RecoverVolumeExpansionFailure resources the volume should have. If RecoverVolumeExpansionFailure
@@ -5982,6 +6277,32 @@ spec:
capacity recorded in the status field of the capacity recorded in the status field of the
claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources'
properties: properties:
claims:
description: "Claims lists the names of
resources, defined in spec.resourceClaims,
that are used by this container. \n This
is an alpha field and requires enabling
the DynamicResourceAllocation feature
gate. \n This field is immutable. It can
only be set for containers."
items:
description: ResourceClaim references
one entry in PodSpec.ResourceClaims.
properties:
name:
description: Name must match the name
of one entry in pod.spec.resourceClaims
of the Pod where this field is used.
It makes that resource available
inside a container.
type: string
required:
- name
type: object
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
limits: limits:
additionalProperties: additionalProperties:
anyOf: anyOf:
@@ -6005,7 +6326,8 @@ spec:
If Requests is omitted for a container, If Requests is omitted for a container,
it defaults to Limits if that is explicitly it defaults to Limits if that is explicitly
specified, otherwise to an implementation-defined specified, otherwise to an implementation-defined
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
type: object type: object
type: object type: object
selector: selector:

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