私は現在、タスク管理の目的でRedmineというプロジェクト管理ツールを使っています。Redmineは自分のサーバに入れて動かして使うもので、私は現在Kubernetes上で動かしています。今回は、RedmineをKubernetesで動かす方法について紹介します。Hubで公開されている公式イメージを使用します。通常Redmineの設定として代表的なものにデータベースの設定がありますが、これはファイルの編集によって行います。公式イメージでは環境変数から設定できるようになっているのでそれを使って設定をします。Redmineにはメールを送る機能があり、そのための設定をファイルとして配置することで使うことができるようになります。その他にもアップロードしたファイルなどはVolumeを使ってマウントして永続化する必要があります。今回は以上の設定も合わせてします。最初にアップロードしたファイルを永続化するVolumeの設定をします。どのようなVolumeを使うかで少し設定が変わるのですが、今回はNFSを使った設定を次に書きます。redmine-files-pvVolumeの設定には、PersistentVolumeとPersistentVolumeClaimを使用しました。100GBの容量を確保しました。ここはそれぞれの環境で適切なものを書きましょう。データベース等の設定データベースの設定は、セキュリティのためにSecretを使っています。xxx内容としては、secret_key_baseにはセキュリティのために使われるsecret_keyを、db_hostにはデータベースへの接続のためのホスト、db_nameにはデータベース名、db_usernameにはデータベースに接続するためのユーザ名、db_passwordにはデータベースに接続するためのパスワードをBASE64でエンコードしたものを書きます。メールサーバの設定メールサーバの設定は、環境変数でできないので、ConfigMapを使ってファイルとしてマウントしてそれをコンテナの作成時に適切な場所へコピーして使うというようにしています。"password"設定例として、gmailを使う方法を書きました。それぞれの環境に合わせて書き換えてください。Redmineのデプロイ設定を終えたので、Redmineをデプロイします。Redmineのデプロイでは、Deploymentを使います。redmine-configuration今回、データベースとしてPostgreSQLを使う予定なので、環境変数としてREDMINE_DB_POSTGRESに値を設定しています。MySQLなどの別のデータベースを使う場合はそれに合わせて環境変数の名前を変える必要があります。今回データベースはすでに用意されているものとします。PostgreSQLの用意については説明しません。重要な部分として、commandoとargsを使って、ConfigMapでマウントしたファイルをcpコマンドで適切な場所にコピーしています。これで、メールサーバの設定ができていることになります。アクセスについてRedmineへのアクセスのために、Serviceを用意します。redmineServiceについてはあくまでひとつの例です。環境によって書き換えてください。アクセスすればRedmineを使うことができます。さいごにこれで、RedmineをKubernetesで動かすことができるようになりました。同じようなことをやりたいと思っている人にとって、参考になれば幸いです。テーマで生成されています。