このブログはヌーラボブログリレー14日目の記事です。
13日目の記事はmaaaatoさんの「 NuCon2021でLTをしたので余談多めにふりかえりました」 でした。
maaaatoさんの文才に嫉妬しています。。
ハッピーホリデー!SRE課の渡邉潔です。
2021年6月 CacooのKubernetes Clusterを自前運用からAmazon EKSへ移設しました。
移行後はとても楽に運用できています。
この記事では以下の内容を含みます。
- Cacoo での Kubernetes に対するこれまでの取り組み
- なぜKubernetes Clusterの自前運用をやめることになったのか
- Amazon EKSへの移行時の考慮点
- Amazon EKSに移行して体感したメリット
- まとめ
Cacoo での Kubernetes に対するこれまでの取り組み
Cacooのマイクロサービス化、Kubernetes on EC2に関するお話を伺いました
CacooはなぜKubernetesによるmicroservicesへの道を選んだのか?
なぜKubernetes Clusterの自前運用をやめたのか
※ここで言う自前運用とは「EC2上にKubernetesクラスターを自分たちで構築・運用すること」です
Kubernetesを構成するコンポーネントにコントロールプレーンというものがありますが、その運用がとても心理的に負担の多いものでした。
以下のような経験からKubernetesのコントロールプレーンを変更することが怖くなりました。
- インフラの冗長性の見直しを行っていく中、コントロールプレーンの全3台中3台が一つのAvailability Zoneに偏っていることが判明した。
- 上記の改善として、一部のkubernetes コントロールプレーンを別のAvailability Zoneへ移行しようとし、etcdの問題により移行できないトラブルが発生した。
- 根本原因はetcdのストレージ間のデータ同期ができずコントロールプレーンの移行ができなかったこと。
- etcdとは
- Kubernetesクラスターの情報を保存し同期する分散ストレージ。
- 結果、移行先のAvailability Zoneにコントロールプレーンを追加するという方法で回避しました。(追加したコントロールプレーンのetcdは同期ができた。。。)
- 追加となったのでコストが増えることになった。
- この冗長性の見直しに3ヶ月弱かかった。。。。。
この事により、自前Kubernetes コントロールプレーンの変更を容易にできない心理状態になり、Kubernetes のバージョンアップなどの、コントロールプレーン関連の作業が後回しに。。
そのような状態もあったため、Amazon EKSの移行検証を前向きに開始しました。
- Kubernetesのコントロールプレーンの面倒見たくない!!!
- そうだ EKS、行こう。
- ※我々が困ったコントロールプレーンの運用・管理を、自動で行なってくれるサービス。
CacooがKubernetesの道を歩みだした頃にはAmazon EKSは影も形もありませんでしたが、今では日本語の情報や国内での事例も多くなってきています。AWS TAM(Technical Account Manager)の皆様のご協力もあり、前向きに移設を選択できました。
AWS EKSへ移行で考慮した点
- Kubernetesのバージョンを1.19に上げること
- Kubernetesのリリースサイクルに追いついていなかったので大きく更新。
- Secretのデータ管理にKubernetes External Secretsを利用し、データはAWS Secrets Managerに保存する
- 秘匿情報の管理もAWSにおまかせ。
- 以前は秘匿情報をS3にアップロードする運用となっており、作業漏れによる差分が発生する事があった。
- ※ Secrets Store CSI driverは検証が間に合わず利用していません。
- クラスターのユーザー・ロールの管理をAWS SSOで行う。
- ヌーラボの取り組みと並行して、Kubernetesのリソースにアクセスする際の権限管理も移行した。
- ユーザーの追加が容易になった。
- Argo CDを利用し、楽に旧環境と新環境の並行稼動を行う。
- Argo CDはKubernetes用のGitOps 継続的デリバリーツールです。
- GitOpsによりサービスをdeployしてくれるため、旧環境と新環境を分けてコード管理でき、楽に並行運用できる。
- 楽に並行運用できるのでテストが容易だった。
- 並行稼動で余裕を持ってテストができたため移行のトラブルはなかった。
目新しいものは無いのですが、マニフェストの更新や並行稼動は特に時間をかけずやれたと思います。
あとは、ヌーラボのスーパーエンジニア shojiさんが導入してくれたArgo CDがとても有効に働いてくれました。
このあたりはKubernetesの可搬性や再利用性の高さをしっかり活用できたと思います。
メンテナンス自体はDNSレコードを切り替えたのみで完了しました。
Amazon EKSに移行して体感したメリット
Kubernetesの運用にはほとんど時間をかけず他のことに時間を割けています。
- マスターノード運用の心理的・物理(時間)的負担からの開放。
- コスト減(移設前はコントロールプレーン5台で$100を超えていたのですが、EKSの月額料金は$72です)
- Kubernetesのバージョンも1.19 → 1.20 → 1.21へスムーズにアップグレードできた。
- AWS TAMにAmazon EKSのサポートを行っていただけるのでとても心強い。
ヌーラボは少数精鋭のSRE陣ということもあり、私はCacooの運用と他のプロダクトやプロダクトに属さない部分の運用・改善もすすめることができています。
まとめ
私の言いたいことは
- EKS最高!
ということです。
さいごに
ヌーラボでは他のサービスにおいてもKubernetesへの移行を進めております。
SREの積極採用中です!
よろしくおねがいします!