GKEでRedmineサーバーを立てる〜(1)基本編

みなさん、こんにちは。エンジニアの蔵谷です。
今回はGKEについて書きたいと思います。
なぜGKEについて勉強始めたかというと、現在BeaconBankをAppEngineで運営しているのですが・・・、ユーザーが大量に増えインフラ代が5倍に跳ね上がってしまいアーキテクチャを見直すことになりました。最近、Kubernetesが流行っているし、個人的にも使ってみたかったし、コストも安くなりそうだしという理由でGKEに移行することにしました。やりたいことを即実行できるのがベンチャーのいいところですねw
そこで、勉強も兼ねてRedmineサーバーをGKEにリプレイスするということをしました。
Kubernetesとは
コンテナ化したアプリケーション(RedmineやMySQL等)のデプロイ、スケール、管理を自動化するためのプラットフォームです。Google社内で利用されていた「Borg」というクラスタ管理システムが元になっており、現在はKubernetesとしてオープンソース化されています。
Kubernetesの登場人物について
コンテナ(Container)
アプリケーションと実行環境をパッケージングしたもの。例えば、WordPressコンテナには、 WordPress本体とPHP実行環境が含まれています。
ノード(Node)
仮想サーバーまたは、物理サーバーのこと。それぞれのノードにはIPが設定されています。
クラスタ(Cluster)
ノードが集まったもの。ノードがスライムだとしたら、クラスタはキングスライムです。
ポッド(Pod)
最小のKubernetesオブジェクトのこと。コンテナが集まったものをポッドと言います。
図で表すとこんな感じ。

Kubernetsのメリット
・オートスケール
Clusterが常にリソース状況を監視しており、リソースが足りなければノードを追加したりしてくれるので、サーバーダウンで利用できなくなるということがほぼ無い。
・耐障害性
何らかの原因でNodeがダウンした場合、Clusterが検知し自動でNodeを立ち上げてくれます。
・無停止でのバージョンアップ
新機能をリリースした場合、ノード単位でバージョンアップができるためサーバー停止が必要ありません。障害時のダウングレードも同様です。
次回からRedmineサーバー構築に入っていきます。
1件のピンバック
GKEでRedmineサーバーを立てる〜(2)下準備編 – ウネリ技術ブログ