LoginSignup
4
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-11-08

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

経緯

前回の記事の続きです。

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

DockerImage作成

アプリケーションの肉付けは後でやるとして、次はこれをDockerImageにしてみよう。

Dockerfile

Dockerfileの作成に関してはこちらのオフィシャルページを参照

直下にDockerfileを作成
スクリーンショット 2016-11-07 23.34.05.png

Dockerfile
FROM java:8

ENV WAR_FILE_NAME=storeagent-0.0.1-SNAPSHOT.war

VOLUME /tmp
ADD target/$WAR_FILE_NAME app.jar
RUN sh -c 'touch /app.jar'
RUN groupadd spring \
        && useradd -r -g spring spring

USER spring
EXPOSE 80 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
CMD ["start"]

画面系のものは8080でAPIを80で公開する予定なので、両方Exposeする。

DockerImageのコンテナレジストリへの登録

Cloud Shell

Cloud Shell、便利ですね。
javaのバージョンが、1.7になっていたので、1.8に切り替える。

sudo update-alternatives --config java

スクリーンショット 2016-11-08 10.43.18.png

javacも同様

sudo update-alternatives --config javac

build & push

packaging

mvn install

docker build

docker build -t asia.gcr.io/[projectid]/storeagent:0.1.0 .

push image

gcloud docker push asia.gcr.io/zeolite-1196/storeagent:0.1.0

コンテナレジストリに登録する。

スクリーンショット 2016-11-08 11.46.56.png
コンテナレジストリに登録されていることを確認

container作成

create container

gcloud container clusters create "store-agent-asia"  --num-nodes 3 --zone "asia-east1-a" --machine-type "n1-standard-2"  --scopes "compute-rw","storage-ro","bigquery","logging-write","monitoring"

node3でasia-east1-aに作成

credentials 取得

gcloud container clusters get-credentials store-agent-asia --zone asia-east1-a

yamlの用意

スクリーンショット 2016-11-08 14.12.40.png
プロジェクト直下のkubernetesディレクトリに作成

Controller

store-agent-controller.yaml
apiVersion: v1
kind: ReplicationController
metadata:
  name: store-agent
  labels:
    app: store-agent
    role: store-agent-node
    tier: backend
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: store-agent
        role: store-agent-node
        tier: backend
    spec:
      containers:
      - name: store-agent
        image: asia.gcr.io/zeolite-1196/storeagent:0.1.0
        env:
        - name: WAR_FILE_NAME
          value: storeagent-0.0.1-SNAPSHOT.war
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
        ports:
        - containerPort:  8080
        - containerPort:  80

Service

store-agent-service.yaml
kind: Service
apiVersion: v1
metadata:
  name: store-agent-service
  labels:
    app: store-agent
    role: store-agent-node
    tier: backend
spec:
  type: LoadBalancer
  ports:
  - port: 80
    name: webservice
    targetPort: 80
  - port: 8080
    name: console
    targetPort: 8080
  selector:
    app: store-agent
    role: store-agent-node
    tier: backend

レプリケーションコントローラーとサービスの作成

kubectl create -f kubernetes/store-agent-controller.yaml
kubectl create -f kubernetes/store-agent-service.yaml 

確認する

# podリスト取得
kubectl get pods

スクリーンショット 2016-11-08 14.16.10.png

# serviceリスト取得
kubectl get services

スクリーンショット 2016-11-08 14.16.58.png

SpringBootアプリケーションが立ち上がっているかどうか確認する

kubectl logs store-agent-hpvda

スクリーンショット 2016-11-08 14.18.29.png

起動を確認。

スクリーンショット 2016-11-08 14.27.06.png

コンテナもちゃんと作成されてますね。

スクリーンショット 2016-11-08 14.29.47.png

せっかくなのでこれもやってみる

localマシンで実行。もちろんこちらのSDKがinstallされていることが前提。

gcloud components install kubectl

kubectl proxy

スクリーンショット 2016-11-08 14.37.51.png

アクセスするとリッチなダッシュボード

スクリーンショット 2016-11-08 14.39.10.png

以上。

次回

レプリケーションコントローラーの説明やserviceの説明は省きました。
また詳しくレポートする機会があれば載せます。

以上でSpringBootのアプリケーションの作成→Dockerイメージ化→kubernetes管理下におく
というところまで行きました。

次回は上記のアプリケーションにApache Camelを統合してみます。

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