Pocket

  • インフラ構成図

さて、このブログサーバーとは別にKubernetesで運用しているwiki/WordPressコンテナ(備忘録)があります(wiki.adachin.me)。以下ブログでも書いていますが、オーシャンで運用し始めて約3年が経ちました。初期はMySQLコンテナをPodで運用していましたが、Managed Databasesに移行(ブログの方も)してからMackerel、WordPressコンテナの二台で動作しています。また、WordPressコンテナはDocker Hub公式イメージを利用していました。そこで、2020年頃にオーシャンでContainer Registryリリースされたので、ようやく独自コンテナに移行してみました。

[DigitalOcean]KubernetesでWordPressを動かしてwikiブログを始めました!

[DigitalOcean][WordPress]Managed Databases MySQL8に移行しました!


Container Registryとは

https://www.digitalocean.com/products/container-registry

AWSでいうECRで、コンテナ専用プライベートリポジトリになります。オーシャンは1リポジトリで500MBまでなら無料で利用できるので、今回はFreeプランにしました。通信量はかかるので、AWSとあまり変わらなそうな印象です。早速Terraformで作成してみましょう。


Terraformと準備

  • do_cr.tf

  • DigitalOcean Kubernetes integration

https://docs.digitalocean.com/products/container-registry/how-to/use-registry-docker-kubernetes/#add-secret-control-panel

リポジトリ作成後にSettingsから DigitalOcean Kubernetes integration で今回設定するクラスターを紐付けましょう。これによってクラスターの全てのnamespaceにSecretが追加されます。なので、手動でSecretをimagePullSecretsとしてわざわざ作成する必要はありません。楽だ…!これで準備は完了です。次は独自のWordPressをbuildしてpushしてみましょう。

[DigitalOcean]kubectlを利用できるように設定


Push Container Registry

  • docker/prd/wiki

  • Dockerfile

  • supervisor/app.conf

元々オフィシャルイメージで利用していたのは1core 2GBで wordpress:5-php7.4-apache でした。また、Volumeを利用して、WordPressのソースコードをマウントしています。今回はPHP7.4のAlpine OSをベースにSupervisorでNginxとphp-fpmを動作するようにしました。WordPressであればマイクロサービスのようにWebサーバーは分割しないほうが良さそうですね。ちなみにイメージの容量は431MBでした。

buildしてpushする流れは以下になります。リポジトリにpushできたらManifestファイルを変更してapplyしましょう。

  • build and push


Fix Manifest file

  • wordpress.yaml

19行目のimage名を今回のリポジトリ名に変更するだけになります。最後にapplyをしてコンテナを再作成します。

ちなみにハマったのは下記のようにリポジトリのリンクを間違って指定しまうとErrImagePullになってしまうので、必ずコンソールの Recent image tag: をコピペしましょう。

  • kubectl apply

  • コンテナ確認


レスポンスはどうなったのか!?

https://status.adachin.me/783273486

  • 24 hours

  • 1 week

切り替えた時間は本日の14時くらいです。24 hoursで確認するとあまり変わらないと思いますが、1 weekにしてみると平均約800msから約600msにレスポンスが良くなりました。さすがNginxといったところかな。


まとめ

Kubernetesの勉強も兼ねて、独自のWordPressコンテナへ移行することができました。今後はGitHubで専用のリポジトリを作成してCircleCIでソースコードを配置後、デプロイできるような仕組みを作っていきたいと思います。Trivyでコンテナ脆弱性検知やるぞーー!ってその前にKubernetes v1.21.2-do.2なのでバージョンアップしないと。。→v1.23.9-do.0にバージョンアップしたけど特に問題なかった。

  • 別件

このブログサーバーのレスポンスが改善されました。とてつもなく早くなったと思いますので、今後共ADACHIN SERVER LABOをよろしくお願いします…!(全部自分のせい)

Pocket


adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラ改善やMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、ECS/Fargateへ移行、CakePHP4での管理画面作成、メンター、分析基盤の運用を担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください