<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://all.docs.genesys.com/index.php?action=history&amp;feed=atom&amp;title=PE-GPR%2F9.0.0%2FDeployment%2FDL-EKS</id>
	<title>PE-GPR/9.0.0/Deployment/DL-EKS - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://all.docs.genesys.com/index.php?action=history&amp;feed=atom&amp;title=PE-GPR%2F9.0.0%2FDeployment%2FDL-EKS"/>
	<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=PE-GPR/9.0.0/Deployment/DL-EKS&amp;action=history"/>
	<updated>2026-05-16T02:55:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.31.1</generator>
	<entry>
		<id>https://all.docs.genesys.com/index.php?title=PE-GPR/9.0.0/Deployment/DL-EKS&amp;diff=117603&amp;oldid=prev</id>
		<title>WikiSysop: Created page with &quot;{{Article |Standalone=No |DisplayName=Deploy Data Loader on EKS |TocName=Deploy Data Loader on EKS |Context=Deploy Data Loader in Docker containers hosted on Amazon Elastic Ku...&quot;</title>
		<link rel="alternate" type="text/html" href="https://all.docs.genesys.com/index.php?title=PE-GPR/9.0.0/Deployment/DL-EKS&amp;diff=117603&amp;oldid=prev"/>
		<updated>2022-03-31T12:45:40Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{Article |Standalone=No |DisplayName=Deploy Data Loader on EKS |TocName=Deploy Data Loader on EKS |Context=Deploy Data Loader in Docker containers hosted on Amazon Elastic Ku...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Article&lt;br /&gt;
|Standalone=No&lt;br /&gt;
|DisplayName=Deploy Data Loader on EKS&lt;br /&gt;
|TocName=Deploy Data Loader on EKS&lt;br /&gt;
|Context=Deploy Data Loader in Docker containers hosted on Amazon Elastic Kubernetes Service (EKS).&lt;br /&gt;
|ComingSoon=Yes&lt;br /&gt;
|Role=Administrator&lt;br /&gt;
|Section={{Section&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=This page describes the process of installing/configuring/starting the Data Loader application in a Kubernetes environment, specifically AWS EKS. The same instructions are applicable to Azure or GCP deployments with appropriate modifications as needed. &lt;br /&gt;
&lt;br /&gt;
Currently only AWS EKS has been tested and certified. Refer to AWS documentation for creating and managing clusters in your environment. &lt;br /&gt;
&lt;br /&gt;
The compatible Data Loader image version for use in EKS is 9.0.020.00 (or higher). This can be requested from Genesys Software Delivery team. You can install the DL image in a private repository such as JFrog for use in the EKS cluster .&lt;br /&gt;
&lt;br /&gt;
====Infrastructure Assumptions====&lt;br /&gt;
&lt;br /&gt;
*AWS EKS Cluster &lt;br /&gt;
*Nodes&lt;br /&gt;
**To run DL pod, the worker nodes should have enough memory and CPU count to match the recommended resource limit for DL pod(Memory: 16 GB &amp;amp; CPU count: 4)&lt;br /&gt;
*Networking&lt;br /&gt;
**Config Server, GIM, and GPR should be accessible from the worker node where DL pod is running.&lt;br /&gt;
**DL deployment in EKS will be exposed as service through ELB(Load Balancer).&lt;br /&gt;
**LoadBalancer URL will be used as host in Config Server for the DL application.&lt;br /&gt;
*Persistent Storage&lt;br /&gt;
**To run custom SQL files which is used to fetch the data from GIM.&lt;br /&gt;
**To preserve the log files  of the DL application.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Set up the Environment&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Create a namespace for Data Loader using the following command:&lt;br /&gt;
 kubectl apply -f namespace.json&lt;br /&gt;
The '''namespace.json''' defines how the namespace is to be created. Modify the following sample to suit your environment:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;apiVersion&amp;quot;: &amp;quot;v1&amp;quot;,&lt;br /&gt;
  &amp;quot;kind&amp;quot;: &amp;quot;Namespace&amp;quot;,&lt;br /&gt;
  &amp;quot;metadata&amp;quot;: {&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;dataloader&amp;quot;,&lt;br /&gt;
    &amp;quot;labels&amp;quot;: {&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;dataloader&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{NoteFormat|&lt;br /&gt;
* Replicas are not required for Data Loader.&lt;br /&gt;
* Ensure that the resources have a 4 CPU count and at least 16 GB memory available.&lt;br /&gt;
* In AWS EKS, namespaces can be used in a multi-tenant environment.  &lt;br /&gt;
|}}Before using the data loader image, create the secrets for the image using the following command:&lt;br /&gt;
 kubectl create secret docker-registry jfrogcred --docker-server= pureengage-docker-staging.jfrog.io --docker-username=&amp;lt;username&amp;gt; --docker-password=&amp;lt;password&amp;gt; --docker-email=&amp;lt;email&amp;gt; -n dl&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Deploy Data Loader&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=Ensure that the Data Loader image is available in the cluster or pulled from the repo defined in the '''deployment.yaml''' file.&lt;br /&gt;
&lt;br /&gt;
====Create a Config Map file====&lt;br /&gt;
The '''ConfigMap.yaml''' file stores the environment variables used by the Data Loader container. These values are read from the '''deployment.yaml''' file when the deployment is created.&lt;br /&gt;
&lt;br /&gt;
To create the '''ConfigMap.yaml''' file, run&lt;br /&gt;
 kubectl apply -f DL_ConfigMap.yaml -n dataloader&lt;br /&gt;
OR&lt;br /&gt;
 kubectl apply -f DL_ConfigMap.yaml --namespace=dataloader&lt;br /&gt;
A sample '''ConfigMap.yaml''' file:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: ConfigMap&lt;br /&gt;
metadata:&lt;br /&gt;
  name: dl-primary-config&lt;br /&gt;
  namespace: dl # Assumption is namespace dl is already created&lt;br /&gt;
data:&lt;br /&gt;
  JVMPARAMS: &amp;quot;-server -Xmx2g -Xms2g -Xss512k&amp;quot;&lt;br /&gt;
  START_DL: &amp;quot;false&amp;quot;&lt;br /&gt;
  CONFIG_HOST: &amp;quot;10.52.86.42&amp;quot;&lt;br /&gt;
  CONFIG_PORT: &amp;quot;8888&amp;quot;&lt;br /&gt;
  CONFIG_DL_APP_NAME: &amp;quot;DataLoader-Alpha&amp;quot;&lt;br /&gt;
  LCA_PORT: &amp;quot;4999&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Configure Persistent Storage====&lt;br /&gt;
A persistent storage is required for storing the log files and read SQL scripts for processing CSV files. Persistent Volumes are resources in the cluster and Persistent Volume Claims are requests for those resources and can also act as claim checks for the resource. &lt;br /&gt;
&lt;br /&gt;
The following configuration will map the local volume to the Kubernetes cluster.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: PersistentVolume&lt;br /&gt;
metadata:&lt;br /&gt;
  name: dl-pv&lt;br /&gt;
  labels:&lt;br /&gt;
    type: local&lt;br /&gt;
spec:&lt;br /&gt;
  storageClassName: manual&lt;br /&gt;
  capacity:&lt;br /&gt;
    storage: 10Gi&lt;br /&gt;
  accessModes:&lt;br /&gt;
    - ReadWriteMany&lt;br /&gt;
  hostPath:&lt;br /&gt;
    path: &amp;quot;/dl_data&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
The following sample will be used during deployment to mount the volume in the cluster.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: PersistentVolumeClaim&lt;br /&gt;
metadata:&lt;br /&gt;
  name: dl-pv-claim&lt;br /&gt;
spec:&lt;br /&gt;
  storageClassName: manual&lt;br /&gt;
  accessModes:&lt;br /&gt;
    - ReadWriteMany&lt;br /&gt;
  resources:&lt;br /&gt;
    requests:&lt;br /&gt;
      storage: 10Gi&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{NoteFormat|The Persistent Volume Claim will use the persistent volume for writing the logs and reading SQL scripts.|}}&lt;br /&gt;
&lt;br /&gt;
====Deploying the Data Loader application====&lt;br /&gt;
The data Loader application can be deployed using the standard Kubernetes deployment mode and can be used to control the Data Loader container pod in t he AWS EKS cluster to manage and scale the Data Loader application. &lt;br /&gt;
&lt;br /&gt;
To deploy the Data Loader application using a YAML file, run &lt;br /&gt;
 kubectl apply -f DL.yaml -n dataloader&lt;br /&gt;
A sample DL.yaml file:  &lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
apiVersion: apps/v1&lt;br /&gt;
kind: Deployment&lt;br /&gt;
metadata:&lt;br /&gt;
  name: dataloader-primary&lt;br /&gt;
  namespace: dl&lt;br /&gt;
  labels:&lt;br /&gt;
    app: dataloader-primary&lt;br /&gt;
spec:&lt;br /&gt;
  replicas: 1&lt;br /&gt;
  selector:&lt;br /&gt;
    matchLabels:&lt;br /&gt;
      app: dataloader-primary&lt;br /&gt;
  template:&lt;br /&gt;
    metadata:&lt;br /&gt;
      labels:&lt;br /&gt;
        app: dataloader-primary&lt;br /&gt;
    spec:&lt;br /&gt;
      volumes: # Assumption is persistent storage claim dl-pv-claim is already created for storing the sql files and logs&lt;br /&gt;
      - name: dl-pv-storage&lt;br /&gt;
        persistentVolumeClaim:&lt;br /&gt;
          claimName: dl-pv-claim&lt;br /&gt;
      imagePullSecrets:&lt;br /&gt;
      - name: jfrogcred # Assumption is secret jfrogcred is already created to pull the image&lt;br /&gt;
      containers:&lt;br /&gt;
      - name: dataloader-primary&lt;br /&gt;
        image: pureengage-docker-staging.jfrog.io/gpr/ai-data-loader:9.0.020.00&lt;br /&gt;
        resources:&lt;br /&gt;
          limits:&lt;br /&gt;
            cpu: &amp;quot;4&amp;quot;&lt;br /&gt;
            memory: &amp;quot;8Gi&amp;quot;&lt;br /&gt;
        volumeMounts:&lt;br /&gt;
        - mountPath: /dl/mount # Based on the mount path, dl application should be configured to write the log files or read the sql files in the mount path.&lt;br /&gt;
          name: dl-pv-storage&lt;br /&gt;
        ports:&lt;br /&gt;
        - containerPort: 8091&lt;br /&gt;
        - containerPort: 4999&lt;br /&gt;
        env:&lt;br /&gt;
        - name: JVMPARAMS&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: JVMPARAMS&lt;br /&gt;
        - name: START_DL&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: START_DL&lt;br /&gt;
        - name: CONFIG_HOST&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: CONFIG_HOST&lt;br /&gt;
        - name: CONFIG_PORT&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: CONFIG_PORT&lt;br /&gt;
        - name: CONFIG_DL_APP_NAME&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: CONFIG_DL_APP_NAME&lt;br /&gt;
        - name: LCA_PORT&lt;br /&gt;
          valueFrom:&lt;br /&gt;
            configMapKeyRef:&lt;br /&gt;
              name: dl-primary-config&lt;br /&gt;
              key: LCA_PORT&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|Status=No&lt;br /&gt;
}}{{Section&lt;br /&gt;
|sectionHeading=Configure High Availabliity&lt;br /&gt;
|alignment=Vertical&lt;br /&gt;
|structuredtext=====Setting up a load balancer====&lt;br /&gt;
To set up a load balancer, modify the following configuration in the YAML file,&lt;br /&gt;
&amp;lt;source lang=&amp;quot;yaml&amp;quot;&amp;gt;&lt;br /&gt;
apiVersion: v1&lt;br /&gt;
kind: Service&lt;br /&gt;
metadata:&lt;br /&gt;
  name: dl-primary-service&lt;br /&gt;
  namespace: dl&lt;br /&gt;
  annotations:&lt;br /&gt;
    service.beta.kubernetes.io/aws-load-balancer-type: &amp;quot;nlb&amp;quot;&lt;br /&gt;
    service.beta.kubernetes.io/aws-load-balancer-internal: &amp;quot;true&amp;quot;&lt;br /&gt;
spec:&lt;br /&gt;
  loadBalancerSourceRanges:&lt;br /&gt;
  - 10.52.0.0/17&lt;br /&gt;
  - 172.20.0.0/17&lt;br /&gt;
  type: LoadBalancer&lt;br /&gt;
  selector:&lt;br /&gt;
    app: dataloader-primary&lt;br /&gt;
  ports:&lt;br /&gt;
    - protocol: &amp;quot;TCP&amp;quot;&lt;br /&gt;
      name: &amp;quot;lca&amp;quot;&lt;br /&gt;
      port: 4999&lt;br /&gt;
      targetPort: 4999&lt;br /&gt;
    - protocol: &amp;quot;TCP&amp;quot;&lt;br /&gt;
      name: &amp;quot;dl&amp;quot;&lt;br /&gt;
      port: 8091&lt;br /&gt;
      targetPort: 8091&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{NoteFormat|Autoscaling is not supported.|}}&lt;br /&gt;
|Status=No&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>WikiSysop</name></author>
		
	</entry>
</feed>