Add container module & helm charts

This commit is contained in:
Alexander Sharov 2018-09-25 21:04:31 +04:00
parent 583f101a0c
commit 465a4c841d
12 changed files with 372 additions and 11 deletions

13
pom.xml
View file

@ -4,19 +4,20 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>udc-petclinic</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>UDC :: Petclinic</name>
<parent> <parent>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version> <version>2.0.4.RELEASE</version>
</parent> </parent>
<groupId>org.springframework.samples</groupId>
<artifactId>udc-petclinic</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>UDC :: Petclinic</name>
<modules> <modules>
<module>udc-backend</module> <module>udc-backend</module>
<!--<module>udc-containers</module>-->
</modules> </modules>
</project> </project>

View file

@ -4,17 +4,15 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.samples</groupId>
<artifactId>udc-backend</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>UDC :: Petclinic :: Backend</name>
<parent> <parent>
<groupId>org.springframework.samples</groupId> <groupId>org.springframework.samples</groupId>
<artifactId>udc-petclinic</artifactId> <artifactId>udc-petclinic</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
</parent> </parent>
<artifactId>udc-backend</artifactId>
<name>UDC :: Petclinic :: Backend</name>
<properties> <properties>
<!-- Generic properties --> <!-- Generic properties -->
<java.version>1.8</java.version> <java.version>1.8</java.version>

117
udc-containers/pom.xml Normal file
View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.samples</groupId>
<artifactId>udc-petclinic</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>udc-containers</artifactId>
<name>UDC :: Containers :: Parent</name>
<packaging>pom</packaging>
<modules>
<module>udc-backend-service</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<docker.skip.build>true</docker.skip.build>
<docker.skip.push>true</docker.skip.push>
<docker.baseImage>TODO</docker.baseImage>
<docker.repository>university-course</docker.repository>
<docker.registry.host>localhost</docker.registry.host>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-docker-resources</id>
<phase>none</phase>
<goals>
<goal>resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/context</outputDirectory>
<includeEmptyDirs>true</includeEmptyDirs>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>docker-build</id>
<phase>none</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<skip>${docker.skip.build}</skip>
<executable>docker</executable>
<arguments>
<argument>build</argument>
<argument>-t</argument>
<argument>
${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version}
</argument>
<argument>${project.build.directory}/context</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>docker-push</id>
<phase>none</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<skip>${docker.skip.push}</skip>
<executable>docker</executable>
<arguments>
<argument>push</argument>
<argument>
${docker.registry.host}/${docker.repository}/${project.artifactId}:${project.version}
</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
<profiles>
<profile>
<id>image</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<docker.skip.build>false</docker.skip.build>
<docker.skip.push>false</docker.skip.push>
</properties>
</profile>
</profiles>
</project>

View file

@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.samples</groupId>
<artifactId>udc-containers</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>
<artifactId>udc-backend-service</artifactId>
<name>UDC :: Containers :: Backend</name>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-docker-resources</id>
<phase>install</phase>
<goals>
<goal>resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>package</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>TODO</groupId>
<artifactId>TODO</artifactId>
<version>${project.version}</version>
<type>jar</type>
<overWrite>true</overWrite>
<outputDirectory>${project.basedir}/target/context</outputDirectory>
<destFileName>${project.artifactId}.jar</destFileName>
</artifactItem>
</artifactItems>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>docker-build</id>
<phase>install</phase>
</execution>
<execution>
<id>docker-push</id>
<phase>deploy</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View file

@ -0,0 +1,14 @@
FROM ${docker.baseImage}
EXPOSE 8080
ENTRYPOINT ["/docker-entrypoint.sh"]
WORKDIR "/udc/apps/petclinic"
COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
COPY todo.jar /udc/apps/petclinic/todo.jar
LABEL project.groupid="${project.groupId}" \
project.artifactid="${project.artifactId}" \
project.version="${project.version}"

View file

@ -0,0 +1 @@
#!/bin/bash

View file

@ -0,0 +1,15 @@
FROM jenkinsci/jnlp-slave
ENV CLOUDSDK_CORE_DISABLE_PROMPTS 1
ENV PATH /opt/google-cloud-sdk/bin:${PATH}
USER root
RUN apt-get update -y
RUN apt-get install -y jq \
libapparmor-dev \
libseccomp-dev \
unzip
RUN curl https://sdk.cloud.google.com | bash && mv google-cloud-sdk /opt
RUN gcloud components install kubectl
RUN curl -sfSL https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash

View file

@ -0,0 +1,11 @@
name: jenkins
description: Jenkins CI for UDC
version: 1.0.0
keywords:
- cicd
sources:
- https://github.com/kvendingoldo/udc-petclinic
maintainers:
- name: Alex Sharov
email: kvendingoldo@gmail.com
engine: gotpl

View file

@ -0,0 +1,45 @@
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ .Values.component.name }}
labels:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}
spec:
replicas: 1
template:
metadata:
name: {{ .Values.component.name }}
labels:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}
spec:
containers:
- name: {{ .Values.component.container.name }}
image: {{ .Values.component.container.image }}
imagePullPolicy: Always
ports:
- containerPort: 8080
protocol: TCP
- containerPort: 50000
protocol: TCP
env:
- name: JENKINS_SLAVEPORT
value: '50000'
- name: JAVA_VM_PARAMETERS
value: '-Xmx3072m -Xms256m'
- name: JAVA_OPTS
value: '-Djava.util.logging.config.file=/var/jenkins_home/log.properties'
volumeMounts:
- name: jenkins-persistent-storage
mountPath: /var/jenkins_home
subPath: jenkins_home
volumes:
- name: jenkins-persistent-storage
persistentVolumeClaim:
claimName: {{ .Values.component.name }}-pvc

View file

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.component.name }}-ui
spec:
type: LoadBalancer
loadBalancerIP: {{ .Values.component.external.ip }}
selector:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}
ports:
- protocol: TCP
port: {{ .Values.component.external.port }}
targetPort: 8080
name: ui
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.component.name }}-discovery
spec:
type: LoadBalancer
loadBalancerIP: {{ .Values.component.external.ip }}
selector:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}
ports:
- protocol: TCP
port: 50000
targetPort: 50000
name: slaves

View file

@ -0,0 +1,37 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ .Values.component.name }}-pv
labels:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}
spec:
capacity:
storage: 15Gi
accessModes:
- ReadWriteMany
gcePersistentDisk:
pdName: {{ .Values.component.volume.name }}
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Values.component.name }}-pvc
spec:
accessModes:
- ReadWriteMany
storageClassName: ""
resources:
requests:
storage: 15Gi
selector:
matchLabels:
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.component.name }}

View file

@ -0,0 +1,10 @@
component:
name: jenkins
container:
name: udc-jenkins
image: jenkins/jenkins:lts
external:
ip: 104.199.74.83
port: 8080
volume:
name: udc-infra-jenkins-pd