現場で使っているので読んでみた。
目次は以下。
CHAPTER 1 速習Docker/Kubernetes
CHAPTER 2 KubernetesのエコシステムとCustom Resources
CHAPTER 3 Kubernetesアプリケーション開発の実践
CHAPTER 4 Kubernetesのセキュリティ
CHAPTER 5 Kubernetesの運用
5章立てだが、そのうち4章のセキュリティが半分くらいのページを占めている。
そこからもタイトル通り現場で使うことを目的に書かれているのだろうなということが分かる。
1〜3章では、Kubernetes のアーキテクチャからマニフェストや設定を管理するためのKustomize、Helm などのツールの説明やKubernetes Cluster 構築からサンプルアプリケーションのデプロイまでがサクッと試せるようになっている。
セキュリティについて書かれているのは以下の内容。
- ホストOSのセキュリティリスクと対策
- コンテナのセキュリティリスクと対策
- コンテナO家ストレータのセキュリティリスクと対策
- コンテナイメージのセキュリティリスクと対策
- コンテナレジストリのセキュリティリスクと対策
- ハードウェアのセキュリティリスクと対策
- コンテナネイティブなセキュリティ製品
コンテナ環境で攻撃対象として想定されるものに対して、起きやすいセキュリティリスクと、それらに対する対策について解説されている。セキュリティの考え方としても自分でやるべきところ、クラウドベンダに任せるところが紹介されておりわかりやすかった。
ユーザをroot で動かさないや、RBAC で最小の権限を付与することを徹底するなど知っていることも紹介されていた。それ以外にもエンドツーエンド通信の暗号化やNode へのPod スケジュール制御としてNodeSelector、Affinity/Anti-Affinity、Taint/Toleration などが紹介されている。用語としては知っているが使っていないものも多かったので勉強になった。
また、実行環境だけではなくそもそものコンテナイメージに対するセキュリティ対策も説明がある。最小限のパッケージだけをいれる、脆弱性調査を行うなど。レジストリに対しても通信を暗号化するやイメージのライフサイクル管理、タグの命名規則など起こしやすいトラブルについての対応も書かれていた。
基本的なログを出力するや検知についても説明されており、Kubernetes に限らない話だなと思った。当たり前のことをまずはしっかりと設定していることを確認するところからだなと。
最終章では運用について書かれていた。
レジリエンスを最大限に活かすための設定についてかかれている。Kubernetes を使うならばレジリエンスを最大限に高めようという考え方は同意ができる。
具体的にはノードのスケーリング、Pod へのPriority 設定やAnti-Affinity 設定を行うことで重要度の高いPod を優先的、きれいな分散を行うようにできることが分かる。またProbe を正しく使うことでコンテナの正常性確認を行ってから使えるようにすることが紹介されている。
メトリクスの収集を行うことでのモニタリング、アラート通知の仕方やログの種類と収集方法が紹介されている。このあたりはアプリケーションでも行うべきことなのでわかりやすい。ただこのあたりはトラブルが起きた際にはとても必要になるのでしっかりと設定しておきたいなと思った。
また、サービスメッシュについても説明されている。Kubernetes を使ってマイクロサービスを運用する上では必要になってくるものである。そこまでのアプリケーションをまだ作ったことがないのでまだまだこれから勉強する内容だなと思っている。それ以外にもトラブルシューティング時の見方や使えるツールの紹介、Cluster のアップグレード時期についても説明がされている。このあたりは運用していると地味に考えたり実施することが多い内容だなと思いながら読んでいた。
まとめ
- 運用目線での話が多く載っているので面白い
- セキュリティや運用について考えてみることは大事
- せっかくKubernetes を使うんだからレジリエンスを最大限にできるように考えれるようにしたい