こんにちは、最近ガレージハウスに興味がある蔵谷です。

前回からの続きで、今回は実際にRedmineサーバー構築していきます。

構成

上記のような構成で作っていきます。データベースとして、CloudSQLを使っていますが、MySQL Podを作ってもいいかなと思います。ただ、データバックアップとか容量追加とか色々自動でやってくれて便利なので、個人的にはCloudSQL使うのがオススメです。

Clusterを作る

Clusterの中に最大2個のNodeが入る構成となっています。

GKEでは2種類のNodeが作ることができます。通常のNodeとプリエンプティブNodeと呼ばれるものです。プリエンプティブNodeは、最大24時間で消えるノードのことです。GCPの余剰リソースを使って立てられるので、必ず立ち上がる保証はないのですが、通常Nodeの約20%の値段で運用できます。プリエンプティブNodeを使う場合は、今回のようにサブとして使うのがいいと思います。

以下がクラスターを作るコマンドです。

Cloud SQLインスタンスを作る

データベースとして、CloudSQL(MySQL)インスタンスを立てます。インスタンス名は「redmine-db」、データベース名は「redmine_production」としておきます。以下がコマンドです。

Cloud SQL Proxyを作る

CloudSQLに接続する方法として、以下が用意されています。

・グローバルIPアドレスをホワイトリストに設定する。

・CloudSQL Proxyを使う。

今回は、安全で簡単なCloudSQL Proxyを使う方法を使いましょう。

まず、Pod – Cloud SQL Proxy間の接続で使うサービスアカウントを作り、鍵ファイルをダウンロードしましょう。

次に、CloudSQL Proxyで使うMySQLユーザーを作ります。

次に、シークレットを作ります。シークレットとは、パスワード等の秘密情報を集中管理するデータベースのことです。この情報は、Pod/Containerからのみアクセスできます。

以下のようなコマンドでyamlファイルを取得できたら、登録が成功しています。

Cloud Storageを作る

GCPコンソール上から適当な名前のバケットを作ります。作成したらバケット権限の編集で以下の権限を追加します。

ユーザー与える権限
allUsersストレージのオブジェクト管理者

バケット全体をネット上に公開してしまうので、あまり良くないのですが、今回はこの設定で構築します。もっといい方法あれば教えてください!

メール設定をする

GCPのVMはメール送信で使用するポートが塞がれています。なので、外部のメールサービスを使います。GCP的には、SendGrid推奨っぽいので、SendGridを使います。アカウントが無い方は作っておきましょう。

長くなってしまったので、今回はここまで(構築までできなかった・・・)。次回は、Pod生成に必要なyamlの説明等していきます。