在Google Cloud上建立通用数据库的构建方式4 – Kubernetes、SpringBoot和IntelliJ 第1部分 –

我們的團隊正在設計採用全公共雲和微服務架構的下一代後端。

经纬

由于考虑使用PJ和GKE,我决定再次尝试一下之前调整过的Kubernetes配置,以以前的记忆和个人备忘录为参考。
这次只是暂时作为备忘录,

    1. 创建应用程序模板

 

    1. 创建Docker镜像

 

    1. 保存镜像

 

    部署

把它留下直到那个时候。

之前

qian2duan4

这次我们打算制作类似于web代理的东西,但目前我认为可以很好地实现使用α的CloudFunctions等等。
不过,根据经验,随着项目的推进,可能会遇到一些验证问题?或者需要一些用于可视化的工具?我觉得可能需要一定程度上能够自由扩展的方法,所以试着采用了使用kubernetes来管理docker应用程序的方式。由于目前还处于制作原型的阶段,所以未来可能会发生方向上的改变。

还有一个现状部署应用程序的问题

    • SpringBoot

 

    ApacheCamel

我正在考虑使用ApacheCamel和Pojo创建API路由,并使用thymeleaf和Spring的控制器作为可视化工具,在内部调用相同的Pojo,这样代码就会尽量少且清晰。

我打算创建一个SpringBoot应用程序的模板,并在此基础上使用ApacheCamel进行后续开发。

创建应用程序模板

可以使用Maven Archetype来创建,或者在IDE中新建项目并修改pom文件。但我想既然要写文章,就尝试一下之前没试过的方法吧,我决定使用spring.io提供的SPRING INITIALIZR。

スクリーンショット 2016-11-02 22.29.16.png
スクリーンショット 2016-11-02 22.03.44.png

我尝试在Eclipse neon中导入,但是出现了一些错误。我注意到没有安装STS(SpringToolSuit),而且解决错误等等会很麻烦,所以我使用了付费版的IntelliJ。

スクリーンショット 2016-11-02 23.02.54.png
スクリーンショット 2016-11-02 23.07.06.png
スクリーンショット 2016-11-02 23.09.10.png

按照以下结构创建。

    • java 1.8系

 

    • SpringBoot 1.3.6.RELEASE

 

    • 成果物はwar

 

    intelliJ

尽管仍有一些错误出现,但根据修复后的pom如下所示。

<?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>

    <groupId>jp.co.yahoo.zeolite.agent</groupId>
    <artifactId>storeagent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>storeagent</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.3.6.RELEASE</version>
                <configuration>
                    <mainClass>jp.co.yahoo.zeolite.agent.StoreagentApplication</mainClass>
                    <layout>WAR</layout>
                    <executable>true</executable>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

スクリーンショット 2016-11-02 23.50.41.png

一切不费力地站了起来。通过“mvn package”命令成功地创建了war文件,并且这次的创建已经完成了。

将Web容器从嵌入式Tomcat切换到嵌入式Jetty。

默认情况下会启动嵌入式Tomcat,现在尝试切换到Jetty。

在POM中添加以下内容。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
スクリーンショット 2016-11-02 23.57.12.png

切换了。

下一次

因为公司内部后端的公开程度相当高,所以我有些担心。
既然上司和团队都认可了,那就继续推进吧。
下次试着将上述应用程序制作成Docker镜像。

广告
将在 10 秒后关闭
bannerAds