–ツイートシェアはてブ送るPocketこの記事は公開されてから半年以上経過しています。情報が古い可能性がありますので、ご注意ください。データベースの管理にどのようなツールを利用していますか?よく使われているのはphpMyAdminでしょうか?phpMyAdminに代わるデータベース管理ツールとして、Adminer(https://www.adminer.org/)があります。Adminerは1つのPHPファイルだけで構成されているので、インストールや設定が非常に簡単にできます。Kubernetes上など、コンテナ管理のプラットフォーム上にAdminerをインストールしたい場合は、どのようにしたらよいのでしょうか。本記事では、AdminaerをKubernetes上にHelmでインストールする方法をご紹介します。Adminerとは?AdminerはphpMyAdminとおなじPHP上で動作するWebUIのデータベース管理ツールです。MySQL以外にもPostgreSQLやOracleにも対応している。1つのPHPファイルだけで構成されていて、サイズも小さい。1つのPHPファイルを置くだけで、設定はいらない。phpMyAdminと比較して、機能やパフォーマンス、セキュリティなどに大きな違いがあります。古いデータですが、phpMyAdminとAdminerの機能を比較した資料(https://www.adminer.org/en/phpmyadmin/)が公開されています。phpMyAdminのパフォーマンスに不満を持っているのであれば、Adminerを検討してみてはいかがでしょうか?Adminerのインストールは簡単です。Adminerは1つのPHPだけで構成されています。既存のPHPが動作するWebサーバがあれば、Adminerをダウンロードして、Webサーバに配置するだけでインストールは完了です。公式でDockerイメージ(https://hub.docker.com/_/adminer)も提供されているので、コンテナとして動作させることもできます。本記事では、公式のDockerイメージは利用しないで、独自のDockerイメージを利用してKubernetes上にインストールします。Unitを利用する構成です。Unitを1つのPODとして動作させます。構成のイメージ図は以下の通りです。今回の記事では、LoadBalancer(Ingress)の部分は説明していません。外部からのアクセスでIngressを利用する場合は、利用するのKubernetes環境に合わせて設定を行ってください。Dockerfileを作るAdminerは公式のDockerイメージが提供されています。UnitのDockerイメージが必要になります。Unitも公式のDockerイメージが提供されていますが、PDOなどのデータベース接続モジュールがインストールされていません。このため、独自のDockerfileを作ることにします。Unitのインストール手順(http://unit.nginx.org/installation/)に従っています。作ったDockerfileは以下のようになります。Hubでも公開しているので、参考にしてください。Dockerファイルを作成したら、DockerのビルドコマンドでDockerイメージを作成します。タグ名はご利用の環境やプロジェクトに合わせて、変更をしてください。Hubでも配布しているので、参考にしてください。Chartを作成します。Chartの概要と構成のポイントを説明します。ChartはGitHubで公開しているので参考にしてください。Helmをインストールしていない場合は、HelmクライアントとHelmサーバ(Tiller)のインストールが必要です。Helmのインストールと設定が終わっていない場合は、Helmのインストールと設定を先に完了させておいてください。Helmのインストールと設定方法は、別のブログ記事を参考にしてください。Unitの設定ファイルを定義しています。}}-adminer-nginx-confとして定義されたデータはNginxのdefault.confにマッピングされます。Nginxの設定を変更したい場合は、このデータ部分を修正してください。http://localhost/adminer)でAdminerにアクセスしてくる想定となっています。プレフィックスなしや異なるプレフィックスでアクセスさせる場合は、proxy_set_headerの部分をご利用の環境に合わせて修正してください。Unit用の設定ファイルです。Unitはこのファイルの内容をAPIにPUTすることで設定を動的に反映させます。UnitのAPIへのPUT処理は、次に説明するdeployment.yaml内で定義しています。}取得するデータ量が多いなど、タイムアウトが発生する場合はtimeoutの値などを変更してください。Unitの設定は従来のファイルベースの設定とは異なり、APIにPUTすることで設定を動的に反映させます。APIへのPUTはKubernetesのライフサイクルにおけるpostStartを利用しておこなっています。以下は、deployment.yamlファイルのlifecycle部分の抜粋です。http://localhost/config"postStartでコンテナが作成された後に実行するコマンドを定義していきます。はじめにAdminerのファイルを公式ページからダウンロードしています。Unitの起動まで待機させています。これは、コンテナのEntrypointの実行前にpostStartが実行される保証がないからです(参考リンク)。Unit(Entrypoint)が実行されたかの確認を行うためにソケットの存在確認を行っています。Unitの設定内容をPUTし、設定を反映させます。deployment.yamlの全内容は、GitHub上のファイルを参照してください。installコマンドでadminerをKubernetes上にインストールします。Chartは以下のリポジトリにおいてあります。このリポジトリを利用する場合は、初めにリポジトリの登録をおこなってください。https://easydoggie.github.io/helm-repo/releasesリポジトリの登録の完了後、以下のコマンドでkubernetes上にAdminerのインストールを行うことができます。easydoggie/adminerデプロイ後にWebブラウザからアクセスし、以下の画面が表示されればインストールは成功です。サーバにはデータベースへ接続するKubernetesのService名などを指定してください。さいごに本記事では、AdminerをKubernetes上にHelmでインストールする方法を紹介しました。Adminerはインストールや設定が非常に簡単で、軽量であるため、phpMyAdminの代替として十分な力を発揮してくれます。Adminerを試してみてください。Unitを利用したインストール例を紹介しました。UnitをKubernetes上で動かす例としても利用できます。Unitの設定や動作事例は少ないですが、多言語対応を単一の設定で動作できるので、コンテナとの相性がよさそうです。今回作成したコードはGitHubでも公開しているので、参考にしてください。スカイアーチネットワークス株式会社AWS・クラウド導入における構築から監視・運用保守までをマネージドサービスで提供する、スカイアーチネットワークスの公式サイト。AWS・クラウドを始め、豊富なサーバー管理の経験と安心のセキュリティ対策、専門エンジニアの確かな知識で、お客様のビジネスの成長をサポートします。AWS・クラウド導入における構築から監視・運用保守までをマネージドサービスで提供する、スカイアーチネットワークスの公式サイト。AWS・クラウドを始め、豊富なサーバー管理の経験と安心のセキュリティ対策、専門エンジニアの確かな知識で、お客様のビジネスの成長をサポートします。淳スカイアーチネットワークスで、新しいサービスの企画を行っています。元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。https://github.com/easydoggieコメントを頂けると嬉しいです。CodeデータベースAdminerDockerHelmKubernetesMySQLこの記事が気に入ったらいいねしよう!最新記事をお届けします。コメントをキャンセルメールアドレスが公開されることはありません。-RECOMMENDこちらの記事も人気です。淳スカイアーチネットワークスで、新しいサービスの企画を行っています。元SIer、元スマフォ向けゲームインフラの経験を生かして、新しいサービスをリリースしていきます。現在企画中のサービスはこちら。コメントを頂けると嬉しいです。