2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GoogleCloudで汎用Database構築4 - kubernetes & SpringBoot & intelliJ その1 -

Last updated at Posted at 2016-11-02

GYAOのtsです。
我々のチームは、オールパブリッククラウドで、Microservice Architectureを採用した次期バックエンドを設計中です。

経緯

PJでGKEを使用する方向になったので以前いじっていた記憶と自分用メモを参考に再度kubernetesをいじってみる。
今回はとりあえず、備忘録として、

  1. アプリケーション雛形作成
  2. DockerImage作成
  3. imageの保存
  4. deploy

までを残しておく。

前段

今回はweb proxyのようなものを作っていくのだが、現時点ではαのCloudFunctions等を使ってもきれいに実現できると思う。
ただ、経験上おそらく進めていくうちに、validationは?とか、可視化するためのtoolは?みたいなことになってきそうな気がしていて、ある程度自由度が高く拡張ができてほしいので試しにdockerアプリケーションをkubernetesで管理するような方法を取った。まだプロトを作っていく段階なので今後の方向転換は十分有り得る。

また、現状デプロイするアプリケーションは

  • SpringBoot
  • ApacheCamel

で考えている。ApacheCamelとPojoでAPIとなるRouteを作成し、可視化ツールとしてはthymeleafとSpringのコントローラーで内部的にはCamelと同じPojoを呼ぶような感じにすると、極力コードも少なくなってきれいかなと。
今回はSpringBootアプリケーションの雛形の作成を行い、それを使う。そこにApacheCamelで次回以降、肉付けしていこうと思う。

アプリケーション雛形作成

maven archetypeで作っったり、IDEからnew projectしてpomを書き換えてもいいのだが、せっかく記事に残すので試したことのない方法でやってみようかなと思い、spring.ioで出しているSPRING INITIALIZRを使用する。

まさに今回のような雛形を作成するサービス
SPRING INITIALIZR
あまり説明するようなところはない直感的なサービスなので説明は割愛する。裏ではmaven archetypeで作ってるんだろうな。。。
以下の構成で作成。
スクリーンショット 2016-11-02 22.29.16.png

dependencyは以下。spring-boot-starter-jettとか入れたかったが、候補に出てこなかったのでとりあえず以下で作成。(後ほど気付いたが、下の方に細かい設定ができる箇所があった。)
スクリーンショット 2016-11-02 22.03.44.png

Eclipse neonにimportしてみたが、なんかエラーがでる。。。
STS(SpringToolSuit)を入れていないことにも気づき、エラーの解消等も今回は面倒なので、有償版のIntelliJを使用した。

なんか、同じことができる。やってみよう。
スクリーンショット 2016-11-02 23.02.54.png

スクリーンショット 2016-11-02 23.07.06.png 画像はjarだけど、この時点でPackagingはwarにしておいたほうがいいですね。 スクリーンショット 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>

  • Fully executable jarsにしたいのでexecutable trueにする。
  • intelliJでMaven経由で立ち上げるときはspring-boot:run ゴールを実行する。
スクリーンショット 2016-11-02 23.50.41.png

普通に立ち上がった。mvn packageでwarを作成して今回は作成完了。

webコンテナをembedded tomcatからembedded jettyへ切り替え

デフォルトだとembedded tomcatが立ち上がるので、jettyに切り替えてみる。

pomに下記を追加

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

切り替わった。

次回

かなり赤裸々に社内のバックエンドを公開しているので少し心配になってきた。
上司もチーム内も公認なのでこのまますすめてみよう。
次回は上記のアプリケーションをDockerImageにしてみる。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?