Installation
Why Kubernetes?
Kubernetes is an open-source container-orchestration system for automating application deployment, scaling, and management. It replaces many manual tasks that have typically been performed by the operations teams, thereby improving uptime, reliability and reproducability of deployments. As already mentioned in the Recommended Deployment section, we recommend Kubernetes as a platform for running Gentics Content Management Platform in production.
Gentics provides both the container images and the necessary Kubernetes resource configuration (as Helm charts) for Gentics CMS and Gentics Mesh. Depending on your contract, images and resource configuration for Gentics Portal will either be provided by Gentics or created by yourself.
Helm charts are our prefered way of packaging all configuration required by Kubernetes (e.g., which containers have to be started, network connectivity, storage, environment settings, …). To allow you to customize your deployment, we provide a documented “values” file for each component. It is suggested to maintain these files in source control.
Prerequisites
The following documentation expects that you already performed the following steps:
- This guide expects that your already have a running Kubernetes cluster. If you don’t have one yet, you can either follow the Kubernetes Getting Started Guide or use any compatible solution, e.g. Red Hat Openshift, Google Kubernetes Engine, Amazon Elastic Kubernetes Service, Azure Kubernetes Service, Rancher, etc. This guide focuses on the open source version of Kubernetes — YMMV.
- Decide which persistent storage is to be used for shared persistent data, and for direct I/O data. Typically, NFS is used for the former, and iSCSI for the latter. Please review your options in the Kubernetes Storage Concepts, and check with your infrastructure provider which solutions is the best fit. Also, make sure you have read our Recommended Deployment section on storage.
- Kubernetes uses namespaces to separate applications and deployment stages. Therefore, it is possible to deploy Gentics Content Management Platform multiple times on a single cluster. Please make sure you specify the correct namespace at all times. Refer to the namespaces walkthrough guide and create the necessary namespace(s).
- Please make sure that the required network connectivity between the applications and components is guaranteed. This is especially important if you spread the components over multiple namespaces, plan to define
NetworkPolicyresources, or have a mixed Kubernetes/non-Kubernetes deployment. - As we use Helm charts for installation, please install the Helm client on your local machine (no software needs to be installed on the servers or in the Kubernetes cluster). Follow the Installing Helm instructions.
- Your Gentics technical customer consultant will provide you with a pull secret that allows your Kubernetes cluster to authenticate to the Gentics docker registry and download proprietary software images. Once you created the namespace, create a docker secret in the correct namespace. For convenience, you can now configure the service account to use it, so you don’t have to specify it in every
_values.yaml. - You will also receive a user/pw for accessing our commercial Helm charts. Please add the Gentics Helm repository to your installation:
helm repo add --username USERNAME --password PASSWORD gentics https://repo.gentics.com/repository/helm/ helm repo update - Additional Dependencies you need to install or use existing ones
- MariaDB database for the CMS
- (optional) Keycloak
- (optional) Elasticsearch
Install Gentics Mesh
- Check the default values of the chart:
helm show values gentics/gentics-mesh - Create a
values.yamlcontaining all values that you want to override. Make sure you add this file to your version control to keep track of changes.
Take special interest in the valuesreplicaCount,persistence,keystore.password,backup.enabled,credentials.initialAdminPassword.Set the Elasticsearch base URL atelasticsearch.url. Set the Keycloak public key (as a JSON encoded string) atconfig.publicKeys. - First the initial master database needs to be setup. This will automatically be handled by the Helm chart when
replicaCount=1. Thus, install the Gentics Mesh Helm chart with:helm -n NAMESPACE upgrade -i --wait -f gentics-mesh/values.yaml \ --set "replicaCount=1,backup.enabled=false" \ gentics-mesh gentics/gentics-mesh - Once the database is setup you can start the full cluster.
helm -n NAMESPACE upgrade -f gentics-mesh/values.yaml \ gentics-mesh gentics/gentics-mesh
Install Gentics CMS
- Check the default values of the chart:
helm show values gentics/cms - Create a
values.yamlcontaining all values that you want to override. Make sure you add this file to your version control to keep track of changes.
Take special interest in the valuespersistence,config.cmsandbackup.
Set thedatabasevalues to point to your MariaDB installation.
Setlicensekeyto the value you received from your Gentics technical customer consultant.
Set the values inkeycloakto match your Keycloak installation. - Install the Gentics CMS Helm chart:
helm -n NAMESPACE upgrade -i -f gentics-cms/values.yaml \ gentics-cms gentics/cms - Once Gentics CMS in fully started, you can proceed with configuring the Gentics Mesh Content Repository in the user interface, following the instructions in the documentation. When completed, check and repair the content repository, and publish all objects.
Install Gentics Portal | php
As the Gentics Portal | php deployment is always tailor-made for each project, you will receive detailed installation instructions during the project setup phase.
- Check if you would like to use pre-defined PVs, and set them in your
values.yaml - Generate your API key as instructed by the Mesh chart, and set it in your
values.yaml - Install the Gentics Portal | php Helm chart:
helm -n NAMESPACE upgrade -i -f gentics-portal/values.yaml \ gentics-portal gentics/gentics-portal-php
Install Gentics Portal | java
As the Gentics Portal | java always needs an implementation, you need a prebuild Porta Docker Image first.
- Specify the image and a license key in your
values.yaml - Generate your API key as instructed by the Mesh chart and set it in your
values.yamlor as a secret - Install the Gentics Portal | java Helm chart:
helm -n NAMESPACE upgrade -i -f gentics-portal/values.yaml \ gentics-portal gentics/gentics-portal-java