Platform9 has released 'Kube2Go', a web-UI driven Kubernetes cluster deployment service, which complements their recently launched multi-cloud managed Kubernetes offering and 'Fission' open source serverless framework that runs on top of Kubernetes.
The Platform9 'Kube2Go' deployment service allows users to create a highly available Kubernetes cluster of up to five nodes from a web-based UI, in a similar fashion to existing services within this space, such as Stackpoint and KCluster. Kube2Go currently only supports deployment onto an AWS-based cloud environment, but support for Microsoft Azure and Google Cloud Platform is stated as upcoming on the project's blog.
It is possible to deploy a 'production-grade' Kubernetes cluster manually using the 'kops' CLI tool, although self-management of the cluster is required throughout the cluster's lifecycle, and due to inherent complexity of this task, several SaaS-based offerings have emerged within this space. For example, the release of the Kube2Go service complements the general availability of the Platform9 infrastructure-agnostic, managed Kubernetes service. This managed offering is deployed and operated entirely as a SaaS solution, and according to the documentation any Kubernetes clusters provisioned through the platform can span across 'any combination' of on-premise bare metal and public cloud infrastructure.
Core features of the Platform9 managed Kubernetes offering include:
- 'Pure-play' Kubernetes: The Platform9 managed Kubernetes service packages upstream releases of the open source platform as a SaaS-offering
- Enterprise integrations: Several Kubernetes integrations are included out-of-the-box: end-to-end security, multi-tenant controls for user quotas with SSO integration, and integration with external (cloud vendor) persistent storage and load-balancers
- Highly available: Managed Kubernetes create highly available, multi-master, multi-etcd Kubernetes clusters that can span across availability zones in your private or public cloud environment
- Integration with OpenStack deployments: The Kubernetes managed service can be run and managed using the same user interface portal as the Platform9 managed OpenStack offering
InfoQ recently spoke with Madhura Maskasky, Co-Founder and VP of Product for Platform9, who stated that the multi-cloud combination is a key feature of this new offering:
Hybrid public/private clouds can be seen as a necessary evil, as organisations are looking to avoid lock-in and leverage differing vendor pricing in order to ensure cost compliance. This goal can be difficult to realise with pure virtualisation technology, and hence the container is now becoming the de facto unit of deployment. We view Kubernetes as a key abstraction layer above existing virtualisation technologies.
Additional information about the Platform9 managed Kubernetes offering can be found on the company's website. Other managed Kubernetes offerings in this space include: CoreOS Tectonic, Google GKE, and the Giant Swarm Microservices Platform.
Platform9 has also released Fission, an open source Function-as-a-Service (FaaS) 'serverless', framework built and run on top of Kubernetes. Fission 'operates on just the code', and the underlying container and scheduler technologies of Docker and Kubernetes are abstracted away under normal operation, although both can be accessed to extend Fission if required.
The core of Fission is written in Golang, and language-specific components are isolated in something called 'environments', which in essence are containers with a web server and dynamic loader, and are much like the concept of Cloud Foundry and Heroku 'buildpacks'. The current alpha release of Fission supports NodeJS and Python, with more languages coming soon (including .NET and php7). It is also possible for developers to create their own custom environments.
A Fission 'function' is a piece of code that follows a specified interface, and can be triggered by something that maps an event to a function; Fission currently supports HTTP routes, timers and Kubernetes events as event triggers. In order to maintain a rapid response to an event trigger, Fission maintains a pool of "warm" containers that each contain a small dynamic loader. When a function is first called, i.e. "cold-started", a running container is chosen and the function is loaded. According to the documentation, typical cold-start latencies are approximately 100ms.
Possible use cases for Fission include:
- Deploying simple REST APIs: API backends for web and mobile apps can be created without the need to manage servers. A developer writes the function code, and Fission manages deployment, routing, scalability, and availability via Kubernetes
- Creating 'Bots' and Webhooks: Fission can be used to implement webhooks, as functions can be mapped a URL trigger, and the third-party webhook pointed to this URL
- Handling Kubernetes Events: Fission supports triggering functions based on Kubernetes watches. For example, a function can be configured to watch for all pods in a certain namespace matching a certain label. These event handler functions could be used for simple monitoring
The Fission codebase can be obtained from the Fission GitHub repository. Other open source projects in this space include Skippbox kubeless, fabric8 funktion, and Apache OpenWhisk.