Skip to main content
Version: Deploy 23.1

Parameters in the Custom Resource File

Here is the list of parameters for the Digital.ai Deploy Custom Resource (CR). The following table lists the parameters available in the Digital.ai Deploy's daideploy_cr.yaml file and their default values.

ParameterDescriptionDefault
K8sSetup.PlatformThe platform on which you install the chart.AWSEKS/AzureAKS/GoogleGKE/PlainK8s
AdminPasswordAdmin password for xl-deployIf user does not provide password, random 10 character alphanumeric string will be generated
XldMasterCountNumber of master replicas3
XldWorkerCountNumber of worker replicas3
ServerImageRepositoryImage repository name for the masterxebialabs/xl-deploy
WorkerImageRepositoryImage repository name for the worker (deploy-task-engine)xebialabs/deploy-task-engine
ImageTagImage tag22.2.0
ImagePullPolicyImage pull policy, Defaults to Always if image tag is ’latest’,set to IfNotPresentAlways
ImagePullSecretSpecifies docker-registry secret names. Secrets must be manually created in the namespaceNA
xldLicenseConvert xl-deploy.lic files content to base64 hereNA
RepositoryKeystoreConvert keystore.jks files content to base64 hereNA
KeystorePassphrasePassphrase for keystore.jks fileNA
HealthProbesWould you like a HealthProbes to be enabled?true
HealthProbesLivenessTimeoutDelay before liveness probe is initiated90
HealthProbesReadinessTimeoutDelay before readiness probe is initiated90
HealthProbeFailureThresholdMinimum consecutive failures for the probe to be considered failed after having succeeded12
HealthPeriodScansHow often to perform the probe10
Persistence.EnabledEnable persistence using PVCtrue
Persistence.AnnotationsAnnotations for the PVC
Persistence.AccessModePVC Access Mode for volumeReadWriteOnce
Persistence.StorageClassXLD PVC Storage Class for volume.NA
Persistence.XldMasterPvcSizeXLD Master PVC Storage Request for volume. For production grade setup, size must be changed10Gi
Persistence.XldWorkerPvcSizeXLD Worker PVC Storage Request for volume. For production grade setup, size must be changed10Gi
resourcesCPU/Memory resource requests/limits. User can change the parameter accordinglyNA
nodeSelectorNode labels for pod assignment
tolerationsToleration labels for pod assignment[]
affinityAffinity labels for pod assignment
deploy.configurationManagement.centralConfiguration.configuration.enabledEnable configuration management on a central configuration - currently it is only deleting configuration files on the pod startuptrue
deploy.configurationManagement.centralConfiguration.configuration.resetFilesList of the files that will be deleted during central configuration pod startup[]
deploy.configurationManagement.master.configuration.enabledEnable configuration management on a master - currently it is only deleting configuration files on the pod startuptrue
deploy.configurationManagement.master.configuration.resetFilesList of the files that will be deleted during master pod startup[]
deploy.configurationManagement.worker.configuration.enabledEnable configuration management on a worker - currently it is only deleting configuration files on the pod startuptrue
deploy.configurationManagement.worker.configuration.resetFilesList of the files that will be deleted during master pod startup[]
haproxy-ingress.installInstall haproxy subchart. If you have haproxy already installed, set install to falsefalse
haproxy-ingress.controller.kindType of deployment, DaemonSet or DeploymentDeployment
haproxy-ingress.controller.service.typeKubernetes Service type for haproxy. It can be changed to LoadBalancer or NodePortLoadBalancer
ingress.EnabledExposes HTTP and HTTPS routes from outside the cluster to services within the clustertrue
ingress.annotationsAnnotations for ingress controllerSee haproxy and nginx setup below table.
ingress.pathYou can route an Ingress to different Services based on the path/
ingress.hostsDNS name for accessing ui of Digital.ai Deployexample.com
ingress.tls[].secretNameSecret file that contains the tls private key and certificateexample-secretsName
ingress.tls[].hostsDNS name for accessing ui of Digital.ai Deploy using tls.example.com
nginx-ingress-controller.installInstall nginx-controller subchart. If you have nginx already installed, set install to falsetrue
nginx-ingress-controller.kindType of deployment, DaemonSet or DeploymentDeployment
nginx-ingress-controller.service.typeKubernetes Service type for nginx. It can be changed to LoadBalancer or NodePortLoadBalancer
postgresql.installpostgresql chart with single instance. Install postgresql chart. If you have an existing database deployment, set install to false.true
postgresql.postgresqlUsernamePostgreSQL user (creates a non-admin user when postgresqlUsername is not postgres)postgres
postgresql.postgresqlPasswordPostgreSQL user passwordrandom 10 character alphanumeric string
postgresql.replication.enabledEnable replicationfalse
postgresql.postgresqlExtendedConf.listenAddressesSpecifies the TCP/IP address(es) on which the server is to listen for connections from client applications*
postgresql.postgresqlExtendedConf.maxConnectionsMaximum total connections500
postgresql.initdbScriptsSecretSecret with initdb scripts contain sensitive information
Note: This parameter can be used with initdbScriptsConfigMap or initdbScripts. The value is evaluated as a template.
postgresql-init-sql-xld
postgresql.service.portPostgreSQL port5432
postgresql.persistence.enabledEnable persistence using PVCtrue
postgresql.persistence.storageClasshe storage Class that needs to be defined as PostgreSQLNA
postgresql.persistence.sizePVC Storage Request for PostgreSQL volume50Gi
postgresql.persistence.existingClaimProvide an existing PersistentVolumeClaim, the value is evaluated as a template.NA
postgresql.resources.requestsCPU/Memory resource requestsrequests: memory: 1Gi memory: cpu: 250m
postgresql.resources.limitsLimitslimits: memory: 2Gi, limits: cpu: 1
postgresql.nodeSelectorNode labels for pod assignment
postgresql.affinityAffinity labels for pod assignment
postgresql.tolerationsToleration labels for pod assignment[]
UseExistingDB.EnabledIf you want to use an existing database, change postgresql.install to false.false
UseExistingDB.XLD_DB_URLDatabase URL for xl-deployNA
UseExistingDB.XLD_DB_USERNAMEDatabase User for xl-deployNA
UseExistingDB.XLD_DB_PASSWORDDatabase Password for xl-deployNA
rabbitmq.installInstall rabbitmq chart. If you have an existing message queue deployment, set install to false.true
rabbitmq.auth.usernameRabbitMQ application usernameguest
rabbitmq.auth.passwordRabbitMQ application passwordrandom 24 character long alphanumeric string
rabbitmq.auth.erlangCookieErlang cookieDEPLOYRABBITMQCLUSTER
rabbitmq.memoryHighWatermarkMemory high watermark500MB
rabbitmq.service.nodePortNode port5672
rabbitmq.extraPluginsAdditional plugins to add to the default configmaprabbitmq_shovel,rabbitmq_shovel_management,rabbitmq_federation,rabbitmq_federation_management,rabbitmq_amqp1_0,rabbitmq_management
rabbitmq.replicaCountNumber of replicas3
rabbitmq.rbac.createIf true, create & use RBAC resourcestrue
rabbitmq.service.typeType of service to createClusterIP
rabbitmq.persistence.enabledIf set to True, persistent volume claims are createdtrue
rabbitmq.persistence.storageClassThe storage class that must be defined as RabbitMQNA
rabbitmq.persistence.sizePersistent volume size20Gi
rabbitmq.persistence.annotationsPersistent volume annotations
rabbitmq.persistence.resourcesPersistent Volume resources
UseExistingMQ.EnabledIf you want to use an existing Message Queue change rabbitmq.instal to falsefalse
UseExistingMQ.XLD_TASK_QUEUE_USERNAMEUsername for xl-task queueNA
UseExistingMQ.XLD_TASK_QUEUE_PASSWORDPassword for xl-task queueNA
UseExistingMQ.XLD_TASK_QUEUE_DRIVER_CLASS_NAMEDriver Class Name for xl-deploy task queueNA
UseExistingMQ.XLD_TASK_QUEUE_URLURL for xl-deploy task queueNA
centralConfiguration.replicasCentral configuration replica count1
centralConfiguration.image.repositoryCentral configuration repository to usexebialabs/central-configuration
centralConfiguration.persistence.pvcSizeCentral cofiguration Persistent volume size500M
centralConfiguration.migrateFromEmbeddedPut here to true in case you need to migrate the configuration from the embedded central configuration on the deploy master.false

The value of the ingress.annotations depends on the which installation is enabled: haproxy or nginx.

Following are default settings that needs to be set in case of haproxy installation (haproxy-ingress.install: true)

      kubernetes.io/ingress.class: haproxy-dai-xld
ingress.kubernetes.io/ssl-redirect: "false"
ingress.kubernetes.io/rewrite-target: /
ingress.kubernetes.io/affinity: cookie
ingress.kubernetes.io/session-cookie-name: SESSION_XLD
ingress.kubernetes.io/session-cookie-strategy: prefix
ingress.kubernetes.io/config-backend: |
option httpchk GET /ha/health HTTP/1.0

Watch for the ingress.class value in the example, same unique on the cluster, value should be set on the following parameters in case of haproxy installation:

  • haproxy-ingress.controller.ingressClass

Following are default settings that needs to be set in case of nginx installation (nginx-ingress-controller.install: true), and that is also set in the default configuration:

      kubernetes.io/ingress.class: nginx-dai-xld
nginx.ingress.kubernetes.io/affinity: cookie
nginx.ingress.kubernetes.io/proxy-connect-timeout: "60"
nginx.ingress.kubernetes.io/proxy-read-timeout: "60"
nginx.ingress.kubernetes.io/proxy-send-timeout: "60"
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/session-cookie-name: SESSION_XLD
nginx.ingress.kubernetes.io/ssl-redirect: "false"

Watch for the ingress.class value in the example, same unique on the cluster, value should be set on the following parameters in case of nginx installation:

  • nginx-ingress-controller.extraArgs.ingress-class
  • nginx-ingress-controller.ingressClassResource.controllerClass
  • nginx-ingress-controller.ingressClassResource.name

Service Configuration parameters

Starting with Deploy version 23.1.6, you can configure the Akka remoting service to have separate canonical and bind configurations to connect to the master and worker pods in a Kubernetes cluster. The parameters listed below are used to set up such configurations based on your Kubernetes setup. You can configure the master and worker pods separately at deploy.master.podServiceTemplate and deploy.worker.podServiceTemplate respectively.

ParameterDescriptionDefault
podServiceTemplate.enabledUsed to enable separate service configuration for each master and worker podfalse
podServiceTemplate.typeIndicates the type of Kubernetes service. See Kubernetes documentation for information on service types.NodePort
podServiceTemplate.nameName of the Kubernetes service. The service name is composed of the release version name, the string '-master-', the order number of the service, and the .podNumber value passed by Helm.
name: '{{ printf "%s-master-" (include "xl-deploy.fullname" $) }}{{ .podNumber }}'
podServiceTemplate.serviceModeUsed to define the number of hostnames, ports, and services.
Possible values are:
1. SingleHostname (IncrementPort, MultiService)
2. SinglePort (IncrementHostname, MultiService)
3. MultiService (IncrementHostname, IncrementPort)
4. SingleService (IncrementHostname, SinglePort)
MultiService
podServiceTemplate.overrideHostnameTogether with overrideHostnameSuffix, this parameter is used to compose the full hostname of the exposed master pod.
overrideHostname: '{{ printf "%s-master-" (include "xl-deploy.fullname" $) }}{{ .podNumber }}'
None
podServiceTemplate.overrideHostnameSuffixTogether with overrideHostname, this parameter is used to compose the full hostname of the exposed master pod.
overrideHostnameSuffix: '.{{.Release.Namespace}}.svc.cluster.local'
None
podServiceTemplate.portEnabledIndicates if the Deploy port is enabled. This parameter cannot be disabled when auth.tls.enabled is false.true
podServiceTemplate.portsService ports. This value is used as the base figure to configure NodePort for each master or worker pod. The first pod is configured with this value as the port number. All subsequent pods are configured as an increment of the previous pod's port number. For example: if ports.deployAkka: 32180, the first pod port number is 32180 and the subsequent nodes are configured with port numbers 32181, 32182, and so on.None
podServiceTemplate.portNamesNames of the service ports. Example: ports.deployAkka: "akka"None
podServiceTemplate.nodePortsExposed node ports to which satellites can connect. Example: nodePorts.deployAkka: 32180None
podServiceTemplate.extraPortsExtra ports to expose in the service.
Example:
extraPorts:
name: new_svc_name
port: 1234
targetPort: 1234
[ ]
podServiceTemplate.loadBalancerSourceRangesAddresses that are allowed when the service is LoadBalancer. Refer to this document for more information: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service.
Example:
loadBalancerSourceRanges:
- 10.10.10.0/24
[ ]
podServiceTemplate.externalIPsUsed to set the external IP addresses[ ]
podServiceTemplate.externalTrafficPolicyUsed to enable client source IP preservation.Local
podServiceTemplate.clusterIPsKubernetes service Cluster IP.None
podServiceTemplate.annotationsAnnotations used to identify the service. Evaluated as a template.
Example:
annotations:
service.beta.kubernetes.io
aws-load-balancer-internal: 0.0.0.0/0
None
podServiceTemplate.publishNotReadyAddressesUsed to indicate if DNS records should be created for pods identified as not ready by the readiness probe.true
podServiceTemplate.sessionAffinitySession Affinity of the Kubernetes service. Possible values: "None" or "ClientIP".
If "ClientIP", consecutive client requests will be directed to the same pod.
None
podServiceTemplate.sessionAffinityConfigAdditional settings for the sessionAffinity parameter.
sessionAffinityConfig:
clientIP:
timeoutSeconds: 300
podServiceTemplate.podLabelsUsed to tag pods with identifying attributes that can be used organize and select pods with similar attributes. This is constructed as
statefulset.kubernetes.io/pod-name: '{{ printf "%s-master-%d" (include "xl-deploy.fullname" $) .podNumber }}'
None

If you need to update default properties apply changes in the CR.