Skip to content

Releases: spacecloud-io/space-cloud

v0.18.1

22 Jun 10:17
f7c9080
Compare
Choose a tag to compare

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

12 Jun 15:45
4c16662
Compare
Choose a tag to compare

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

29 Apr 10:27
dcd3b94
Compare
Choose a tag to compare

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 and space-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 and space-cli add database commands to ease the process of getting started with SC. This only works on docker. #856
  • Added a space-cli upgrade command to upgrade the current running SC cluster to the latest compatible version. This only works on docker. #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

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

19 Feb 10:49
107fa65
Compare
Choose a tag to compare

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 automatic HTTPS [#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

08 Jan 14:48
1f707ed
Compare
Choose a tag to compare

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 the docId, Space Cloud now sends the find object which contains the field that uniquely identifies the document. i.e. the fields with either the @primary or @unique directive. Read more about the liveQuery 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

  • Reset schema on error. Fixes #605
  • Unable to save schema. Fixes #606

v0.15.2

03 Jan 11:23
25eb271
Compare
Choose a tag to compare

Fixed bug of file storage module not accepting meta

v0.15.0

29 Dec 14:18
722ff96
Compare
Choose a tag to compare

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

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

07 Dec 14:38
948f370
Compare
Choose a tag to compare

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 the table and field arguments to dictate the target of the foreign key as shown in the above example.
  • Change the type of the field with @relation directive to ID 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

25 Nov 13:43
0c641dc
Compare
Choose a tag to compare

Bug fixes

  • Too many open files bug because of data race in eventing module #503
  • Closed body in all requests #504
  • SC applies the config of only the changed module rather than the entire config #485
  • Docs fixes #512 thanks to @thienpow

Enhancements

  • Space Cloud now takes CONFIG environment variable to configure the path of config file #489
  • You can now specify the HTTP method for remote services #492

Simplified architecture and Remote services

04 Nov 14:45
1179c12
Compare
Choose a tag to compare

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