From: khemendra kumar Date: Wed, 3 Feb 2021 19:33:01 +0000 (+0530) Subject: added docker and kubenetes yaml file X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=commitdiff_plain;h=05f96ec2f09c5c51db69ab43db5ecab7d43f3e69;p=ealt-edge.git added docker and kubenetes yaml file Signed-off-by: khemendra kumar Change-Id: I7e0250d3214cb16cd16fe2c4f8116631c095a44d --- diff --git a/example-apps/ROBO/backup_BE/backup-k8s.yaml b/example-apps/ROBO/backup_BE/backup-k8s.yaml new file mode 100644 index 0000000..67524f3 --- /dev/null +++ b/example-apps/ROBO/backup_BE/backup-k8s.yaml @@ -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 index 0000000..80fd89d --- /dev/null +++ b/example-apps/ROBO/backup_BE/docker/Dockerfile @@ -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 diff --git a/example-apps/ROBO/backup_BE/pom.xml b/example-apps/ROBO/backup_BE/pom.xml index 2563951..a6a1958 100644 --- a/example-apps/ROBO/backup_BE/pom.xml +++ b/example-apps/ROBO/backup_BE/pom.xml @@ -107,6 +107,7 @@ + backup org.springframework.boot diff --git a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/backupApplication.java b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/backupApplication.java index 6a83a72..33b79aa 100644 --- a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/backupApplication.java +++ b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/backupApplication.java @@ -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 = diff --git a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/model/Pvcs.java b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/model/Pvcs.java index 75b3011..72b9855 100644 --- a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/model/Pvcs.java +++ b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/model/Pvcs.java @@ -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; } diff --git a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/service/pvcService.java b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/service/pvcService.java index 0a05a79..061abde 100644 --- a/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/service/pvcService.java +++ b/example-apps/ROBO/backup_BE/src/main/java/org/edgegallery/example_app/service/pvcService.java @@ -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); } diff --git a/example-apps/ROBO/backup_BE/src/main/resources/application.properties b/example-apps/ROBO/backup_BE/src/main/resources/application.properties index 91f7491..59a2f3c 100755 --- a/example-apps/ROBO/backup_BE/src/main/resources/application.properties +++ b/example-apps/ROBO/backup_BE/src/main/resources/application.properties @@ -1 +1 @@ -server.port = 8090 \ No newline at end of file +server.port = 8091 \ No newline at end of file