Releases: spacecloud-io/space-cloud
v0.18.1
This is a patch release, mostly containing bug fixes.
Notable bug fixes
- Database connection gets disconnected while tracking too many tables #1070
- EOF error when querying remote services that return 204 status code #1077
- Current date operator not working in Postgres #1043
- space-cli setup in windows throw error #1074
- Error while fetching event logs in Mission Control for MySQL database #1068
For a complete list, check out the v0.18.1 milestone
Upgrade guide
Upgrade is possible from
v0.17.0
and above.
Before upgrading your cluster, make sure you backup cluster config using space-cli --project <project_id> get all /path/to/backup/dir
. If things go right, you'll be able to reapply all saved project config using space-cli apply /path/to/backup/dir
.
For Docker based deployments:
Simply run space-cli upgrade
.
For Kubernetes based deployment:
We recommend setting up a fresh Kubernetes cluster and installing Istio and SC on top of it. Don't forget to backup all project config first!
v0.18.0
Improvements
Remote Services
- Added support to set headers using values from JWT claims and payload
- Added ability to transform body of the request and response
- Added feature to run prepared Space Cloud GraphQL queries. This is a more secure way of using Space Cloud. Guide on this is coming soon
Ingress Routing
- Added ability to add security rules to ingress routing. Now you can expose your microservices securely to the outside world without any fear!
- Added support to set headers using values from JWT claims and payload
- Added ability to transform body of the request and response
Database module
- Database module can load connection strings from secrets. This protects the connection string from being exposed.
- Finally added support for aggregations for SQL databases. Support for the same in Mongo is coming soon. Docs
- Improved support for tracking existing tables. Currently tables with indexes do not get tracked properly. Should be fixed soon.
- Added ability to execute raw SQL queries written in Mission Control. This helps one extract maximum performance and perform queries which would not be possible otherwise. This also eliminates the need of writing custom views for niche scenarios. Docs
- Added JSON type for MySQL
Misc
- Filestore modules can load credentials files from secrets.
- Several improvements in
space-cli
- Security rules can now compare dates as well
- Added ability to customize the error message returned on failed authorization
Fixes
Fixed quite a few bugs as well.
Upgrade guide
Upgrade is possible from
v0.17.0
and above.
Before upgrading your cluster, make sure you backup cluster config using space-cli --project <project_id> get all /path/to/backup/dir
. If things go wrong, you'll be able to reapply all saved project config using space-cli apply /path/to/backup/dir
.
For Docker based deployments:
Simply run space-cli upgrade
.
For Kubernetes based deployment:
We recommend setting up a fresh Kubernetes cluster and installing Istio and SC on top of it. Don't forget to backup all project config first!
For the complete list of all changes and bug fixes, checkout the v0.18.0 milestone
v0.17.0
Improvements
Deployments module
- Added support for service routing. You can not split
HTTP
traffic between different versions of a service. This enables support for canary deployment, A/B testing and load offloading. #769 - Added support to scale based on the active concurrent requests. #755
- Added GPU as a resource constraint for Kubernetes. #869
- Added a
space-cli deploy
command to deploy code directly to SC. #861
Space CLI
- Added getters and generators for multiple config resources types. Execute
space-cli get --help
andspace-cli generate --help
for reference. #726 #667 - Added
space-cli get all
command to export all SC config. #738 - Added support for applying directory in
space-cli apply
command to apply exported config to SC. #737 - Added
space-cli add registry
andspace-cli add database
commands to ease the process of getting started with SC. This only works ondocker
. #856 - Added a
space-cli upgrade
command to upgrade the current running SC cluster to the latest compatible version. This only works ondocker
. #809
Misc
- Added support for storing multiple secrets to make secret rotation easier. #911
- Added token builder in MissionControl to generate tokens used in API requests. #575
- Added event logs tab in mission control to browse event and invocation logs from the UI itself. #765
- Added JSONB support for Postgres. #853
- Added support for weighted routing for ingress traffic- #784
- Added support to hash, encrypt request and response fields. #621
Fixes
- Improved reliability of eventing system. #899 #901 #902
- Improved reliability of realtime module. #907 #908 #917 #918 #920 #921
Migration guide
Migration from previous versions to v0.17.0
is not possible since the release introduces breaking changes. You can follow these steps:
- Export config from
v0.16.0
. - Delete your
v0.16.0
cluster. - Download the latest version fo
space-cli
and create a new cluster. - Create a new project and reconfigure each module while referring to the config you obtained in step 1.
For the complete list of all changes and bug fixes, checkout the v0.17.0 milestone
v0.16.0
New Deployments Module
With v0.16.0
, we have added a new deployments module which integrates with Kubernetes and Docker to give you a serverless platform to scale and secure your microservices. The deployments module has the following advantages:
- In built service mesh for enhanced security.
- Encrypt all network traffic by default.
- Autoscaling HTTP workloads including scaling down to zero.
Visit our documentation to know more.
You can also checkout our step-by-step guide to get started with the new release.
Feature enhancements
- Added
utils.length()
function in security rules to get length of array [#697] - Added optional condition to the force / remove rules [#623]
- Added
letsencrypt
support for automaticHTTPS
[#630] - Added schema support, security rules and custom timeout feature to eventing module [#543, #544, #545]
- Allow to create tables without security rules [#577]
Bug fixes
- GraphQL memory leak [#678]
- Default rule isn't applied to newly tracked tables [#586]
- Default rule isn't shown when creating new tables from sc-gui [#586]
- Can't query arrays in REST response from external service [#659]
You can find a more detailed list of all changes here
v0.15.3
Eventing enhancements
Earlier, Space Cloud was capable of triggering a webhook for database events only when the document consisted of id/_id
field for SQL/Mongo. However, now Space Cloud's eventing module works for any database mutations that contains the fields uniquely identifying the document in the request.
Note: However, this causes a breaking in the
realtime
module (liveQuery
). Instead of sending thedocId
, Space Cloud now sends thefind
object which contains the field that uniquely identifies the document. i.e. the fields with either the@primary
or@unique
directive. Read more about theliveQuery
syntax.
Distinct support
The support of fetching distinct/unique values is added to Space Cloud in this version. Learn more about how you can use the distinct clause. Fixes #546
Version display in Mission Control
The mission control now displays the version number of Space Cloud that it is running with. This is helpful while debugging.
Bug fixes in Space Cloud
- Insert array in MongoDB. Fixes #607
- Sort not working. Fixes #622
- GraphQL mutation doesn't return the value of default fields. Fixes #617
- Upsert operation not working in MongoDB. Fixes #619
Bug fixes in Mission Control
v0.15.2
v0.15.0
This is a major release of Space Cloud with tons of feature additions and bug fixes.
Robust security rules
The security rules of Space Cloud have become more robust due to the following feature additions:
- Delete certain fields from request/response with the help of rule type -
remove
. Fixes #552 - Override certain fields from request/response with the help of rule type -
force
. Fixes #553 - Added support of
in/notIn
array operators. Fixes #587
Read more about the security in Space Cloud.
Note: Special thanks to @s-kris for his contribution via crucial feedback and feature requests! 😃
Easier production deployments
- Added support for etcd as a config store.
- Space Cloud now automatically registers itself with its config store in the distributed mode.
Read more about running Space Cloud in distributed mode
Schema Module enhancements
- Added support for default value constraints.
- Added support for composite unique keys.
- Added support for indexes.
SQL Server support
You can now use Space Cloud along with SQL Server. With this addition, Space Cloud now has the following databases support:
- MongoDB
- Postgres (and Postgres compatible databases)
- MySQL (and MySQL compatible databases)
- SQL Server
Advanced eventing
Space Cloud now supports event triggers for File operations as well (upload/delete). With this addition, you can
now trigger your custom business logic on the following events:
- Database events (insert/update/delete)
- File storage events (upload/delete)
- Custom events
Read more about eventing in Space Cloud.
Others
regex
operator for filtering/searching in the CRUD module.- Support for Database Alias. Fixes #488
- Support for deleting a project.
- Export/import project config via Mission Control.
- Mission Control is made mobile responsive.
- Ability to remove database config via Mission Control.
- Ability to put raw MongoDB query in
space-api-js
. - Few more enhancements in Space Cloud and Mission Control.
v0.14.0
This release of Space Cloud has some significant changes to the schema module which makes modelling and using the CRUD module of Space Cloud very easy.
Explicit foreign key
The @relation
directive has been dropped in favour of the @foreign
directive to make things more explicit and avoid the confusion with the @link
directive which is used for modelling relations.
Note: This is a breaking change. Follow the migration guide below to upgrade to
v0.14.0
So if your schema for foreign key looked like this:
type article {
id: ID! @primary
title: String!
author_id: author! @relation
}
Then you will have to change it to:
type article {
id: ID! @primary
title: String!
author_id: ID! @foreign(table: "author", field: "id")
}
Migration guide
- First, Stop Space Cloud.
- Then open the config file in a code-editor/nano/vim, etc.
- Locate all the tables in the config where you have used the
@relation
directive. - Replace
@relation
to@foreign
directive with thetable
andfield
arguments to dictate the target of the foreign key as shown in the above example. - Change the type of the field with
@relation
directive toID
as shown in the above example. - Save the config file and start Space Cloud with this updated config file.
Simplified joins
Now you can query relational data by making a simple query like this on frontend:
query {
author {
id
name
articles {
id
title
}
}
}
For this you would have to specify a @link
directive to describe the relationship between types like this:
type author {
id: ID! @primary
name: String!
articles: [article] @link(table: "article", from: "id", to: "author_id")
}
type article {
id: ID! @primary
title: String!
author_id: ID! @foreign(table: "author", field: "id")
}
Read more about links and modelling relationships.
This solves #494
Returns the inserted fields in insert mutations
You can now ask for the fields of the objects inserted in a mutation. Solves #511
Bug fixes
v0.13.1
Simplified architecture and Remote services
This release simplifies the architecture of Space Cloud greatly and also introduces the support of remote services.
Consul support
Space Cloud now uses Consul in the distributed mode for service discovery and config sync. This ensures a more robust and loosely coupled architecture.
We have removed the raft cluster which we used to maintain internally earlier. This means you can directly make changes to the config file now. We have also dropped the support of nats, pubsub and static module.
To deploy Space Cloud in distributed mode, checkout this guide.
Remote services
We have dropped the support of functions
module in favour of normal HTTP services for custom business logic. This will help you leverage the existing ecosystem instead of adopting a new paradigm.
You can even perform joins on your remote services and database. Learn more about remote services from here.
Improved UX
The new mission control has major changes to improve the user experience. We have removed the global save button and setup database buttons which were confusing.
Bug fixes
All bug fixes in v0.13.0
milestone