Use Kubernetes on GCP

Springboot on ContainerUsing JNR on Containerの続きの内容です。

構成図の通り、GCPGKE(Google Kubernetes Engine)を使ってみようと思います。

今回はGUIでボタンを押していくだけで出来ました。

1. Technical Elements

  • Spring Boot
    • Spring Framework ベースのアプリケーションを手軽に作成することができるフレームワーク
  • Docker
    • コンテナ仮想化を用いた OS レベルの仮想環境の構築ツール
  • GoogleContainerTools/jib: 🏗
    • jib-gradle-plugin
    • Java アプリケーションを実行する Docker コンテナイメージを簡単に作成するためのツール
  • GCP(Google Cloud Platform)
    • Google が提供しているクラウドコンピューティングサービス
      • Google 検索や YouTube などでも同じインフラストラクチャーが利用されている。
  • GKE(Google Kubernetes Engine)
    • Google が開発した、現在オープンソース化されている Kubernetes をベースとしたコンテナ環境です。
  • jnr/jnr-ffi
    • Javaから簡単にCのライブラリを呼び出せるフレームワーク

2. Settings of Each Technical Element

2.1. Cluster

以下のような事項を決めていきます。

(参考:クラスタの作成  |  Kubernetes Engine のドキュメント  |  Google Cloud

  • 名前
  • ロケーション タイプ
  • ノードのマシンタイプ
  • ブートディスクの種類/サイズ
  • スケーリングの設定
    • 最低ノード数/最大ノード数
    • 垂直ポッド自動スケーリングの可否
  • 各GCPのAPIに対してのアクセス権限の設定
    • Compute Engine
    • ストレージ
    • タスクキュー
    • BigQuery
    • Cloud SQL

2.2. Workload

以下のような事項を決めていきます。

(参考:ワークロードのデプロイの概要  |  Kubernetes Engine のドキュメント  |  Google Cloud

  • コンテナイメージの選択
    • Google Container Registryにimageを登録してあれば、そこから選択できる。
    • 今回は、SpringBoot/JNR/Cライブラリ(.so)/JDBC(MySQL)を含むイメージを選択した。
  • 環境変数の設定
  • アプリケーション名の設定

2.3. Ingress

以下のような事項を決めていきます。

(参考:Ingress を使用した HTTP(S) 負荷分散  |  Kubernetes Engine のドキュメント  |  Google Cloud

  • Ingressタイプの設定
  • ホストとパスルールの構成の設定

2.4. Logging

AWSのCloudWatchやAzureのAzure Monitorと同じように、 各サービスや、K8Sの各podのログをかき集めてくれる。

(参考:Cloud Logging のドキュメント  |  Google Cloud