added docker and kubenetes yaml file 52/4152/1
authorkhemendra kumar <khemendra.kumar@huawei.com>
Wed, 3 Feb 2021 19:33:01 +0000 (01:03 +0530)
committerkhemendra kumar <khemendra.kumar@huawei.com>
Wed, 3 Feb 2021 19:33:01 +0000 (01:03 +0530)
Signed-off-by: khemendra kumar <khemendra.kumar@huawei.com>
Change-Id: I7e0250d3214cb16cd16fe2c4f8116631c095a44d

example-apps/ROBO/backup_BE/backup-k8s.yaml [new file with mode: 0644]
example-apps/ROBO/backup_BE/docker/Dockerfile [new file with mode: 0644]
example-apps/ROBO/backup_BE/pom.xml
example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/backupApplication.java
example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/model/Pvcs.java
example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/service/pvcService.java
example-apps/ROBO/backup_BE/src/main/resources/application.properties

diff --git a/example-apps/ROBO/backup_BE/backup-k8s.yaml b/example-apps/ROBO/backup_BE/backup-k8s.yaml
new file mode 100644 (file)
index 0000000..67524f3
--- /dev/null
@@ -0,0 +1,89 @@
+# Copyright 2020 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: backup-be
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      app: backup
+  template:
+    metadata:
+      labels:
+        app: backup
+    spec:
+      volumes:
+        - name: task-pv-storage
+          persistentVolumeClaim:
+            claimName: task-pv-claim
+      containers:
+        - name: backup-be
+          image: khemendra/backup:1.1
+          env:
+            - name: KUBE_CONFIG
+              value: "/usr/app/.kube/config"
+          ports:
+            - containerPort: 8091
+          volumeMounts:
+            - name: task-pv-storage
+              mountPath: "/usr/app/.kube/"
+
+# PV with host path of kubeconfig in VM
+---
+apiVersion: v1
+kind: PersistentVolume
+metadata:
+  name: task-pv-volume
+  labels:
+    type: local
+spec:
+  storageClassName: manual
+  capacity:
+    storage: 1Gi
+  accessModes:
+    - ReadWriteOnce
+  hostPath:
+    path: "/home/root1/.kube/"
+
+# pvc
+---
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: task-pv-claim
+spec:
+  storageClassName: manual
+  accessModes:
+    - ReadWriteOnce
+  resources:
+    requests:
+      storage: 1Gi
+
+# backup-be serice
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: backup-be
+spec:
+  selector:
+    app: backup
+  type: NodePort
+  ports:
+    - port: 8091
+      name: service-port
+      nodePort: 30091
diff --git a/example-apps/ROBO/backup_BE/docker/Dockerfile b/example-apps/ROBO/backup_BE/docker/Dockerfile
new file mode 100644 (file)
index 0000000..80fd89d
--- /dev/null
@@ -0,0 +1,66 @@
+# Copyright 2020 Huawei Technologies Co., Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# FROM swr.ap-southeast-1.myhuaweicloud.com/edgegallery/openjdk:8u201-jdk-alpine
+
+FROM openjdk:11-jre-slim
+# Define all environment variable here
+#ENV JAVA_HOME /usr/lib/jvm/java-1.8-openjdk
+ENV JAVA_HOME /usr/lib/jvm/java-11-openjdk-amd64/bin/java
+
+ENV TZ='Asia/Shanghai'
+ENV APP_FILE backup.jar
+ENV APP_HOME /usr/app
+ENV UID=166
+ENV GID=166
+ENV USER_NAME=eguser
+ENV GROUP_NAME=eggroup
+ENV ENV="/etc/profile"
+
+# # CREATE APP USER ##
+# Set umask
+RUN sed -i "s|umask 022|umask 027|g" /etc/profile
+
+# Create the home directory for the new app user.
+RUN mkdir -p /usr/app
+RUN mkdir -p /usr/app/bin
+
+# Create an app user so our program doesn't run as root.
+RUN apt-get update &&\
+#    apt-get add shadow &&\
+    groupadd -r -g $GID $GROUP_NAME &&\
+    useradd -r -u $UID -g $GID -d $APP_HOME -s /sbin/nologin -c "Docker image user" $USER_NAME
+
+WORKDIR $APP_HOME
+
+RUN chmod 750 $APP_HOME &&\
+    chmod -R 550 $APP_HOME/bin &&\
+    mkdir -p -m 750 $APP_HOME/config &&\
+    mkdir -p -m 750 $APP_HOME/log &&\
+    mkdir -p -m 750 $APP_HOME/packages &&\
+    mkdir -p -m 700 $APP_HOME/ssl &&\
+    mkdir -p -m 700 $APP_HOME/.kube &&\
+    chown -R $USER_NAME:$GROUP_NAME $APP_HOME
+
+COPY --chown=$USER_NAME:$GROUP_NAME /target/*.jar $APP_HOME/bin
+COPY --chown=$USER_NAME:$GROUP_NAME config $APP_HOME/.kube
+
+EXPOSE 8091
+
+# Change to the app user.
+USER $USER_NAME
+
+# Execute script & application
+ENTRYPOINT ["sh", "-c"]
+CMD ["exec java -jar ./bin/backup.jar"]
\ No newline at end of file
index 2563951..a6a1958 100644 (file)
   </dependencies>
 
   <build>
+    <finalName>backup</finalName>
     <plugins>
       <plugin>
         <groupId>org.springframework.boot</groupId>
index 6a83a72..33b79aa 100644 (file)
@@ -24,8 +24,9 @@ public class backupApplication {
     @Bean
     public static void apiclient() throws IOException {
         // file path to your KubeConfig
-        String homePath = System.getenv("HOME");
-        String kubeConfigPath = homePath + "/.kube/config";
+        //String homePath = System.getenv("HOME");
+        //String kubeConfigPath = homePath + "/.kube/config";
+        String kubeConfigPath = System.getenv("KUBE_CONFIG");
 
         // loading the out-of-cluster config, a kubeconfig from file-system
         ApiClient client =
index 75b3011..72b9855 100644 (file)
@@ -1,96 +1,22 @@
 package org.edgegallery.example_app.model;
 
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
 public class Pvcs {
     private String namespace;
     private String name;
-    private String ready;
     private String status;
-    private String restarts;
+    private String volume;
+    private String capacity;
+    private String accessmodes;
+    private String storageclass;
     private String age;
-    private String ip;
-    private String node;
-    private String nominated;
-    private String readiness;
-
-
-    public String getNamespace() {
-        return namespace;
-    }
-
-    public void setNamespace(String namespace) {
-        this.namespace = namespace;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getReady() {
-        return ready;
-    }
-
-    public void setReady(String ready) {
-        this.ready = ready;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getRestarts() {
-        return restarts;
-    }
-
-    public void setRestarts(String restarts) {
-        this.restarts = restarts;
-    }
-
-    public String getAge() {
-        return age;
-    }
-
-    public void setAge(String age) {
-        this.age = age;
-    }
-
-    public String getIp() {
-        return ip;
-    }
-
-    public void setIp(String ip) {
-        this.ip = ip;
-    }
-
-    public String getNode() {
-        return node;
-    }
-
-    public void setNode(String node) {
-        this.node = node;
-    }
-
-    public String getNominated() {
-        return nominated;
-    }
-
-    public void setNominated(String nominated) {
-        this.nominated = nominated;
-    }
-
-    public String getReadiness() {
-        return readiness;
-    }
-
-    public void setReadiness(String readiness) {
-        this.readiness = readiness;
-    }
-
+    private String volumemode;
 }
index 0a05a79..061abde 100644 (file)
@@ -40,9 +40,17 @@ public class pvcService {
             pvcsDetail.setNamespace(item.getMetadata().getNamespace());
             pvcsDetail.setName(item.getMetadata().getName());
             pvcsDetail.setStatus(item.getStatus().getPhase());
-            //pvcsDetail.setIp(item.getStatus().getPodIP());
-            //pvcsDetail.setNode(item.getSpec().getNodeName());
-            pvcsDetail.setReadiness("null");
+
+            pvcsDetail.setVolume(item.getSpec().getVolumeName());
+            pvcsDetail.setVolumemode(item.getSpec().getVolumeMode());
+           //TODO: getAccessModes return list of string, need to check
+            // pvcsDetail.setAccessmodes(item.getSpec().getAccessModes());
+            pvcsDetail.setStorageclass(item.getSpec().getStorageClassName());
+
+          //  pvcsDetail.setAge(item.getStatus().getConditions().getLastTransitionTime());
+            //TODO: getCapacity is a map. need to get quantity from map and fill
+            //pvcsDetail.setCapacity(item.getStatus().getCapacity());
+            pvcsDetail.setAge("null");
             pvcslistElement.add(pvcsDetail);
         }