Amazon EKSマルチテナントクラスターにおけるArgoCDを利用したデプロイフローの話id:masayosu / @masayosu2022/06/07 Hatena Engineer Seminar #20AWS Renovation 編1
View Slide
自己紹介● id: masayosu● Twitter: @masayosu● 組織・基盤開発本部プラットフォーム部サービスプラットフォームチームSRE● 趣味○ 登山、キャンプ、ゲーム2
サービスプラットフォームチームについて● 新旧多くのサービスを抱えているチーム○ はてなポータル、はてなスター、匿名ダイアリー● 少数(精鋭?)● 以降のスライドではSPFと表記します3
はてなにおけるKubernetes● 2019年に撤退の話○ MackerelにおけるKubernetes利用の取組みとこれから / Kubernetes Meetup Tokyo #224
撤退の理由● 自前クラスタ運用○ 構築当時は東京リージョンにEKSが存在していなかった● 学習コストが高い○ クラスタ構築/運用含めて5
撤退の理由● 人員不足○ 1~1.5人で運用● クラスタバージョンアップに失敗6
SPFがKubernetesを使う背景● 社内にKubernetesの知見をFBする● EKSが東京リージョンに対応 (2018/12/20)● マイクロサービス(ぽいもの)な持ち物が多い● KubernetesのエコシステムとGitOpsを利用した自動的、統一されたリリース方法7
EKSの構成8
詳しくはこちらhttps://developer.hatenastaff.com/entry/2022/02/03/1005259
CIについて10● GithubActions● Application Test & Manifest Test○ Polarisを利用○ Image取得可能なリポジトリをホワイトリスト管理
● AWS Loadbalancer Controller をDockerHubから取得● DockerHubのRatelimit● Imageが取得できずCrashLoopPolaris導入の背景11
CDについて● ArgoCDを利用○ GitOpsと相性の良いPull型のCDツール○ Kubernetesクラスタ上で動く( GKE上で動作している)○ 複数のクラスターをターゲットとしてデプロイ可能12
デプロイフロー13
デプロイフロー14
● クラスタは BlueGreen 方式でバージョンアップ○ インプレースアップグレードは不可逆なため○ 複数バージョンを一気にあげたい■ SREリソースの問題でバージョンアップをスキップすることもある● BlueGreenクラスタに同じアプリケーションをデプロイクラスターバージョンアップ15
クラスターバージョンアップ16
● Pros○ 新旧クラスタに自動的にデプロイされて便利○ ArgoCDのUI上で問題が発生しているかひと目でわかる● Cons○ ArgoCDの設定を新旧クラスタ分作成する必要があって煩雑クラスターバージョンアップ17
18ちょっと話はそれますが
先日はてなアンテナが20周年を迎えましたhttps://labo.hatenastaff.com/entry/antenna-20th19
20はてなアンテナもEKSで動いています
まとめ● EKSのデプロイフローを紹介しました○ 新旧問わず全てのサービスが統一されたデプロイフローで動いている○ デプロイフローが統一されているとリリース作業の負担が少ない● はてなKubernetes使ってます21
今後検討していること● ArgoCDのApplicationSetを利用する○ クラスタバージョンアップ作業を楽にする● ArgoRolloutでBlueGreen Deploymentを検証○ 必要になった時の準備● はてなのEKS社内標準構成を検討22
23ご清聴ありがとうございました