--- /dev/null
+# 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
--- /dev/null
+# 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
</dependencies>
<build>
+ <finalName>backup</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
@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 =
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;
}
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);
}
-server.port = 8090
\ No newline at end of file
+server.port = 8091
\ No newline at end of file