Installation
Before you begin (Prerequisites)
-
Digital Distributed Container License (received from support@trisotech.com)
-
A Kubernetes environment
-
The
kubectl
command line utility with a valid configuration connected to an existing cluster. -
The
helm
command line utility with a valid configuration connected to an existing cluster. -
A Kubernetes Ingress Controller (GKE Load Balancer, AWS ALB, AKS Application Gateway, nginx, Kong, … )
-
Installation
This installation procedure fetches the helm charts from Trisotech official container registry (registry.trisotech.com). To use a private container registry, follow the instruction under the Private Container Registry page.
The installation is templated using helm charts.
Downloading the DES helm chart
Login to the Trisotech registry using this command:
helm registry login -u license registry.trisotech.com
When prompted for a password, use the Trisotech DDC license to authenticate.
Download the helm chart using this command:
helm pull oci://registry.trisotech.com/des/charts/ddc --version <VERSION>
Replace <VERSION> with the current version of the Digital Enterprise Suite. You can consult our release notes page to find the latest version available.
Installing using helm
Default installation can be done using this command:
helm upgrade --install \
--set image.repository=<DDC_IMAGE>
--set image.tag=<TAG> \
--set image.pullSecrets=<PULL_SECRET> \
--set ddc.LICENSE=<LICENSE> \
--set ingress.hosts[0]=<DNS_NAME> \
--wait \
--namespace=ddc \
--create-namespace \
--atomic \
<DDC_NAME> ddc-<VERSION>.tgz
Replace <DDC_IMAGE>
and <TAG>
with the DDC image location. For an image that would be under my.org/ddc:1.0.0
, <DDC_IMAGE>
is my.org/ddc
and the <tag>
is 1.0.0
.
Replace <PULL_SECRET>
with the name of the pull secret that you want to use for the container image.
Replace <DDC_NAME>
with the deployment name you want to give to this DDC. Typically, you will have different DDC images deployed at the same time.
Replace <DNS_NAME>
with the ingress host name to use. This is the URL under which the DES will be accessible.
You can also add multiple ingress names. |
If you wish to install in a different namespace than ddc
, you can change that value in the --namespace=ddc
command line option.
Customizing the ingress controller
By default, the chart will use an nginx
ingress by setting the ingress className to nginx
. It will also by default generate annotations for nginx ingress and for the Let’s Encrypt
certificate manager. These extra annotations should be ignored by another ingress controller.
Ingress Controller
To change the ingress controller to a different ingress class, add the command line parameter to the helm installation:
--set ingress.className=nginx
You can also add an ingress annotations by adding the command line parameter(s) to the helm installation:
--set ingress.annotations."my\.ingress\.annotation"=value1 --set ingress.annotations."my\.other\.ingress\.annotation"=value2 ...
TLS
To generate a tls
section to the ingress to instruct the controller on which hosts require tls (https) and where the secret containing the certificate is, you can add the command line parameter(s) to the helm installation:
--set ingress.tls=true
This adds a tls section to the ingress with a secret named des-des-tls
that you will need to fill with the tls secret.
To create this secret, you will need to create a secret containing:
Variable |
Definition |
NAME |
The helm instance name (can be obtained using helm ls) |
KEY |
The file containing the RSA key |
CERT |
The certificate with chain |
The certificate must contain all intermediates and the root certificate. They must be concatenated in order of precision (certificate, intermediate certificate, root certificate) |
Here is the command to add the tls secret:
kubectl create secret tls des-des-tls \
--key=<KEY> \
--cert=<CERT>
Using nginx and Let’s Encrypt
If there is no existing ingress controller, the DES can work with the open source nginx ingress controller using https certificates managed by Let’s Encrypt.
First install nginx using helm:
kubectl create namespace ingress-basic
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade --install nginx-ingress ingress-nginx/ingress-nginx \
--namespace ingress-basic \
--create-namespace \
--set rbac.create=true
Then install the certificate manager from Let’s Encrypt:
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--set installCRDs=true
Confirm that each pod is in running state:
kubectl get pods --namespace cert-manager
Create the cluster issuer (Cert-Manager configuration):
cat << EOF > cluster-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: <EMAIL_ADDRESS>
privateKeySecretRef:
name: letsencrypt
solvers:
- http01:
ingress:
class: nginx
EOF
kubectl apply -f cluster-issuer.yaml
Replacing <EMAIL_ADDRESS>
with your email address.
Customizing storage
By default, the DDC is deployed stateless without storage (persistent volume or mongodb).
Persistent Storage
To activate persistent storage, add the command line parameter to the helm installation:
--set storage.enabled=true
The requested storage will be of the default storage class with a size of 10Gi
.
You can see the default storage class by executing the command kubectl get storageclass
and looking at which one of the storage is marked with a (default) annotation after its name. You may also want to choose a storage class that allows resizing of the volume (ALLOWVOLUMEEXPANSION property) also displayed by this command.
storage.size can only be updated after installation if supported by the storage class (see ALLOWVOLUMEEXPANSION value) |
To change from the default storage class to a different one, add the command line parameter to the helm installation:
--set storage.storageClassName=my-storage-class
The chosen storage class is required to support extended file attributes. |
To change the disk size, add the command line parameter to the helm installation:
--set storage.size=30Gi
Replace the size with the size that you would want.
When using the persistent storage, there are advanced parameters that can be added to the command line of the helm installation (the ddc.
prefix is required):
--set ddc.PERSISTENCE_FS_LOCK=60
--set ddc.PERSISTENCE_FS_LOCK_LIMIT=5000
--set ddc.PERSISTENCE_FS_LOCK_WAIT=100
Configurations Variable | Required | Description |
---|---|---|
PERSISTENCE_FS_LOCK |
Optional |
Number of milliseconds to consider a lock still valid on an instance. Defaults to 60 seconds. |
PERSISTENCE_FS_LOCK_LIMIT |
Optional |
Maximum time (in milliseconds) to try to acquire a lock. Defaults to 5000. |
PERSISTENCE_FS_LOCK_WAIT |
Optional |
Interval (in milliseconds) between trying to acquire locks. Defaults to 100 ms. |
MongoDB Storage
To activate the MongoDB storage, add the command line parameter to the helm installation (the ddc.
prefix is required):
--set ddc.PERSISTENCE_TYPE=mongo
--set ddc.PERSISTENCE_MONGO_CONNECTION=Connection String
--set ddc.PERSISTENCE_MONGO_USER=User
--set ddc.PERSISTENCE_MONGO_PASSWORD=Password
Complete list of configuration variables and their description
Configurations Variable | Required | Description |
---|---|---|
PERSISTENCE_TYPE |
Required |
Set to |
PERSISTENCE_MONGO_CONNECTION |
Required |
The connection string of MongoDB. |
PERSISTENCE_MONGO_USER |
Optional |
The username to connect to MongoDB. This can also be defined in the connection string. |
PERSISTENCE_MONGO_PASSWORD |
Optional |
The password to connect to MongoDB. This can also be defined in the connection string. |
PERSISTENCE_MONGO_DATABASE |
Optional |
When using a username/password, authorization could be done on a different database than |
PERSISTENCE_MONGO_LOCK |
Optional |
Number of milliseconds to consider a lock still valid on an instance. Defaults to 60 seconds. |
PERSISTENCE_MONGO_LOCK_LIMIT |
Optional |
Maximum time (in milliseconds) to try to acquire a lock. Defaults to 5000. |
PERSISTENCE_MONGO_LOCK_WAIT |
Optional |
Interval (in milliseconds) between trying to acquire locks. Defaults to 100 ms. |
Customizing Logging
Logging can be adapted to the log ingestor used by setting the logging helm variables.
Configuring email sending
To activate the sending emails from the DDC, add the command line parameter to the helm installation (the ddc.
prefix is required):
--set ddc.SMTP_HOST=smtp.org
--set ddc.SMTP_PORT=25
--set ddc.SMTP_TLS=true
--set ddc.SMTP_USERNAME=User
--set ddc.SMTP_PASSWORD=Password
Complete list of configuration variables and their description
Configurations Variable | Required | Description |
---|---|---|
SMTP_HOST |
Required |
SMTP hostname. |
SMTP_PORT |
Required |
SMTP port number. |
SMTP_TLS |
Optional |
Set to |
SMTP_USERNAME |
Optional |
Optional username for the SMTP server if it is required. |
SMTP_PASSWORD |
Optional |
Optional password for the SMTP server if it is required. |
EMAIL_FROM |
Optional |
An email address to use in the FROM field if none was provided when sending an email. |
EMAIL_TO |
Optional |
An email address to use in the TO field if none was provided when sending an email. |
Customizing the timezone
By default, the pod clock will be set to UTC
. We do not recommend that you change that value but if you wish to do so, you can set the timezone based on the values enumerated on Wikipedia for TZ by adding to the command line parameter to the helm installation:
--set timezone=UTC
And changing the value from UTC
to America/New_York
, Europe/Paris
, …