【kubernetes】RailsをGoogle Kubernetes Engine(GKE)にデプロイ

Kubernetes

こんにちは!エンジニアの大石です。

今回は、RailsのDockerイメージをGoogle Kubernetes Engine(GKE)にデプロイしてみました。

紹介するDokerコンテナの構成は、

  • Ruby on Rails → 自前で作成したコンテナイメージ
  • MariaDB(MySQL) → Helmを利用

としました。

GKEにRailsをデプロイする

クラウド上のGKEを操作する場合でも、ローカル作業と変わりなく操作可能です。

意識すべきは、kubectlコマンドを使うコンテキスト(操作対象のk8sクラスタ)をどこなのか?

くらいなので、GKEだから難しいということはありません。

GKEを作成する

はじめに、GKEクラスタを作成します。

今回は、サンプル用なので、

  • マシンタイプ = g1-smal
  • ノード数 = 1

としました。

GKEクラスタを作成するためには、

  • gcloud container clusters create クラスタ名 –machine-type=マシンタイプ –num-nodes=ノード数

を実行します。

GKEクラスタを作成:

kubectlでGKEを操作できるようにする

先ほど作成した、GKEクラスタをローカルのkubectlコマンドで利用するために、コンテキストを切り替えます。

GKEクラスタを操作する準備:

kubecrlコマンドでGKEが操作できるようになったので、ノードを確認してみましょう。

kubectl get nodes:

操作対象のコンテキストを切り替えるにはkubectl config use-context を使います。

MariaDB(MySQL)をデプロイする

Helmを使ってMaridDB(MySQL)をインストールします。

config.yaml:

デプロイできたことを確認してみましょう。

なお、HelmでMariaDBを使うための詳細については、こちらで詳しく詳細しています。

Railsをデプロイする

RailsをGKEにデプロイする手順を紹介します。

はじめに、RailsがMariaDB(MySQL)にアクセスするためのパスワードをsecretリソースで作成します。

  • kubectl create secret generic 名前 –from-literal=キー=値

create secret:

Deploymentリソースのマニフェストを作成します。

Dockerイメージは、makotooishi/myrails:latest を使います。

MariaDB(MySQL)のパスワードは、先ほど作成したsecretを使って環境変数で参照できるようにしています。

myrails_deployment.yaml:

デプロイします。

なお、RailsのDokerイメージの作り方は、こちらで詳しく紹介しているので、参照してみてください。

Railsの初期設定をする

初回はDBスキーマ作成をします。

Railsサービスをインターネット上に公開する

インターネット上に公開するために、Serviceリソースをデプロイします。

httpsを使ったりセッションを使うクラスタはIngrassが必要ですが別の機会で紹介します。

myrails_service.yaml:

しばらくすると、IPアドレスが割り当てられて、ブラウザからアクセスができると思います。

ブラウザでアクセスしてみましょう。

このように、GKEにRailsをデプロイすることができました。

ぜひ、挑戦してみてください!