OSアップデートで停止していました

本日、サイトのメンテナンスの為、一時的に停止していました。

ついでに新しい環境についても少々書いていきたいと思います(ほぼ自分の備忘録の為に…)

OSが古かったのでアップデート

今まで古いバージョンのCentOS(7だったかな…)で運用していましたが、SSL更新に使っているLet's EncryptのスクリプトがサポートされていないOSだと警告を吐いていたりOSのサポートもなくなりそうだということで、あらたに環境を立ち上げ直しました。

Container-Optimized OS

今回、GoogleのContainer-Optimized OSというイメージを使ってVM立ち上げています。

概要については公式を見ていただくとよいでしょう。

Container-Optimized OS の概要 | Google Cloud

Container-Optimized OS from Google は、Docker コンテナの実行に対して最適化された Compute Engine VM 用のオペレーティング システム イメージです。 Container-Optimized OS は、Google によってオープンソースの Chromium OS プロジェクトに基づいて維持管理されています。Container-Optimized OS を使用すると、Docker コンテナを Google Cloud Platform ですばやく、効率的に、安全に使用できます。 Container-Optimized OS には、次の利点があります。 コンテナをすぐに起動: Container-Optimized OS インスタンスには Docker ランタイムと cloud-init があらかじめインストールされています。Container-Optimized OS インスタンスを使用すると、VM を作成すると同時に Docker コンテナを起動することができます。ホスト上での設定は必要ありません。 攻撃される範囲が減少: Container-Optimized OS はフットプリントが小さいので、インスタンスを攻撃される潜在的な範囲が減少します。 デフォルトで遮断: Container-Optimized OS インスタンスには、遮断されたファイアウォールやその他のセキュリティ設定がデフォルトで行われています。

コンテナの運用に特化したOSということで、コンテナ運用に不要な機能をLinuxから取り除いたようなもののようです。

外部から攻撃を受ける要因になりそうな余計なものが組み込まれていないのと、触れる部分に制限があるかわりにGoogle自体が自動でアップデートをかけてくれるというメリットがあります。

…が、まあまあ普通のLinuxと違ってコンテナ特化OSということで、今までの知識が通用しないところが多々ありました。

/etc配下などはVM再起動するとリセットされてしまいますので、基本的はすべてコンテナで運用する感じです。

タイムゾーンの指定もVM再起動するとリセットです。ホスト自体がDocker的な感じで状態を持たない…ステートレスな感じになっています。

Cloud-init というVM起動時にもろもろ設定してくれる仕組みには対応しているので、タイムゾーンの指定はそこでやる感じです。

/root配下もリセットされるのでいきなり sudo su - での男気運用(?)も通用しません。

定期的にアプリを動かすcronという仕組みもありません。さらにはaptやyumなどのパッケージマネージャーもありません。

そのかわりDockerとGitは最初から入ってます。

こんな感じなのでホストでそのまま動作するアプリはまず入れるのはかなり無理があると思います。docker-composeすらコンテナで起動してくださいという徹底ぶり。

他にもいろいろはまりどころはあるのですが、こちらのサイトが詳しいので使われる方は参考にされると良いと思います。

GCP の Container-Optimized OS でサイトを運用するときの tips

Google Cloud Platform (以下 GCP )の Container-Optimized OS で Docker を使ってサイトを構築・運用するときの tips 集です。 Container-Optimized OS を使うようになってしばらく経ったので利用時の小ネタをかんたんにまとめました。 利用イメージとしては、単一のインスタンスで Docker または Docker Compose を使ってサイトを運用する場合を想定しています( Kubernetes に関する tips はここには含まれていません)。 Container-Optimized OS の利用に興味のある方は参考にしてみてください。 Container-Optimized OS とはコンテナ利用に最適化された Google 社製 OS です。 GCP ユーザーは無料で使用することができ(もちろんインスタンス使用料は別途かかります)、 Ubuntu や CentOS 等と並んで Compute Engine のインスタンス作成時に選べる選択肢のひとつになっています。 Container-Optimized OS について Google 社の公式サイトでは次のように説明されています。

WordPressは動いた

https-portalnginxphp-fpmmariadb のコンテナを組み合わせオールコンテナで構築しました(というかそうしないとこのOSでは動かない)。

OS自体はGoogleがメンテしてくれるし、時折コンテナも最新にビルドしていくだけでメンテできるようになったかなと思います。

手間が掛からずリソースを削減できる構成に

前のサーバーではブログ以外にもMastodonなどいろいろ動かしていましたが、そのあたりもバッサリ削除。ディスクの容量もあいてミニマルな構成にできたかなと思います。

個人的な事情ですが私は開発第一線からは離れているので、ゴリゴリに環境を作って全部メンテしていくのもややモチベーション的にしんどいですし、最近GCPの課金が上がってきていったので、少しでも使用リソースを削減したいというのもありまして、なんとか今回やっと改善できたかなと思います。

思いのほか手間取ったので土日を潰してしまいもう日付的には月曜なので、ここら辺にしておきます。