2024.12.03
セキュリティ製品を入れても検出されず…被害事例から見る最新の攻撃トレンド 不正侵入・悪用を回避するポイント
リンクをコピー
記事をブックマーク
齋藤光氏:「イオンスマートテクノロジーで実践しているAKSアップグレード戦略」ということで、ここまで真壁さんと吉川さんが話されたことに対してのアンサーソング的な発表になるかと思いますが、よろしくお願いします。
自己紹介ですが、あらためまして齋藤と申します。イオンスマートテクノロジーには2022年の5月に入社して、SREチームの立ち上げみたいなところをやってきています。今回の発表の内容にも関わるんですけど、「Kubernetes」アップグレードに失敗しない漢を目指して日々奮闘中です。
2023年にも登壇をしていて、SRE NEXTとかCloudNative Days TokyoでAKSに関する発表をしているので、よろしければご覧ください。
会社紹介としては、AEON TECH HUBの中で自社の紹介をするのもなんなのですが(笑)、イオンのデジタルシフト戦略を担う会社の位置付けとして2020年10月、約3年半前に設立して、お客さまのお買い物体験向上とか、店舗で働く方々の効率を良くしていくということをやっていっています。イオングループのすべてのビジネスをテクノロジーの力で進化させようとしています。
みなさんも使っていらっしゃると信じたいんですが、今、イオンスマートテクノロジーでは「iAEON」という、イオングループのさまざまなサービスを1つにまとめたアプリを運営中です。このバックはほとんどAKSで動いている。つまりAKSが、このiAEONを支えていると言っても過言ではないという状況です。
今日のアジェンダですが、主に3つで、まず最初に弊社で採用しているAKSのアップグレード戦略についてお話します。今はその戦略なんですけど、当然最初からそうであったわけではないので、どんなことがあってどう改善してきて今に至ったのかというところを、2つ目に改善ジャーニーとしてお話をさせていただきます。
また、そこから得たAKSのアップグレードに対して立ち向かっていく。その練度や強度を高めていくために大切だなと思っていることのお話をしていきたいと思います。
まずはAKSのアップグレード戦略からです。真壁さんとか吉川さんの話とだいぶ被りますので、それに対するアンサーソングです。おさらいですけど、弊社が運用しているKubernetesの規模としてはだいたいこのような数字感になっています。
まず、アップグレード戦略のバージョンについてです。このバージョンに限った話ではないんですけど、当たり前ですが、原則的にマネージドサービスを提供してくださっているMicrosoft社の推奨に従うことが重要だと思います。そのサポートバージョンの対象としてもマイナーバージョンはn-2のサポートまで。マイナーバージョンはだいたい3、4ヶ月に1回リリースされるので、必然的に約半年に1回アップグレードを実施しています。
ASTも実際にできてからアップグレードを必ず継続して実施してきたという、「えらいな」と自分で勝手に言うんですけれども(笑)。ちゃんと運用している部分かなと思っています。現在は1.27で稼働中です。だから次は、1.29が切れるのが7月だから6月あたりにやっていくという状況ですね。
今のはマイナーバージョンのお話ですけど、パッチバージョンですね。x.y.zのzの部分ですけれども、こちらも最近から実施するようになりました。すばらしい! 勝手に自分で言う(笑)。
(一同笑)
しかも、先ほど吉川さんが推奨したとおり、自動アップグレードを設定しています。実際に自動アップグレードをしています。というかたちで、わりとちゃんとやっているというような感じです。
まさに先ほどの吉川さんの話と被るんですけども、Long Termサポートが2023年に出て、これを利用しているかという点については、これも「利用しない」というアンサーを出しています。いくつか理由を言っておくと、AKSのアドオンもそうなんですけど、他のツールですね。observabilityツールを別に入れていたりして、そういった影響を考えたくないというところ。
あとはビッグバンリリースと言うと言い過ぎかもしれないですけど、1回のアップグレードでの差分が大きくなるのでリスクも大きくなる。あと最後の結論にもつながるんですけど、回数をこなさないとうまくいかないんですよ。Kubernetesは別に魔法のツールじゃなくて使いこなす筋力とか、組織の体力もそうだし筋力やスキルが重要です。そこを効果的に考えるとアップグレードの回数を減らすことそのものが組織を弱くするところもあると思います。
あとは普通に1.29とか1.28とかを見ていると新機能がいっぱい出ていて普通に使いたくなって、そこをわざわざ避けてLong Termサポートを採用するメリットはどのくらいあるのかなというところが解です。
実際に、どうアップグレードを実施していますか? というところをここに書いているんですけれども。基本的に特別なことは特にやっていません。当たり前のことを当たり前にやるという感じですね。まず検証環境などでやる前にバージョン差分の事前確認を、先ほど真壁さんのお話にあったChangeLogを確認して、廃止されたAPIとかを確認する。
そして対応の必要があったら対応を計画して、その後、アップグレードのテスト環境やステージング環境で実施し、動作確認をする。最後に本番切り替えを実施するというような、普通の流れです。実は一番泥臭くやらないといけないのは、(1)のバージョン差分の事前確認で、ChangeLogをちゃんと読みましょうというところですかね。
それは先ほどの週刊 AKS Changelogを読んだりとか。あとはMicrosoft MVPの方が「Zenn」でAKSのリリースノートを日本語版で出していて、先週1.29のリリースノートを翻訳してくださっているというのもあるので、こういうものをふだんから読んでキャッチアップしていくのもおすすめかなと思っています。
「切り替え」と言っていたけど、どう切り替えているんですか? というところなんですが、大きく分けてインプレース型とBlue/Green型があります。ここは説明不要ですね。散々同じ画像を……3回も全部同じ引用元なので(笑)、ここは飛ばしましょう。イオンスマートテクノロジーでは、インプレース型もBlue/Green型も使い分けているという状況です。
ちょっとあまりかっこいい理由ではないんですけれども、会社ができたのが3年半前で、このアップグレードの設計をするとなったのがまさに2021年なわけです。まさに最初の真壁さんのスライドにあったとおりの2021年の状況なので、基本的にはBlue/Green型を使いましょうというのが方針でした。
まぁ、なんやかんやBlue/Green型の作業コストが大きすぎたりとか、それ自体がツラいみたいな感じになって、インプレース型が一部採用されているところが実はあったりします。ただ、本当はやはりインプレース型もBlue/Green型もメリット、デメリットがあるので、直近ではインプレース型をベースにしてBlue/Greenを採用するというのはあるとは思うんですけれども、比較するとしたらここに書いた表みたいな感じになるのかなと思います。
作業コストでいえばインプレース型のほうが楽ちんですし、切り替え時間でいえばちょっと細かい設定にもよるんですけど、基本的にBlue/Green型のほうが当日切り替えればいいから速いよねというところですね。やりたければ重み付けルーティングで徐々にやればいい。ちなみにASTは、イオンスマートテクノロジーでは重み付けルーティングまではできていなくて、プライベートDNSをバツッと切り替えるという、ちょっとドキドキな作業があったりします。
ただ、事前にクラスタを作っておけばいいとか、事前にアプリケーションをデプロイしておけばいいとか、そういうことができるので、当日の作業時間は本当に5分です。そのうち4分ぐらいは「もう、これは切り替えてもいいんだよね?」という(笑)、みんなに勇気をもらう時間だったりします。
あとは先ほど出てきたロールバックの可否ですね。ちょっとバックアップのことを忘れていて「ロールバックはできない」とインプレース型に書いちゃいましたけど、実際に対策していくしかないかなと思っています。あとは切り替えの制約でインプレース型はマイナーバージョンで1個ずつしか上げられないので、実際に2バージョンを上げましょうとなった場合には、2回アップグレード作業をしなきゃいけないというところがあったりします。
最後は作業時のサービス影響でいうと、インプレース型は同一クラスタ内でPodがDrainによりEvictされるので一時的にキャパシティが落ちる瞬間があるでしょうというかたちになっていて、やはり作業コストが大きな判断ポイントになるかなと思います。そんなかたちでした。
こんなに偉そうに、偉そうじゃないかもしれないけど、偉そうにしゃべっていますけれども、自分が入社した時はけっこう激しめでですね、恥ずかしいことがいっぱい起きていました。まずBlue/Greenですね。先ほども出てきましたけれど、古いクラスタがあるんですが、そこからデプロイメントを削除せずに停止したんですよね。「なにかの拍子」と言っているんですけど、これはあれなんですよね。「Terraform」でAKSにタグを付けるとやったらなぜか起動して、ですね。
(一同笑)
クラスタが起動してですね、そうしたら、そこの上に載っているアプリケーションが起動するわけです。時間が空いているので3バージョン低いアプリケーションが動いちゃうんですね。別にリクエストが入って来なきゃいいんだろうと思うかもしれないんですけど、タイマー起動型のアプリがあるんですね。そいつが動いて、サービスの運営に影響はないんですけど、障害が起きるということがありました。
あとは先ほども出てきたsurgeサイズですね。デフォルトだと1台で、そもそもそのパラメータを知らない人はそんなものだと思ってやるんですけど。クラスタのノードが20台や30台になってくると、メチャクチャ時間がかかるというのはあったりします。あとはpdbが設定されていないので、Podが0になる瞬間があってエラーが出ます。
じゃあpdbを設定しようとしたら、今度はpdbの設定がイマイチで邪魔をしてアップグレードが進まないとか、Gracuful Shutdownをしていないからエラーがポコポコ出ますとか。あとは、これはGitOpsをやっていないからというのはあるんですけれども、使われていないアプリケーションがそのまま放置されているので、アップグレードのタイミングで移るんですけど、メンテされていないので起動しないとか。いろいろあります。
(次回へつづく)
2024.11.29
「明日までにお願いできますか?」ちょっとカチンとくる一言 頭がいい人に見える上品な言い方に変えるコツ
2024.12.03
職場の同僚にイライラ…ストレスを最小限に抑える秘訣 「いい人でいなきゃ」と自分を追い込むタイプへの処方箋
2024.11.27
何もせず月収1,000万円超…オンラインゲームにハマって起こした事業 大学中退し4社立ち上げ・2社売却した起業家人生
2024.12.04
いつも遅刻や自慢話…自分勝手な人にイラっとした時の切り返し 不平等な関係を打開する「相手の期待」を裏切る技
2024.12.02
給料や人間関係が良いだけでは部下は満足しない メンバーの「働きがい」を育む5つのステップ
2024.11.29
やたらと多い自慢話、批判や噂好き…「自己重要感」が低い社員の特徴 管理職が知っておきたい「一生働きたい職場」の作り方
2024.11.26
タスクの伝え方が部下のモチベーションを左右する マッキンゼー流、メンバーが動き出す仕事の振り方
2024.11.25
仕事はできるのに、なぜか尊敬されない人が使いがちな言葉5選 老害化を防ぐために大切な心構えとは
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.28
“新規事業が生まれない組織”に足りていないもの 「PoC貧乏」に陥らず、アイデアを形にするためのヒント