Ververica Platform 2.1.0
Release Date: 2020-03-09
Changelog
General
-
The Getting Started Guide now builds upon the Ververica Platform Playground repository. The repository contains Helm configuration files for Ververica Platform and related components (e.g. MinIO) and serves as a blueprint for integrating Ververica Platform with third-party services such as logging and metrics systems.
-
This release adds support for storing Ververica Platform in an external datastore. For new installations, please refer to the Persistence Configuration section of the docs for information on configuring this. For information about migrating your data to an external datastore, see the Migration section below.
Helm Charts
-
The Helm charts of Ververica Platform are no longer available as a download in the customer portal. Instead, they are now shared via a Helm charts Repository hosted under
charts.ververica.com
. Please see Installation using Helm for details. -
Ververica Platform Helm charts now support Helm 3 as well as Helm 2. Support for Helm 2 will be dropped in the Ververica Platform release following the EOL of Helm 2 (November 2020).
-
Until now, Ververica Platform's Helm charts have included a set of so called
demo components
, a logging and a metrics stack, enabled viademoComponentsEnabled.[logging|metrics]
. Thesedemo components
are no longer distributed in our Helm charts. -
Until now, the Helm chart version has always coincided with the Ververica Platform release (so called
appVersion
). For Ververica Platform 2.1 onwards, Ververica Platform and its Helm charts are versioned independently. For example, for Ververica Platform 2.1, the corresponding chart version is 3.0.0.
Apache Flink®
-
Ververica Platform 2.1.0 includes our distribution of Apache Flink® 1.10.0 and Apache Flink® 1.9.2.
-
Please check Ververica Platform Docker Images for all available Apache Flink® images of this release.
-
Starting with Flink 1.10, Ververica Platform uses a dedicated classloader for user code, eliminating the risk of classloading conflicts between your application code and framework code.
-
For Flink 1.9 and Flink 1.10, we now use Flink's
stop
command when suspending a Deployment. The stop command performs a savepoint, atomically shuts down the Apache Flink application, and guarantees persistence to external storage systems for exactly-once sinks by committing all outstanding transactions. The resulting savepoint is thus fully self-contained. Please see FLIP-34 for details. -
From Flink 1.10 onwards, FLIP-49 has changed the way memory is configured for Taskmanagers. This allows us to apply smaller safety margins when configuring Flink's memory pools on Kubernetes leading to better overall memory utilization, while increasing robustness at the same time.
Specifically when using the RocksDBStatebackend, RocksDB will allocate memory outside of the JVM on your Taskamanger. This memory consumption is now controlled and limited by Flink. Therefore, you can use Flink configuration
taskmanager.memory.managed.fraction
to configure the fraction of memory you would like to dedicate to RocksDB.taskmanager.memory.managed.fraction: 0.0
means no memory for RocksDB (applicable if you are usingstate.backend: filesystem
)taskmanager.memory.managed.fraction
defaults to0.4
.
Please see the Flink documentation for details.
Deployment Defaults
You can now configure global default values for your Deployments in the Ververica Platform configuration. You can further configure namespaced default values for your Deployments, which are applied on top of the global default values. See Deployment Defaults for more details.
Logging Profiles
The logging configuration (Log4J2) of your Apache Flink Deployments is now fully configurable: in the Ververica configuration you can define different Logging Profiles, which you can then choose from for each of your Deployments. Furthermore, you can customize any of the logging profiles on a Deployment basis.
Extended Job and Deployment Status
Ververica Platform 2.1 exposes more information about the status of a Deployment and
Job. Once a Job is STARTED
, its status now includes the live status of the underlying Flink
job as well as the observed number of job restarts. Based on this information, Ververica Platform derives a set of
conditions for the RUNNING
Deployment, which are exposed via the REST API and web user interface.
OpenSSL Support
Ververica Platform now supports OpenSSL as the SSL Provider for Apache Flink® intra-cluster communication as well as Apache Flink®'s REST API out-of-the-box. Benchmarks show that openSSL has a significantly lower performance overhead than the default JDK SSL provider. Please check out SSL Provider for the details.
Web User Interface
-
When creating or configuring a Deployment, you can now choose and switch between three different forms:
Standard
, which only shows a minimal set of configurationsAdvanced
, which shows the full set of configurations (comparable to the form in previous versions of Ververica Platform)YAML
, an enhanced editor to work on the raw YAML representation of the Deployment resource
-
The "Snapshots" tab now also lists retained checkpoints of the currently running Apache Flink® job, including information like checkpoint size and duration.
Additional Features & Changes
-
You can now configure a Deployment to add custom Kubernetes labels to all Apache Flink pods (see Labels) .
-
You can now use placeholders in your Flink Configuration (e.g. for the namespace or Deployment ID), which are resolved during Job creation time.
-
Newly created Deployment resources now have defaults for the Upgrade Strategy (
Deployment.spec.upgradeStrategy
) and Restore Strategy (Deployment.spec.restoreStrategy
) attributes. Previously, both of these attributes were required and did not have a default. If desired, you can modify these values with the newly introduced Deployment Defaults APIs.
Migration
Preparation
Persistence Configuration
Until now, Ververica Platform has always stored Platform data locally on a Persistent Volume. Ververica Platform 2.1 makes the persistence backend pluggable. When upgrading from Ververica Platform 2.0 to 2.1 you need to choose a persistence type. If you do not provide this setting, the upgrade will be cancelled and no changes made to the running Platform.
As an operator of Ververica Platform, you have three options. Please note that you must perform the migration to the pluggable persistence backend (Option 1 or Option 2) prior to upgrading to Ververica Platform 2.2.
Option 1: Migrate to an External Database
In order migrate all Platform data to the configured MariaDB/MySQL or PostgreSQL database add the
following configurations to your values.yaml
file prior to upgrading.
vvp:
persistence:
type: legacyToJdbc
datasource:
url: jdbc:..
username: <omitted>
password: <omitted>
Please see the section on Persistence Configuration for more details.
The migration will be performed during the first startup of Ververica Platform 2.1. It is safe to keep this option
afterwards, but recommended to change vvp.persistence.type
to jdbc
once the migration is complete.
Option 2: Keep Using a Local SQLite Database
In order migrate all Platform data to a local SQLite database file in the same data directory where the
Persistent Volume is mounted add the following configuration to your values.yaml
file prior to upgrading. In
essence, this persistence type has the same characteristics as the legacy persistence layer (see Option 3).
vvp:
persistence:
type: legacyToLocal
The migration will be performed during the first startup of Ververica Platform 2.1. It is safe to keep this option
afterwards, but recommended to change vvp.persistence.type
to local
once the migration is complete.
The Platform cannot automatically migrate your data from local
persistence to an external database. If you migrate
to local
, and later wish to migrate to an external database, you will have to do this manually.
Option 3: Defer the Decision
In order to defer the decision until a later time add the following configuration to your values.yaml
file prior to
upgrading.
vvp:
persistence:
type: legacy
If you configure vvp.persistence.type
to jdbc
or local
without previously migrating your data via
legacyToJdbc
or legacyToLocal
and you do not use a persistent volume created out-of-band, Helm will delete
the persistent volume holding your metadata during the upgrade to Ververica Platform 2.1.
Minor Breaking Changes
-
Minimum Memory Requirements: From this release onwards, Ververica Platform validates that a minimum amount of memory has been configured for all Flink processes: Taskmanagers require at least 1G of memory, Jobmanagers require at least 500m of memory. If you have an existing Deployment from before this release with a configured memory size below this threshold, you will not be able to make changes to it until you raise the memory size.
-
Deployment Patch Sets: The experimental API for Deployment patch sets has been removed from the DeploymentTarget resource. There is no action required if you were not using this API. If you were, please migrate to the newly introduced DeploymentDefaults API. Existing DeploymentTarget resources will drop the
spec.deploymentPatchSet
attribute and we no longer apply any JSON patches during Deployment resource creations. Requests to the DeploymentTarget API that include the dropped attribute will fail. -
Job Logging: The Platform-wide configuration
vvp.appmanager.jobLogging
has been removed and is superseded by Logging Profiles and custom logging configuration templates on a per-Deployment basis. There is no action required if you were not using this configuration. If you were using the removed configuration, you can modify the default logging profile to additionally use the GELF appender and add the GELF appender to your Flink cluster class path by building a custom Docker image. For reference, the logging configuration in earlier releases used the following appender configuration (wheregelfAppenderServer
equals the previously configuredvvp.appmanager.jobLogging.graylogHost
):
<Appender name="Gelf" type="GELF" includeExceptionCause="true" protocol="udp" server="{{ gelfAppenderServer }}">
<KeyValuePair key="jobId" value="{{ jobId }}"/>
<KeyValuePair key="deploymentId" value="{{ deploymentId }}"/>
</Appender>
Please reach out to your Ververica account manager or contact us prior to upgrading if you are currently using the Ververica Platform Enterprise Trial and would like to upgrade to this release.
Upgrade
As usual, we recommend upgrading via Helm after setting a persistence type in your values.yaml
.
helm repo add ververica https://charts.ververica.com
helm upgrade [RELEASE] ververica/ververica-platform --version 4.1.0 --values values.yaml