space-cloud

Open source Firebase + Heroku to develop, scale and secure serverless apps on Kubernetes

APACHE-2.0 License

Stars
3.9K
Committers
36

Bot releases are visible (Hide)

space-cloud - v0.18.1

Published by HeyItsJs over 4 years ago

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!

space-cloud - v0.18.0

Published by YourTechBud over 4 years ago

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

space-cloud - v0.17.0

Published by YourTechBud over 4 years ago

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

  • 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

space-cloud - v0.16.0

Published by YourTechBud over 4 years ago

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

space-cloud - v0.15.3

Published by HeyItsJs almost 5 years ago

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
space-cloud - v0.15.2

Published by HeyItsJs almost 5 years ago

Fixed bug of file storage module not accepting meta

space-cloud - v0.15.0

Published by HeyItsJs almost 5 years ago

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.
space-cloud - v0.14.0

Published by HeyItsJs almost 5 years ago

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

  • #429
space-cloud - v0.13.1

Published by HeyItsJs almost 5 years ago

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
space-cloud - Simplified architecture and Remote services

Published by HeyItsJs almost 5 years ago

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

space-cloud - v0.12.1

Published by YourTechBud about 5 years ago

Bug fixes

  • Fixed swapping of directory and file name while creating a file in the file management module #427
  • Fixed wrong SQL query being generated while using AND and OR clause together #426
  • Fixed integer queries not working in graphql #425
  • Fixed boolean queries not working in graphql #424

It also added an endpoint to trigger events.

space-cloud - GraphQL, schema, pubsub and event triggers

Published by HeyItsJs about 5 years ago

This is a major release of Space Cloud with super exciting new features:

GraphQL support

This release adds GraphQL support for the following features:

  • queries
  • mutations
  • subscriptions
  • calling functions

Cool features:

  • Joins (even cross-database and between database and microservices)
  • Solved N+1 problem using data loader pattern

Note: Space Cloud has added the GraphQL support in a schemaless fashion.

Schema Support

Space Cloud can now create schemas for tables/collections. Schemas serve the purpose of data validation and table creation/modification (in the case of SQL databases). This takes care of modeling relations and foreign keys as well.

Event triggers

Space Cloud can now trigger Space Functions on any database mutations.

Notable features:

  • Configurable retries
  • Event triggers can be scheduled to happen after a delay or at a particular timestamp

Pubsub module

Space Cloud now has a pubsub module which lets you publish and subscribe data. The security rules for the pubsub module works in the same fashion as the file storage module.

Each subscriber can subscribe with a queue name. Space Cloud assigns a random queue name to a subscriber if it does not mentions the queue name. Subscribers in the same queue are load balanced to receive a message.

space-cloud - v0.10.1

Published by HeyItsJs about 5 years ago

This is a minor release. It contains the following features:

  • Added GCP cloud storage supported
  • Added functionality in Mission Control to remove security rules
space-cloud - v0.11.0

Published by HeyItsJs about 5 years ago

Summary

  • Added support of count, upsert, increment, multiply, min, max operations to SQL
  • Added Space Cloud Explorer to Mission Control
  • Restructured config of functions module to make it more flexible
  • Added support of default service and default function to security rules of functions module

Explorer

The Mission Control UI now comes packed with a Space Cloud Explorer. This Explorer lets you run javascript code so that you can try Space Cloud APIs without having to set up any project. The api object is available to all requests made by Explorer

Breaking Changes

The config of functions module has been broken to make it flexible and future ready. The rules have been renamed to services which is a map of services where each service holds a map of functions where each function holds a rule field whose value is nothing but the rule object.

space-cloud - v0.9.0

Published by HeyItsJs over 5 years ago

This is the first release of Space Cloud with all major modules implemented (database, functions, file storage, user management and static).

Supported Technologies

  • Databases: MongoDB, PostgreSQL and PostgreSQL compatible databases, MySQL and MySQL compatible databases
  • Brokers: Nats
  • File Storage Technologies: Local storage and Amazon S3

Features

Database module

  • Create, read, update, delete data into your database
  • Batch multiple database operations into a single transaction
  • Subscribe to changes in your database in realtime

User Management module

  • Basic Email Signup / signin
  • Read and edit profiles
  • Password encryption

File Storage module

  • Upload / download files
  • Create folder
  • List folders/file in a folder
  • Delete file/folder

Functions module

  • Call functions from frontend or other backend function

Static hosting

  • Host static files
  • Proxy pass to other upstream servers

Downloads