You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sm...@apache.org on 2017/12/06 03:13:53 UTC

[airavata-sandbox] 09/19: Adding CI/CD support

This is an automated email from the ASF dual-hosted git repository.

smarru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-sandbox.git

commit 0739614ae1daa4b4c2a7249627c405c79daab590
Author: dimuthu.upeksha2@gmail.com <Di...@1234>
AuthorDate: Sun Nov 26 06:20:47 2017 +0530

    Adding CI/CD support
---
 .../airavata/helix/api/HelixParticipant.java       | 23 ++++---
 .../airavata/helix/api/PropertyResolver.java       | 38 +++++++++++
 .../modules/microservices/helix-controller/pom.xml | 72 +++++++++++++++++++-
 .../org/apache/airavata/helix/HelixController.java | 23 +++++--
 .../src/main/resources/application.properties      |  3 +
 .../src/main/resources/log4j.properties            |  9 +++
 .../microservices/tasks/command-task/pom.xml       |  1 -
 .../airavata/helix/task/command/CommandTask.java   |  2 +-
 .../airavata/helix/task/command/Participant.java   | 18 ++---
 .../src/main/resources/application.properties      |  5 ++
 .../microservices/tasks/data-in-task/pom.xml       |  2 +-
 .../airavata/helix/task/datain/Participant.java    | 20 +++---
 .../src/main/resources/application.properties      |  5 ++
 .../microservices/tasks/data-out-task/pom.xml      |  2 +-
 .../task/{datain => }/dataout/DataOutputTask.java  |  2 +-
 .../task/{datain => }/dataout/Participant.java     | 20 +++---
 .../src/main/resources/application.properties      |  5 ++
 .../microservices/workflow-scheduler/pom.xml       | 13 ++++
 .../k8s/gfac/core/HelixWorkflowManager.java        | 14 +++-
 .../airavata/k8s/gfac/service/WorkerService.java   | 13 +++-
 .../src/main/resources/application.properties      |  6 +-
 .../docker/jenkins-docker-kubectl-mvn/Dockerfile   |  2 +
 .../scripts/k8s/api-server/api-server-dep.yml      |  4 +-
 airavata-kubernetes/scripts/k8s/ci-cd/Jenkinsfile  | 78 ++++++++++++++++++++++
 airavata-kubernetes/scripts/k8s/ci-cd/jenkins.yml  | 76 +++++++++++++++++++++
 .../k8s/helix-controller/helix-controller-dep.yml  | 24 +++++++
 .../k8s/task-scheduler/task-secheduler-dep.yml     |  3 +
 .../k8s/tasks/command-task/command-task-dep.yml    | 28 ++++++++
 .../k8s/tasks/data-in-task/data-in-task-dep.yml    | 28 ++++++++
 .../k8s/tasks/data-out-task/data-out-task-dep.yml  | 28 ++++++++
 .../egress-staging-task-dep.yml                    | 21 ------
 .../env-cleanup-task/env-cleanup-task-dep.yml      | 21 ------
 .../tasks/env-setup-task/env-setup-task-dep.yml    | 21 ------
 .../ingress-staging-task-dep.yml                   | 21 ------
 .../job-submission-task-dep.yml                    | 21 ------
 .../workflow-generator/workflow-generator-dep.yml  | 21 ------
 .../scripts/k8s/zookeeper-service.yml              | 24 +++++++
 37 files changed, 534 insertions(+), 183 deletions(-)

diff --git a/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/HelixParticipant.java b/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/HelixParticipant.java
index 77073ff..a2a56ca 100644
--- a/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/HelixParticipant.java
+++ b/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/HelixParticipant.java
@@ -16,6 +16,8 @@ import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 import org.springframework.web.client.RestTemplate;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -37,18 +39,19 @@ public abstract class HelixParticipant implements Runnable {
     private String apiServerUrl;
     private RestTemplate restTemplate;
 
-    public HelixParticipant(String zkAddress,
-                            String clusterName,
-                            String participantName,
-                            String taskTypeName,
-                            String apiServerUrl) {
+    public HelixParticipant(String propertyFile) throws IOException {
 
         logger.debug("Initializing Participant Node");
-        this.zkAddress = zkAddress;
-        this.clusterName = clusterName;
-        this.participantName = participantName;
-        this.taskTypeName = taskTypeName;
-        this.apiServerUrl = apiServerUrl;
+
+        PropertyResolver propertyResolver = new PropertyResolver();
+        propertyResolver.loadInputStream(this.getClass().getClassLoader().getResourceAsStream(propertyFile));
+
+        this.zkAddress = propertyResolver.get("zookeeper.connection.url");
+        this.clusterName = propertyResolver.get("helix.cluster.name");
+        this.participantName = propertyResolver.get("participant.name");
+        this.taskTypeName = propertyResolver.get("task.type.name");
+        this.apiServerUrl = propertyResolver.get("api.server.url");
+
         this.restTemplate = new RestTemplate();
     }
 
diff --git a/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/PropertyResolver.java b/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/PropertyResolver.java
new file mode 100644
index 0000000..b1f2e00
--- /dev/null
+++ b/airavata-kubernetes/modules/helix-task-api/src/main/java/org/apache/airavata/helix/api/PropertyResolver.java
@@ -0,0 +1,38 @@
+package org.apache.airavata.helix.api;
+
+import java.io.*;
+import java.util.Properties;
+
+/**
+ * TODO: Class level comments please
+ *
+ * @author dimuthu
+ * @since 1.0.0-SNAPSHOT
+ */
+public class PropertyResolver {
+
+    private Properties properties = new Properties();
+
+    public void loadFromFile(File propertyFile) throws IOException {
+        properties = new Properties();
+        properties.load(new FileInputStream(propertyFile));
+    }
+
+    public void loadInputStream(InputStream inputStream) throws IOException {
+        properties = new Properties();
+        properties.load(inputStream);
+    }
+
+    public String get(String key) {
+        if (properties.containsKey(key)) {
+            if (System.getenv(key.replace(".", "_")) != null) {
+                return System.getenv(key.replace(".", "_"));
+            } else {
+                return properties.getProperty(key);
+            }
+        } else {
+            return null;
+        }
+    }
+
+}
diff --git a/airavata-kubernetes/modules/microservices/helix-controller/pom.xml b/airavata-kubernetes/modules/microservices/helix-controller/pom.xml
index 1613030..27afea4 100644
--- a/airavata-kubernetes/modules/microservices/helix-controller/pom.xml
+++ b/airavata-kubernetes/modules/microservices/helix-controller/pom.xml
@@ -12,8 +12,73 @@
 
     <artifactId>helix-controller</artifactId>
 
-    <dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.5.1</version>
+                <configuration>
+                    <source>${java.version}</source>
+                    <target>${java.version}</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <configuration>
+                    <archive>
+                        <manifest>
+                            <mainClass>org.apache.airavata.helix.HelixController</mainClass>
+                        </manifest>
+                    </archive>
+                    <descriptorRefs>
+                        <descriptorRef>jar-with-dependencies</descriptorRef>
+                    </descriptorRefs>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>make-assembly</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <!-- Create a docker image that runs the executable jar-->
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <version>1.0.0</version>
+                <configuration>
+                    <imageName>${docker.image.prefix}/helix-controller</imageName>
+                    <baseImage>java:openjdk-8-jdk-alpine</baseImage>
+                    <exposes>
+                        <expose>8080</expose>
+                    </exposes>
+                    <entryPoint>["java","-jar","/${project.build.finalName}-jar-with-dependencies.jar"]</entryPoint>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}-jar-with-dependencies.jar</include>
+                        </resource>
+                    </resources>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>build</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
 
+    <dependencies>
         <dependency>
             <groupId>org.apache.helix</groupId>
             <artifactId>helix-core</artifactId>
@@ -31,6 +96,11 @@
             <groupId>org.apache.curator</groupId>
             <artifactId>curator-framework</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.airavata</groupId>
+            <artifactId>helix-task-api</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/airavata-kubernetes/modules/microservices/helix-controller/src/main/java/org/apache/airavata/helix/HelixController.java b/airavata-kubernetes/modules/microservices/helix-controller/src/main/java/org/apache/airavata/helix/HelixController.java
index 50fd82b..1b08e56 100644
--- a/airavata-kubernetes/modules/microservices/helix-controller/src/main/java/org/apache/airavata/helix/HelixController.java
+++ b/airavata-kubernetes/modules/microservices/helix-controller/src/main/java/org/apache/airavata/helix/HelixController.java
@@ -1,9 +1,12 @@
 package org.apache.airavata.helix;
 
+import org.apache.airavata.helix.api.PropertyResolver;
 import org.apache.helix.controller.HelixControllerMain;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.Logger;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.concurrent.CountDownLatch;
 
 /**
@@ -24,10 +27,14 @@ public class HelixController implements Runnable {
     private CountDownLatch startLatch = new CountDownLatch(1);
     private CountDownLatch stopLatch = new CountDownLatch(1);
 
-    public HelixController(String zkAddress, String clusterName, String controllerName) {
-        this.clusterName = clusterName;
-        this.controllerName = controllerName;
-        this.zkAddress = zkAddress;
+    public HelixController(String propertyFile) throws IOException {
+
+        PropertyResolver propertyResolver = new PropertyResolver();
+        propertyResolver.loadInputStream(this.getClass().getClassLoader().getResourceAsStream(propertyFile));
+
+        this.clusterName = propertyResolver.get("helix.cluster.name");
+        this.controllerName = propertyResolver.get("helix.controller.name");
+        this.zkAddress = propertyResolver.get("zookeeper.connection.url");
     }
 
     public void run() {
@@ -77,7 +84,11 @@ public class HelixController implements Runnable {
     }
 
     public static void main(String args[]) {
-        HelixController helixController = new HelixController("localhost:2199", "AiravataDemoCluster", "AiravataController");
-        helixController.start();
+        try {
+            HelixController helixController = new HelixController("application.properties");
+            helixController.start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 }
diff --git a/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/application.properties b/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/application.properties
new file mode 100644
index 0000000..bc3c9db
--- /dev/null
+++ b/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/application.properties
@@ -0,0 +1,3 @@
+zookeeper.connection.url=localhost:2199
+helix.cluster.name=AiravataDemoCluster
+helix.controller.name=AiravataController
diff --git a/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/log4j.properties b/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/log4j.properties
new file mode 100644
index 0000000..5e31e3c
--- /dev/null
+++ b/airavata-kubernetes/modules/microservices/helix-controller/src/main/resources/log4j.properties
@@ -0,0 +1,9 @@
+# Set root logger level to DEBUG and its only appender to A1.
+log4j.rootLogger=INFO, A1
+
+# A1 is set to be a ConsoleAppender.
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+
+# A1 uses PatternLayout.
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
\ No newline at end of file
diff --git a/airavata-kubernetes/modules/microservices/tasks/command-task/pom.xml b/airavata-kubernetes/modules/microservices/tasks/command-task/pom.xml
index a67fefc..bafde96 100644
--- a/airavata-kubernetes/modules/microservices/tasks/command-task/pom.xml
+++ b/airavata-kubernetes/modules/microservices/tasks/command-task/pom.xml
@@ -84,7 +84,6 @@
             <artifactId>helix-task-api</artifactId>
             <version>1.0-SNAPSHOT</version>
         </dependency>
-
         <dependency>
             <groupId>org.apache.helix</groupId>
             <artifactId>helix-core</artifactId>
diff --git a/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/CommandTask.java b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/CommandTask.java
index 16c600e..866c2c7 100644
--- a/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/CommandTask.java
+++ b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/CommandTask.java
@@ -55,7 +55,7 @@ public class CommandTask extends AbstractTask {
             String finalCommand = command + (arguments != null ? arguments : "") + stdOutSuffix;
 
             System.out.println("Executing command " + finalCommand);
-
+            Thread.sleep(200000);
             ExecutionResult executionResult = fetchComputeResourceOperation(computeResource).executeCommand(finalCommand);
 
             if (executionResult.getExitStatus() == 0) {
diff --git a/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/Participant.java b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/Participant.java
index 742ed88..3b7e55e 100644
--- a/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/Participant.java
+++ b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/java/org/apache/airavata/helix/task/command/Participant.java
@@ -6,6 +6,7 @@ import org.apache.helix.task.Task;
 import org.apache.helix.task.TaskCallbackContext;
 import org.apache.helix.task.TaskFactory;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -17,8 +18,9 @@ import java.util.Map;
  */
 public class Participant extends HelixParticipant {
 
-    public Participant(String zkAddress, String clusterName, String participantName, String taskTypeName, String apiServerUrl) {
-        super(zkAddress, clusterName, participantName, taskTypeName, apiServerUrl);
+
+    public Participant(String propertyFile) throws IOException {
+        super(propertyFile);
     }
 
     @Override
@@ -43,11 +45,11 @@ public class Participant extends HelixParticipant {
     }
 
     public static void main(String args[]) {
-        HelixParticipant participant = new Participant(
-                "localhost:2199",
-                "AiravataDemoCluster",
-                "command-p1", CommandTask.NAME,
-                "localhost:8080");
-        new Thread(participant).start();
+        try {
+            HelixParticipant participant = new Participant("application.properties");
+            new Thread(participant).start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 }
diff --git a/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/resources/application.properties b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/resources/application.properties
new file mode 100644
index 0000000..92292ab
--- /dev/null
+++ b/airavata-kubernetes/modules/microservices/tasks/command-task/src/main/resources/application.properties
@@ -0,0 +1,5 @@
+api.server.url=api-server.default.svc.cluster.local:8080
+zookeeper.connection.url=localhost:2199
+helix.cluster.name=AiravataDemoCluster
+participant.name=command-p2
+task.type.name=COMMAND
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-in-task/pom.xml b/airavata-kubernetes/modules/microservices/tasks/data-in-task/pom.xml
index d6c2fe6..a3503ab 100644
--- a/airavata-kubernetes/modules/microservices/tasks/data-in-task/pom.xml
+++ b/airavata-kubernetes/modules/microservices/tasks/data-in-task/pom.xml
@@ -29,7 +29,7 @@
                 <configuration>
                     <archive>
                         <manifest>
-                            <mainClass>org.apache.airavata.helix.task.command.Participant</mainClass>
+                            <mainClass>org.apache.airavata.helix.task.datain.Participant</mainClass>
                         </manifest>
                     </archive>
                     <descriptorRefs>
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/java/org/apache/airavata/helix/task/datain/Participant.java b/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/java/org/apache/airavata/helix/task/datain/Participant.java
index cfbe86a..d804352 100644
--- a/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/java/org/apache/airavata/helix/task/datain/Participant.java
+++ b/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/java/org/apache/airavata/helix/task/datain/Participant.java
@@ -6,6 +6,7 @@ import org.apache.helix.task.Task;
 import org.apache.helix.task.TaskCallbackContext;
 import org.apache.helix.task.TaskFactory;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -17,10 +18,9 @@ import java.util.Map;
  */
 public class Participant extends HelixParticipant {
 
-    public Participant(String zkAddress, String clusterName, String participantName,
-                       String taskTypeName,
-                       String apiServerUrl) {
-        super(zkAddress, clusterName, participantName, taskTypeName, apiServerUrl);
+
+    public Participant(String propertyFile) throws IOException {
+        super(propertyFile);
     }
 
     @Override
@@ -45,11 +45,11 @@ public class Participant extends HelixParticipant {
     }
 
     public static void main(String args[]) {
-        HelixParticipant participant = new Participant(
-                "localhost:2199",
-                "AiravataDemoCluster",
-                "data-in-p1", DataInputTask.NAME,
-                "localhost:8080");
-        new Thread(participant).start();
+        try {
+            HelixParticipant participant = new Participant("application.properties");
+            new Thread(participant).start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 }
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/resources/application.properties b/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/resources/application.properties
new file mode 100644
index 0000000..3f98946
--- /dev/null
+++ b/airavata-kubernetes/modules/microservices/tasks/data-in-task/src/main/resources/application.properties
@@ -0,0 +1,5 @@
+api.server.url=api-server.default.svc.cluster.local:8080
+zookeeper.connection.url=localhost:2199
+helix.cluster.name=AiravataDemoCluster
+participant.name=data-in-p1
+task.type.name=DATA_INPUT
\ No newline at end of file
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-out-task/pom.xml b/airavata-kubernetes/modules/microservices/tasks/data-out-task/pom.xml
index 80c9e87..4f27e24 100644
--- a/airavata-kubernetes/modules/microservices/tasks/data-out-task/pom.xml
+++ b/airavata-kubernetes/modules/microservices/tasks/data-out-task/pom.xml
@@ -29,7 +29,7 @@
                 <configuration>
                     <archive>
                         <manifest>
-                            <mainClass>org.apache.airavata.helix.task.command.Participant</mainClass>
+                            <mainClass>org.apache.airavata.helix.task.dataout.Participant</mainClass>
                         </manifest>
                     </archive>
                     <descriptorRefs>
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/DataOutputTask.java b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/DataOutputTask.java
similarity index 98%
rename from airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/DataOutputTask.java
rename to airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/DataOutputTask.java
index 8426c90..ad6123f 100644
--- a/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/DataOutputTask.java
+++ b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/DataOutputTask.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.helix.task.datain.dataout;
+package org.apache.airavata.helix.task.dataout;
 
 import org.apache.airavata.helix.api.AbstractTask;
 import org.apache.airavata.k8s.api.resources.compute.ComputeResource;
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/Participant.java b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/Participant.java
similarity index 66%
rename from airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/Participant.java
rename to airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/Participant.java
index 8177eb4..a26c654 100644
--- a/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/datain/dataout/Participant.java
+++ b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/java/org/apache/airavata/helix/task/dataout/Participant.java
@@ -1,4 +1,4 @@
-package org.apache.airavata.helix.task.datain.dataout;
+package org.apache.airavata.helix.task.dataout;
 
 import org.apache.airavata.helix.api.HelixParticipant;
 import org.apache.airavata.k8s.api.resources.task.type.TaskTypeResource;
@@ -6,6 +6,7 @@ import org.apache.helix.task.Task;
 import org.apache.helix.task.TaskCallbackContext;
 import org.apache.helix.task.TaskFactory;
 
+import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -17,9 +18,8 @@ import java.util.Map;
  */
 public class Participant extends HelixParticipant {
 
-    public Participant(String zkAddress, String clusterName, String participantName,
-                       String taskTypeName, String apiServerUrl) {
-        super(zkAddress, clusterName, participantName, taskTypeName, apiServerUrl);
+    public Participant(String propertyFile) throws IOException {
+        super(propertyFile);
     }
 
     @Override
@@ -44,11 +44,11 @@ public class Participant extends HelixParticipant {
     }
 
     public static void main(String args[]) {
-        HelixParticipant participant = new Participant(
-                "localhost:2199",
-                "AiravataDemoCluster",
-                "data-out-p1", DataOutputTask.NAME,
-                "localhost:8080");
-        new Thread(participant).start();
+        try {
+            HelixParticipant participant = new Participant("application.properties");
+            new Thread(participant).start();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
     }
 }
diff --git a/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/resources/application.properties b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/resources/application.properties
new file mode 100644
index 0000000..37109d6
--- /dev/null
+++ b/airavata-kubernetes/modules/microservices/tasks/data-out-task/src/main/resources/application.properties
@@ -0,0 +1,5 @@
+api.server.url=api-server.default.svc.cluster.local:8080
+zookeeper.connection.url=localhost:2199
+helix.cluster.name=AiravataDemoCluster
+participant.name=data-out-p1
+task.type.name=DATA_OUTPUT
\ No newline at end of file
diff --git a/airavata-kubernetes/modules/microservices/workflow-scheduler/pom.xml b/airavata-kubernetes/modules/microservices/workflow-scheduler/pom.xml
index 245716a..66974fb 100644
--- a/airavata-kubernetes/modules/microservices/workflow-scheduler/pom.xml
+++ b/airavata-kubernetes/modules/microservices/workflow-scheduler/pom.xml
@@ -45,9 +45,17 @@
             <version>1.0-SNAPSHOT</version>
         </dependency>
 
+
+
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-logging</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
@@ -59,6 +67,11 @@
         </dependency>
 
         <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>jcl-over-slf4j</artifactId>
+            <version>1.7.25</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.helix</groupId>
             <artifactId>helix-core</artifactId>
             <version>0.6.7</version>
diff --git a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/HelixWorkflowManager.java b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/HelixWorkflowManager.java
index 36f66b4..53778ac 100644
--- a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/HelixWorkflowManager.java
+++ b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/core/HelixWorkflowManager.java
@@ -38,20 +38,28 @@ public class HelixWorkflowManager {
     private final RestTemplate restTemplate;
     private String apiServerUrl;
 
+    private String zkConnectionString;
+    private String helixClusterName;
+    private String instanceName;
+
     public HelixWorkflowManager(long processId, List<TaskResource> tasks, Map<Long, Long> edgeMap,
                                 KafkaSender kafkaSender,
-                                RestTemplate restTemplate, String apiServerUrl) {
+                                RestTemplate restTemplate, String apiServerUrl, String zkConnectionString,
+                                String helixClusterName, String instanceName) {
         this.processId = processId;
         this.tasks = tasks;
         this.edgeMap = edgeMap;
         this.kafkaSender = kafkaSender;
         this.restTemplate = restTemplate;
         this.apiServerUrl = apiServerUrl;
+        this.zkConnectionString = zkConnectionString;
+        this.helixClusterName = helixClusterName;
+        this.instanceName = instanceName;
     }
 
     public void launchWorkflow() {
-        org.apache.helix.HelixManager helixManager = HelixManagerFactory.getZKHelixManager("AiravataDemoCluster", "Admin",
-                InstanceType.SPECTATOR, "localhost:2199");
+        org.apache.helix.HelixManager helixManager = HelixManagerFactory.getZKHelixManager(helixClusterName, instanceName,
+                InstanceType.SPECTATOR, zkConnectionString);
 
         try {
             updateProcessStatus(ProcessStatusResource.State.CREATED);
diff --git a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java
index 1ccf1d1..606c20a 100644
--- a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java
+++ b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/java/org/apache/airavata/k8s/gfac/service/WorkerService.java
@@ -54,6 +54,15 @@ public class WorkerService {
     @Value("${api.server.url}")
     private String apiServerUrl;
 
+    @Value("${zookeeper.connection.url}")
+    private String zkConnectionString;
+
+    @Value("${helix.cluster.name}")
+    private String helixClusterName;
+
+    @Value("${instance.name}")
+    private String instanceName;
+
     public WorkerService(RestTemplate restTemplate, KafkaSender kafkaSender) {
         this.restTemplate = restTemplate;
         this.kafkaSender = kafkaSender;
@@ -83,7 +92,9 @@ public class WorkerService {
 
         //processLifecycleStore.put(processId, manager);
 
-        final HelixWorkflowManager helixWorkflowManager = new HelixWorkflowManager(processId, taskResources, edgeMap, kafkaSender, restTemplate, apiServerUrl);
+        final HelixWorkflowManager helixWorkflowManager = new HelixWorkflowManager(processId, taskResources, edgeMap,
+                kafkaSender, restTemplate, apiServerUrl,
+                zkConnectionString, helixClusterName, instanceName);
 
         executorService.execute(new Runnable() {
             @Override
diff --git a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/resources/application.properties b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/resources/application.properties
index c23a904..41b2847 100644
--- a/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/resources/application.properties
+++ b/airavata-kubernetes/modules/microservices/workflow-scheduler/src/main/resources/application.properties
@@ -2,4 +2,8 @@ server.port = 8195
 api.server.url = api-server.default.svc.cluster.local:8080
 scheduler.topic.name = airavata-scheduler
 scheduler.group.name = task-scheduler
-task.event.topic.name = airavata-task-event
\ No newline at end of file
+task.event.topic.name = airavata-task-event
+
+zookeeper.connection.url=localhost:2199
+helix.cluster.name=AiravataDemoCluster
+instance.name=Admin
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/docker/jenkins-docker-kubectl-mvn/Dockerfile b/airavata-kubernetes/scripts/docker/jenkins-docker-kubectl-mvn/Dockerfile
new file mode 100644
index 0000000..544a9d3
--- /dev/null
+++ b/airavata-kubernetes/scripts/docker/jenkins-docker-kubectl-mvn/Dockerfile
@@ -0,0 +1,2 @@
+FROM chadmoon/jenkins-docker-kubectl:latest
+ADD apache-maven-3.5.2 /opt/maven
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml b/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml
index 95c6502..8f61723 100644
--- a/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml
+++ b/airavata-kubernetes/scripts/k8s/api-server/api-server-dep.yml
@@ -18,9 +18,9 @@ spec:
       - name: api-server
         env:
         - name: spring_datasource_username
-          value: airavata-user
+          value: root
         - name: spring_datasource_password
-          value: password
+          value: fun123
         image: dimuthuupe/api-server:v1.0
         ports:
         - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/ci-cd/Jenkinsfile b/airavata-kubernetes/scripts/k8s/ci-cd/Jenkinsfile
new file mode 100644
index 0000000..aaf3a04
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/ci-cd/Jenkinsfile
@@ -0,0 +1,78 @@
+node {
+
+    checkout scm
+
+    env.DOCKER_API_VERSION="1.23"
+
+    sh "git rev-parse --short HEAD > commit-id"
+
+    tag = readFile('commit-id').replace("\n", "").replace("\r", "")
+    registryHost = "192.168.1.114:5000"
+
+    api_server_imageName = "${registryHost}/api-server:${tag}"
+    env.BUILDIMG_API_SERVER=api_server_imageName
+
+    event_sink_imageName = "${registryHost}/event-sink:${tag}"
+    env.BUILDIMG_EVENT_SINK=event_sink_imageName
+
+    helix_controller_imageName = "${registryHost}/helix-controller:${tag}"
+    env.BUILDIMG_HELIX_CONTROLLER=helix_controller_imageName
+
+    task_scheduler_imageName = "${registryHost}/task-scheduler:${tag}"
+    env.BUILDIMG_TASK_SCHEDULER=task_scheduler_imageName
+
+    command_task_imageName = "${registryHost}/command-task:${tag}"
+    env.BUILDIMG_COMMAND_TASK=command_task_imageName
+
+    data_in_task_imageName = "${registryHost}/data-in-task:${tag}"
+    env.BUILDIMG_DATA_IN_TASK=data_in_task_imageName
+
+    data_out_task_imageName = "${registryHost}/data-out-task:${tag}"
+    env.BUILDIMG_DATA_OUT_TASK=data_out_task_imageName
+
+    stage "Build"
+        sh "/opt/maven/bin/mvn -f modules/api-resource/ clean install"
+        sh "/opt/maven/bin/mvn -f modules/compute-resource-api/ clean install"
+        sh "/opt/maven/bin/mvn -f modules/helix-task-api/ clean install"
+        sh "/opt/maven/bin/mvn -f modules/microservices/api-server/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/event-sink/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/helix-controller/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/workflow-scheduler/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/tasks/command-task/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/tasks/data-in-task/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+        sh "/opt/maven/bin/mvn -f modules/microservices/tasks/data-out-task/ clean install docker:build -DdockerImageTags=${tag} -Ddocker.image.prefix=${registryHost}"
+
+    stage "Push"
+
+        sh "docker push ${api_server_imageName}"
+        sh "docker push ${event_sink_imageName}"
+        sh "docker push ${helix_controller_imageName}"
+        sh "docker push ${task_scheduler_imageName}"
+        sh "docker push ${command_task_imageName}"
+        sh "docker push ${data_in_task_imageName}"
+        sh "docker push ${data_out_task_imageName}"
+
+    stage "Deploy"
+
+        sh "sed 's#dimuthuupe/api-server:v1.0#'$BUILDIMG_API_SERVER'#' scripts/k8s/api-server/api-server-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/api-server"
+
+        sh "sed 's#dimuthuupe/event-sink:v1.0#'BUILDIMG_EVENT_SINK'#' scripts/k8s/event-sink/event-sink-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/event-sink"
+
+        sh "sed 's#dimuthuupe/helix-controller:v1.0#'BUILDIMG_HELIX_CONTROLLER'#' scripts/k8s/helix-controller/helix-controller-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/helix-controller"
+
+        sh "sed 's#dimuthuupe/task-scheduler:v1.0#'BUILDIMG_TASK_SCHEDULER'#' scripts/k8s/task-scheduler/task-scheduler-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/task-scheduler"
+
+        sh "sed 's#dimuthuupe/command-task:v1.0#'BUILDIMG_COMMAND_TASK'#' scripts/k8s/command-task/command-task-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/command-task"
+
+        sh "sed 's#dimuthuupe/data-in-task:v1.0#'BUILDIMG_DATA_IN_TASK'#' scripts/k8s/data-in-task/data-in-task-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/data-in-task"
+
+        sh "sed 's#dimuthuupe/data-out-task:v1.0#'BUILDIMG_DATA_OUT_TASK'#' scripts/k8s/data-out-task/data-out-task-dep.yaml | kubectl apply -f -"
+        sh "kubectl rollout status deployment/data-out-task"
+
+}
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/ci-cd/jenkins.yml b/airavata-kubernetes/scripts/k8s/ci-cd/jenkins.yml
new file mode 100644
index 0000000..6f98fc4
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/ci-cd/jenkins.yml
@@ -0,0 +1,76 @@
+kind: PersistentVolume
+apiVersion: v1
+metadata:
+  name: jenkins
+  labels:
+    type: local
+spec:
+  capacity:
+    storage: 2Gi
+  accessModes:
+    - ReadWriteOnce
+  hostPath:
+    path: "/data/jenkins/"
+
+---
+kind: PersistentVolumeClaim
+apiVersion: v1
+metadata:
+  name: jenkins-claim
+spec:
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 2Gi
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: jenkins
+  labels:
+    app: jenkins
+spec:
+  ports:
+    - port: 80
+      targetPort: 8080
+  selector:
+    app: jenkins
+    tier: jenkins
+  type: NodePort
+---
+apiVersion: extensions/v1beta1
+kind: Deployment
+metadata:
+  name: jenkins
+  labels:
+    app: jenkins
+spec:
+  strategy:
+    type: Recreate
+  template:
+    metadata:
+      labels:
+        app: jenkins
+        tier: jenkins
+    spec:
+      containers:
+      - image: dimuthuupe/jenkins-docker-kubectl:v1
+        name: jenkins
+        securityContext:
+          privileged: true
+        ports:
+        - containerPort: 8080
+          name: jenkins
+        volumeMounts:
+        - name: jenkins-persistent-storage
+          mountPath: /root/.jenkins
+        - name: docker
+          mountPath: /var/run/docker.sock
+      volumes:
+      - name: docker
+        hostPath:
+          path: /var/run/docker.sock
+      - name: jenkins-persistent-storage
+        persistentVolumeClaim:
+          claimName: jenkins-claim
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/helix-controller/helix-controller-dep.yml b/airavata-kubernetes/scripts/k8s/helix-controller/helix-controller-dep.yml
new file mode 100644
index 0000000..6dfad3e
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/helix-controller/helix-controller-dep.yml
@@ -0,0 +1,24 @@
+apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
+kind: Deployment
+metadata:
+  name: helix-controller
+  labels:
+    app: helix-controller
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: helix-controller
+  template:
+    metadata:
+      labels:
+        app: helix-controller
+    spec:
+      containers:
+      - name: helix-controller
+        image: dimuthuupe/helix-controller:v1.0
+        env:
+        - name: zookeeper_connection_url
+          value: zk.default.svc.cluster.local:2199
+        ports:
+        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml b/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml
index 283a40b..c731bfb 100644
--- a/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml
+++ b/airavata-kubernetes/scripts/k8s/task-scheduler/task-secheduler-dep.yml
@@ -17,5 +17,8 @@ spec:
       containers:
       - name: task-scheduler
         image: dimuthuupe/task-scheduler:v1.0
+        env:
+        - name: zookeeper_connection_url
+          value: zk.default.svc.cluster.local:2199
         ports:
         - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/command-task/command-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/command-task/command-task-dep.yml
new file mode 100644
index 0000000..04bc4a9
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/tasks/command-task/command-task-dep.yml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
+kind: Deployment
+metadata:
+  name: command-task
+  labels:
+    app: command-task
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: command-task
+  template:
+    metadata:
+      labels:
+        app: command-task
+    spec:
+      containers:
+      - name: command-task
+        image: dimuthuupe/command-task:v1.0
+        env:
+        - name: zookeeper_connection_url
+          value: zk.default.svc.cluster.local:2199
+        - name: participant_name
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        ports:
+        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/data-in-task/data-in-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/data-in-task/data-in-task-dep.yml
new file mode 100644
index 0000000..ca5dfd9
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/tasks/data-in-task/data-in-task-dep.yml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
+kind: Deployment
+metadata:
+  name: data-in-task
+  labels:
+    app: data-in-task
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: data-in-task
+  template:
+    metadata:
+      labels:
+        app: data-in-task
+    spec:
+      containers:
+      - name: data-in-task
+        image: dimuthuupe/data-in-task:v1.0
+        env:
+        - name: zookeeper_connection_url
+          value: zk.default.svc.cluster.local:2199
+        - name: participant_name
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        ports:
+        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/data-out-task/data-out-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/data-out-task/data-out-task-dep.yml
new file mode 100644
index 0000000..8ab80fb
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/tasks/data-out-task/data-out-task-dep.yml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
+kind: Deployment
+metadata:
+  name: data-out-task
+  labels:
+    app: data-out-task
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: data-out-task
+  template:
+    metadata:
+      labels:
+        app: data-out-task
+    spec:
+      containers:
+      - name: data-out-task
+        image: dimuthuupe/data-out-task:v1.0
+        env:
+        - name: zookeeper_connection_url
+          value: zk.default.svc.cluster.local:2199
+        - name: participant_name
+          valueFrom:
+            fieldRef:
+              fieldPath: metadata.name
+        ports:
+        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml
deleted file mode 100644
index a1588a0..0000000
--- a/airavata-kubernetes/scripts/k8s/tasks/egress-staging-task/egress-staging-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: egress-staging-task
-  labels:
-    app: egress-staging-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: egress-staging-task
-  template:
-    metadata:
-      labels:
-        app: egress-staging-task
-    spec:
-      containers:
-      - name: egress-staging-task
-        image: dimuthuupe/egress-staging-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml
deleted file mode 100644
index 85b1c20..0000000
--- a/airavata-kubernetes/scripts/k8s/tasks/env-cleanup-task/env-cleanup-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: env-cleanup-task
-  labels:
-    app: env-cleanup-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: env-cleanup-task
-  template:
-    metadata:
-      labels:
-        app: env-cleanup-task
-    spec:
-      containers:
-      - name: env-cleanup-task
-        image: dimuthuupe/env-cleanup-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml
deleted file mode 100644
index 4e92893..0000000
--- a/airavata-kubernetes/scripts/k8s/tasks/env-setup-task/env-setup-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: env-setup-task
-  labels:
-    app: env-setup-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: env-setup-task
-  template:
-    metadata:
-      labels:
-        app: env-setup-task
-    spec:
-      containers:
-      - name: env-setup-task
-        image: dimuthuupe/env-setup-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml
deleted file mode 100644
index 7e1b6ad..0000000
--- a/airavata-kubernetes/scripts/k8s/tasks/ingress-staging-task/ingress-staging-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: ingress-staging-task
-  labels:
-    app: ingress-staging-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: ingress-staging-task
-  template:
-    metadata:
-      labels:
-        app: ingress-staging-task
-    spec:
-      containers:
-      - name: ingress-staging-task
-        image: dimuthuupe/ingress-staging-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml b/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml
deleted file mode 100644
index 354edc4..0000000
--- a/airavata-kubernetes/scripts/k8s/tasks/job-submission-task/job-submission-task-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: job-submission-task
-  labels:
-    app: job-submission-task
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: job-submission-task
-  template:
-    metadata:
-      labels:
-        app: job-submission-task
-    spec:
-      containers:
-      - name: job-submission-task
-        image: dimuthuupe/job-submission-task:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml b/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml
deleted file mode 100644
index 91a08b6..0000000
--- a/airavata-kubernetes/scripts/k8s/workflow-generator/workflow-generator-dep.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-apiVersion: apps/v1beta2 # for versions before 1.7.0 use apps/v1beta1
-kind: Deployment
-metadata:
-  name: workflow-generator
-  labels:
-    app: workflow-generator
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      app: workflow-generator
-  template:
-    metadata:
-      labels:
-        app: workflow-generator
-    spec:
-      containers:
-      - name: workflow-generator
-        image: dimuthuupe/workflow-generator:v1.0
-        ports:
-        - containerPort: 8080
\ No newline at end of file
diff --git a/airavata-kubernetes/scripts/k8s/zookeeper-service.yml b/airavata-kubernetes/scripts/k8s/zookeeper-service.yml
new file mode 100644
index 0000000..19fbf94
--- /dev/null
+++ b/airavata-kubernetes/scripts/k8s/zookeeper-service.yml
@@ -0,0 +1,24 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: zk
+  labels:
+    name: zk
+spec:
+  ports:
+    - port: 2199
+      targetPort: 2199
+      protocol: TCP
+      name: zk
+---
+
+kind: Endpoints
+apiVersion: v1
+metadata:
+  name: zk
+subsets:
+  - addresses:
+      - ip: 192.168.1.114
+    ports:
+      - port: 2199
+        name: zk
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"commits@airavata.apache.org" <co...@airavata.apache.org>.