Virtuozzo Application Platform 5.0.5/5.0.7
This document is preliminary and subject to change. In this document, you will find all of the new features, enhancements and visible changes included to the PaaS & CaaS 5.0.5-7 releases:
This Platform version also includes features and improvements, implemented within the PaaS 4.10 intermediate release.
Features & Updates
Cloud Scripting Engine
Support of Native Docker Containers
Conversion of Certified Stacks into Docker Templates
OOM Killer Alerts
Warning While Importing JPS from Unknown Source
Software Stack Versions Grouping in Topology Wizard (5.0.6)
Deployment of WAR Archives into Spring Boot via Dashboard (5.0.6)
Software Stack Versions
Cloud Scripting Engine
Cloud Scripting (CS) is a powerful platform-developed solution for advanced automation of repetitive DevOps tasks, complex CI/CD flows and clustering configurations. Generally, it allows to predefine complex environments provisioning and their behaviour upon changeable conditions through interconnecting different platform API methods into operation chains. In such a way, Cloud Scripting represents a unique programming language that is optimised for Cloud hosting to simplify development and significantly reduce the implementation cost of managed services.
Representing a highly versatile tool, Cloud Scripting provides access to a wide range of automation options and tuning possibilities. They are implemented by composing a manifest file in JSON or YAML format, which describes the logic of what should happened during the application lifecycle or performed in response to a particular event. When prepared, CS code can be easily executed by importing it to the Platform and, upon the necessity, edited on a fly through the embedded JSON/YAML editor with auto formatting, errors review and debugging possibilities.
To start working with CS and to build your own custom solutions, read through the appropriate Cloud Scripting documentation. The following points may be of a major interest and importance to get started:
- Basic Configs - learn the minimum basis of any JSP manifest
- Actions - define the required environment configurations and application behavior with a set of prescribed procedures
- Events - automate application workflow by binding actions to particular application lifecycle events
- Custom Scripts - integrate your own scripts, written in either Java, Javascript or PHP, to subsequently execute them within containers
- Visual Settings - customize your package visual layout
- Placeholders - specify automatically substituted parameters to fetch the required data on environment topology, server settings, user account, etc during solution installation
Also, we recommend to examine JPS Collection and get some real case examples on what you can achieve with Cloud Scripting. More info
Support of Native Docker Containers
In the present 5.0.5 PaaS version, platform starts support of Docker Community Edition hosting, with full compatibility to native Docker ecosystem. This implies that a one can deploy any containerised Docker-powered application inside the Cloud, at the same time leveraging all the inherent platform advantages like out-of-box automated scaling (both vertical and horizontal ones), pay-for-use pricing approach with granular resource allocation, ability to choose hardware and collaborate on a project with other team members, etc.
To accomplish this, the platform provides two basic prepackaged solutions:
- standalone Docker Engine - can be operated as a separate instance or connected to the already existing Swarm cluster (as either manager or worker node)
- Docker Swarm cluster - allows to set up cluster of Docker Engines with the configurable number of manager and worker nodes
Both these solutions can be effortlessly installed via platform Marketplace and include options for automatic deployment of the required service just during the creation. Upon installation, the created instance(s) can be accessed from your desktop for further management through both Docker Machine or SSH Gate.
Herewith, take into consideration that a Platform should contain an environment region with Virtuozzo 7 virtualization being integrated for running native Docker containers in the platform. This technology support was also implemented within the current release, thus the appropriate hardware availability depends on your hosting provider currently. Consequently, it will be provided within all the platform partners.
Conversion of Certified Stacks into Docker Templates
Within the current 5.0.5 PaaS upgrade, platform starts the process of certified software stacks transition to dockerized containers, following the global trend of this technology adoption. Such implementation does not limit any of the existing native templates' functionality and even enlarges it with the inherent Docker containers support possibilities in the platform.
As one of the main advantages gained, this novelty simplifies delivery of new stack versions, which can be performed by a cluster administrator at any time by means of the corresponding Docker image tag addition. In such a way, availability of the most recent software is not bound to a particular platform upgrade anymore, whilst it’s developer who decides whether the update is required and when to perform it (by means of the inbuilt Docker container redeployment functionality). This allows to resolve any vulnerability or security issue almost immediately after the official fix is provided and ensures much more flexibility during development.
Currently, the following stacks were converted for being treated as Docker containers: NGINX load balancer, Maven, Memcached, Apache PHP, NGINX PHP, Tomcat 6/7/8, TomEE, MySQL 5.6/5.7, MariaDB 5/10 and Varnish. All such dockerized templates are packaged, proven and fully managed by PaaS team. The remaining software stacks will be consequentially modified within future PaaS releases.
In order to support this feature integration, a number of changes were applied to the dashboard UI:
- set of function icons for such instances was extended with the additional Docker-dedicated ones (i.e. to access redeployment option and list of configuration tools)
- list of engine versions in topology wizard was substituted with a number of appropriate template tags, allowing to select the required combination of software stack/engine version simultaneously (this approach was additionally improved within PaaS 5.0.6)
- Docker configuration tools buttons were added to be shown when the corresponding servers are chosen within wizard frame
- new /etc/jelastic/redeploy.conf file, aimed to list files and folders that should be kept during redeploy, is automatically created and added to the Favorites section within container File Manager
Take into consideration that all abovementioned newly created containers will be built upon Dockerized templates for now, whilst the already existing servers will also remain fully operable due to backward compatibility.
OOM Killer Alerts
The Out-of-Memory (OOM) killer is a special job for Linux-based OS, aimed to suspend the currently unimportant processes in case of a strict lack of the free RAM memory and release it for more prioritized services. The selection of the process to be killed is made based on principles of losing the minimal amount of work done and simultaneous recovering larger amount of memory. The platform utilizes OOM killer tool in all containers by default, allowing them to continue functioning even when the RAM limit is reached.
In the current 5.0.5 PaaS release, the dedicated monitoring flow was implemented, which allows to track the OOM killer activity. This functionality is optional, thus its availability is controlled by a hosting provider. If enabled, all newly created containers will be supplied with the corresponding OOM killer load alert. It will track the running processes interruptions and send email notification with details to the corresponding user when such are observed. The default frequency for such notifications is one hour, but it can be manually tuned up to desired period (including immediate reports) within alert settings. Such emails contain table with all the essential information you need to be aware of in case some important service has been affected:
- Process Name
- Process ID
- Server
- Node ID
- Time
Also, it provides reference to the list of possible causes and advices on solving the occured issue. Generally, upon receiving the OOM killer notification, we recommend to consider optimization of your project memory consumption and/or attach more resources through the automatic vertical / horizontal scaling.
In addition, the Events History tab was updated to support the OOM killer monitoring implementation. Here, tools panel at top was moved into separate section in order to include the newly added filters (by Nodes and by Trigger), whilst details on the logged events are now shown upon hovering over a particular record.
Warning While Importing JPS from Unknown Source
When importing a JPS package which is provided by third parties, you need keep in mind that versatile CS features include possibilities of custom scripts inclusion, fetching user data, etc so this operation is performed on your own risk. In order to keep you aware of this, the appropriate validation was added to the Import > URL frame. For now, specified for import link is automatically compared with the list of trusted sources (e.g. JPS Collection). In case the match was not found, a special warning message will be displayed: Please ensure the manifest source is trusted to avoid malefactors impact.
Software Stack Versions Grouping in Topology Wizard (5.0.6)
The platform delivers various software stacks and their actual versions for the majority of widely used releases. Due to such versatility and its continuous enlarging, the current 5.0.6 Platform version includes improved grouping of stacks within topology wizard. From now on, servers with several major versions available (e.g. Tomcat 6, Tomcat 7, Tomcat 8 and Tomcat 9) are shown as a single option, whilst hovering upon it expands the list of available templates to choose.
Additionally, a number of other wizard UI changes were applied to support this enhancement:
- list of engines, that was previously shown upon hovering over the application server element at the left-hand panel, has been removed (whilst still being available alongside with other container settings in the central part of the frame)
- scrolling mechanism for the long stack lists was changed from a side slider to up and down buttons at the top and bottom of the list
- for dockerized templates, a pencil icon was added next to the label with server stack name & version in the middle part of the wizard; it is displayed only in the editing topology mode and allows to easily Change template version by launching the redeployment frame right from the wizard
Deployment of WAR Archives into Spring Boot via Dashboard (5.0.6)
Recently, the list of available software stacks within the platform was extended with a new Spring Boot Java application server. Designed for simple hosting of production-ready Spring applications and console Java utilities, it was automatically integrated to all platforms of 4.10 version and higher. And in confines of 5.0.6 Platform upgrade, its functionality was enhanced to support deployment of .war packages right via the platform dashboard. So, for now such Java archive types can be used as an application source (alongside with the .jar, .tar.gz and .zip ones), allowing to deploy Java projects into Spring Boot containers manually with the platform comprehensive GUI.
Software Stack Versions
The component templates versions have been updated to their latest versions since the previous release:
Stack | PaaS 5.0.5-7 |
---|---|
Tomcat 6 | 6.0.48 |
Tomcat 7 | 7.0.73 |
TomEE | 7.0.2 |
Jetty 6 | 6.1.26 |
GlassFish 3 | 3.1.2.2 |
Java 6 | 1.6.0_45 |
Java 7 | 1.7.0_79 |
Java 8 | 1.8.0_112 |
MariaDB | 5.5.54 / 10.1.21 |
MongoDB 2.6 | 2.6.11 |
MongoDB 3.0 | 3.2.1 |
MySQL | 5.6.34 / 5.7.16 |
PostgreSQL | 9.5.5 |
CouchDB | 1.6.1 |
nginx | 1.10.1 |
Maven | 3.3.9 |
Centos 7 | 7.2 |
Memcached | 1.4.24 |
Apache | 2.4.6-40 |
NGINX PHP | 1.10.1 |
NGINX Ruby | 1.10.1 |
PHP 5.3 | 5.3.29 |
PHP 5.4 | 5.4.45 |
PHP 5.5 | 5.5.38 |
PHP 5.6 | 5.6.28 |
PHP 7 | 7.0.13 |
PHP 7.1 | 7.1.0 |
Ruby 1.9.3 | 1.9.3-p551 |
Ruby 2.0.0 | 2.0.0-p643 |
Ruby 2.1 | 2.1.9 |
Ruby 2.2 | 2.2.5 |
Ruby 2.3 | 2.3.1 |
Python 2.7 | 2.7.12 |
Python 3.3 | 3.3.6 |
Python 3.4 | 3.4.5 |
Python 3.5 | 3.5.2 |
Node.js | 0.10.46 / 0.12.15 |
Node.js 4 | 4.26 / 4.3.0 / 4.5.0 |
Node.js 5 | 5.1.1 / 5.6.0 |
Node.js 6 | 6.5.0 |
Bug Fixes
In the table below, you can see the list of bug fixes in PaaS & CaaS 5.0.5, 5.0.6, and 5.0.7:
PaaS 5.0.5 | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
PaaS 5.0.6 | |||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
PaaS 5.0.7 | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|