🌊

Kubernetes(EKS)を本番環境で採用する基準を考えてみる

2022/12/09に公開

これは何?

約2年前に書いたブログのちょっとした続きです。本業・副業でK8sを利用して約2年が経ったので自身の勘所をまとめてみました。
https://zenn.dev/nameless_gyoza/articles/when-to-use-k8s

前提

  • 記事の内容は完全に私個人の意見です
  • この記事に書いてあることはK8sに限った話ではないと思っています
    • (特に外の世界を見ていて)安易にK8sを選択する組織が多いと感じるためK8sのトピックとして書きました
  • ここの記事で記載している K8s とは主にAWS EKSなどのマネージド・サービスとしてのK8sです

結論

結論としては以下についてどれくらい現実的な取り組みができるか次第かなと思っています。

  • ちゃんと運用できる体制を取れるか?
  • その選択をしても採用目標を継続的に実現できるか?

※もちろんそのさらなる前提としては その技術選定がサービスの成長に寄与するかどうか が重要ではありますが、話が長くなってしまうためその点は今回の対象外としています。

ちゃんと運用できる体制を取れるか?

ちゃんと運用する というのはとても怪しい言葉なので、私としては「以下の事項をチームで継続的に対応できること」と考えています。
もちろん最初からすべて達成することは難しいと思いますが、軽く挙げただけでもこれくらいトピックがあるので、それらを粛々と対応していける見通しがあるかどうかを判断のポイントとしてもいいかと思っています。

  • K8s周りのリソースも含めてIaCで管理・運用できていること
    • リソースの初期立ち上げはeksctlやAWSマネージドコンソールからシュッと起動できますが、リソースの立ち上げはスタートに過ぎません
  • 各種バージョン(K8s, K8sの上に乗る各種ツール, K8sを管理するIaC)をある程度の頻度で最新(or LTS)に更新できること
    • K8sのバージョンは年に数回更新がある
    • K8s上のツール(例: ArgoCD)はそれよりも遥かに早いスピードで更新される
  • K8s関連のリソースに対する監視及びそれに対する障害対応ができること(以下は例)
    • K8s自体のEvent監視
    • PodやNodeで異常があった際の検知
  • サービスの堅牢性を担保するための取り組みの対応ができていること(以下は例)
    • IRSAを活用した権限整理
    • オートスケールの導入と適切な閾値の設定
    • アプリケーションのGracefulデプロイのための対応
    • セキュリティのためのガードレール整備
  • アプリケーションチームとの連携を行えること
    • アプリケーションチームがチームとして運用しやすい方法でK8sへのアプリケーションdeployを実施できる仕組みの提供
    • アプリケーションチームが独立して活動できるような権限委譲やガードレール整備

Datadogの調査によると以下のような悲しい状況にあるようで、やはり導入したけれど運用をきちんと行えている組織は少ないように思われます...。

For this report, we examined more than 1.5 billion containers run by tens of thousands of Datadog customers to understand the state of the container ecosystem.

Today, the most popular version in use is v1.21, which was released in April 2021 and officially passed its end of life date earlier this year.

https://www.datadoghq.com/ja/container-report/#6

その選択をしても採用目標を継続的に実現できるか?

組織を中長期的に安定して運用・拡大していくためには採用活動は欠かせ無いかと思います。単純に組織拡大の中で人が必要になることもありますし、人の入れ替わりも大なり小なり発生します。
近年は超売り手市場でありどの会社も採用で苦労している状況だと思いますが、その中でもK8sなどの一部の技術スタックを持った人を探すのは一層難しいと感じています(私も採用活動をしており非常に苦戦しています…)。

この状況において優秀な人材を継続的に採用できるかどうかについて、組織レベルでの議論とそれを達成するための戦略を立てていくていく必要があると思っています。K8sに限りませんが、採用方針は組織として決めていくものであるため、社内の色々な人を巻き込みつつ長い目で成果を計測していくことが重要になると思います。

※もちろん採用活動だけではなく社内に特定技術の有識者を増やす活動も重要であると思います。

まとめ

きちんとメンテナンスされていない悲しいK8sを1台でも減らすために、「きちんと運用できる(見通しがある)から採用する」というムーブをやっていきましょう!

Discussion