2024.12.03
セキュリティ製品を入れても検出されず…被害事例から見る最新の攻撃トレンド 不正侵入・悪用を回避するポイント
リンクをコピー
記事をブックマーク
真壁徹氏:ただ今紹介していただきました、真壁です。よろしくお願いします。マイクロソフトで9年ぐらいソリューションアーキテクトをやっていますが、AKS(Azure Kubernetes Service)が得意です。お客さまの案件をたくさんお手伝いしているので、みなさんがこれまで困っていたアップデートについて、今日いろいろと話せればと思います。40分ほどお時間をいただいて進めようと思います。よろしくお願いします。
自己紹介もほどほどにして、本題に入りたいと思います。最近ポータルでAKSのクラスタを作った方がいると思うのですが、「おや?」と思いませんでしたか? 以前もアップグレードの設定はあったのですが控えめで、自動アップグレードしないみたいなオプションで入っていて、それが既定だったと思います。
(スライドを示して)最近は、「『Kubernetes』の自動アップグレードはおすすめ」。あとは「KubernetesのいわゆるワーカーノードのOSのイメージは自動アップグレードがおすすめ」。こんな感じになっています。初めに見た時はビックリしました。
街の声を集めてみました。自動アップグレードはいわゆるインプレースなんですよね。クラスタを動かしながら、動いているクラスタをアップグレードする。カッコイイ表現をすると、これは飛行機を飛ばしながら空中で給油する、もしくは飛ばしながらエンジンとかを交換する、そんな感じです。こういうのをインプレースというのですが、「辞めた先輩は『インプレースだけは止めろ』と言って辞めていった」みたいな話はけっこうあります。
クラスタを2つ並べて、Blue/Greenという、新しくアップデートするクラスタを新しく作って、動かしているものはそのままにして、新しいバージョンでテストをしてOKだったらスッとトラフィックを切り替える方式があります。「何かあったら怖い」というお客さまは、けっこうBlue/Greenアップグレードをしています。
あとはたまに、「作ってから1回もアップデートしていません」という人もいるのですが、これは止めてくださいね。止めてください。
これが街の声です。
2021年なら「怖い」「Blue/Greenしたい」という声はわかります。「そうしましょう」と言っていたんですが、今それを言われると「ん? ちょっと待ってください。最近、状況が変わってきましてね」というのを今日の話の枕にしようかなと思っています。実際に状況が変わってきています。
ということで、AKSのアップデートの機能や諸々それにまつわる最新状況をおさらいします。(スライドを示して)知っている方はいると思うんですが、AKSを利用していてもアップデートをよくわかっていない方は意外といます。先ほどの「1回もアップグレードしたことがない」みたいな方もいるので、意外と知られていません。なのでおさらいをします。
アップデートは3種類あります。1つ目はAKSメンテナンスと言われているもので、言葉は悪いですが、Azure側で勝手に毎週パッチを当てているような状況ですね。気づいていないお客さまはかなり多いです。
何がアップグレードされているかというと、管理系の機能やアドオンですね。いわゆるネットワークのプラグインやストレージのドライバなど、ああいうアドオンがちょこちょことパッチレベルで当たっています。これがAKSメンテナンスです。
2つ目が、これが今日の一番のトピックになると思いますが、Kubernetesのアップグレードですね。今は1.29(Kubernetes 1.29)が最新かな? 1.29については後ほど話しますが、これはマイナーバージョンです。
マイナーバージョンをアップグレードしたり、あとはパッチバージョンで1.29.0とか1.29.1などがありますが、これらのアップグレードをKubernetesアップグレードと呼んでいます。これを怖いと言っているお客さまがけっこう多いです。自動もできるし、ユーザーが手動で「このバージョンに、このタイミングで上げたい」ということもできます。
最後にNodeイメージアップグレードということで、KubernetesのWorker Nodeの、いわゆるOSやシステムソフトウェアに入っているイメージをアップグレードします。これはLinux、Windowsにもありますが、Linuxの場合はほぼ週次、Windowsの場合はほぼ月次で新しいイメージが使えるようになります。これも自動適用もできるし、手動の適用もできます。
すべてのアップグレードはインプレースです。動かしながらアップグレードします。
(スライドを示して)「このあたりの情報は、どこかにまとまっていないの?」と、よく聞かれるのですが、まとまっています。今日の資料は、後ほど「Speaker Deck」に上げます。Speaker Deckでダウンロードしてもらうと資料にリンクが入っていて、リンクが押せるようになります。
このリンクを見てもらいたいのですが、「GitHub」にAKSのCHANGELOGが出ています。ほぼ毎週出ています。
「どんな変更がこれからありますか?」とか「新しいイメージのバージョンが出ましたよ」とか、すべてここにまとまっていると言っても過言ではないので、ぜひ見てください。
重大な変更で、「次のバージョンやその次のバージョンでこういう大きな破壊的変更があるよ」というのは毎週のようにしつこく出ているので、ここを毎週、毎週見なくても2週間おきぐらいに見ておけば、だいたい状況がわかります。ぜひ見てもらえればと思います。
(スライドを示して)先ほど話してしまったし、知っている方が多いと思いますが、KubernetesのバージョンはX.Y.Zみたいな感じになっています。一番左のXがメジャーで、これは1回も上がったことがないですね。2番目がマイナー、最後がパッチということでセマンティックバージョンの体をしているのですが、違います。
セマンティックバージョンは、APIが使えなくなって変更になったらメジャーを上げないといけないのですが、Kubernetesはマイナーを上げてきます。なので、ずっと1のままです。今後1から2に上がる日が来るかもしれないですが、セマンティックバージョニングとはちょっと違うということだけ覚えておいてください。
「アップグレードでどういうことが行われるの?」ということは、簡単にここで紹介しておきたいと思います。3つあるうちの1つですね。Kubernetesアップグレードでどんなことが行われているかを簡単に紹介します。
まず、この絵の左側に「リージョンコントロールプレーン」とあります。各Azureのリージョンが、日本なら東日本、西日本とあります。例えば今はKubernetes 1.29が最新ですが、1.30が来たら「1.30のソフトウェアが使えるよ」とアップロードされます。
MasterとNodeのそれぞれにコンポーネントがアップロードされるのですが、これがアップロードされると、ユーザーがアップグレードでそのバージョンを選べるようになります。あとは毎週のようにLinuxやWindowsのOSのシステムイメージがアップロードされていて、これもアップロードされた瞬間にユーザーが選べるようになります。
手動アップグレードをするとしましょう。例えば1.29から1.30に上げようとする時に、ポチッとボタンを押しました。(スライドを示して)ここでは右側のAKSクラスタをイメージしていますが、この絵でいう真ん中あたりの、ユーザーからは見えないMaster Nodeの上のAPIサーバーやコントローラーといった、コントロールプレーン系のコンポーネントからバージョンアップします。
それらがアップグレードされて、それが終わったらWoker Nodeのアップグレードに移るという順番になっています。Woker Nodeのアップグレードはローリングアップグレードです。新しいNodeを新しいイメージに追加して、その上に新しいバージョンのKubernetes、Nodeのコンポーネントを入れます。
それが立ち上がってくると、古いというか、既存のNode上で動いていたユーザーのPodも動かせる状態になります。Drainと言いますが、まずそのNodeに新しいPodが配置されないようにして(Cordon)、そのあとEviction、退出と呼ばれますが、そのPodを消します。消して、新しいNodeでPodが動きます。これを順々に繰り返していくのがKubernetesアップグレードですね。
AKSメンテナンスやNodeイメージのアップグレードなどの細かい話、あとはそれぞれに気をつけたほうがいいことや仕様は、この資料のお尻に付録を付けてあるので、この今日のイベントが終わったあとに、資料を見てもらえればと思います。
3つのアップデートで考慮すべき点を整理してきました。いくつかの視点というか、気をつけなければいけない切り口があります。
提供タイミングはやはり気になりますよね。それはどのぐらいの頻度で出てくるのか。これは気になるところだと思います。
あとは強制的に適用されるのか、されないのか。自動化できるのか。自動化できる場合にはスケジュールですね。夜中にできるとか、週末にできるとか、「ここではしてほしくない」とか、そういう自動化のスケジュールを制御できるのか。
あとはNodeを作り直すのかということは、けっこうポイントだと思います。こういうところは気になるところかなと思います。
一番気にしなければいけないのは、やはりKubernetesのマイナーバージョンアップです。ここではAPIの破壊的な変更が入る可能性があって、一番ケアしなければいけません。
自動化しようと思ったらすべて自動化できます。マネージドサービスなのですべてAzureに任せて、自分たちはメンテナンスやアップグレードのポチ(とボタンを押すこと)をまったくやらないこともできます。
自動化する時には自分のやりたいタイミング、時間帯がいいです。これはすべて選べます。ここがポイントです。
ということで、自動化をするか、しないか。どうするかはAKSの運用負担にかなり影響します。
3つのメンテナンスのアップデートがあるという話をしましたが、それぞれメンテナンス構成というものがあって、それごとにスケジュールや、チャネルと呼ばれる、どういうアップデートをするのかを選ぶことができます。
例えばaksManagedAutoUpgradeSchedule。「わからんわ!」となりそうなやつですね。
これがKubernetesのアップデートの細かい指定です。スケジュールとチャネルを選ぶことができます。デフォルトはnoneで、自動アップグレードはしません。すべてユーザーのやりたいタイミングで、アップデートしたいバージョンを指定してやるのがAPIの規定です。
最近、ポータルの推奨がpatchになりました。例えば1.27.9だとすると、このお尻の9は、10が出た場合や11が出た場合に自動アップグレードします。ただ、1.27の27のマイナーバージョンが上がっても上げないよというのが、patchチャネルです。これがポータルのおすすめになりますね。
その他のstable、rapidは、マイナーバージョンも大胆に自動で上げます。これを選ぶのは若干チャレンジなのかなという気はしますが、選ぶことはできます。
(スライドを示して)NodeOSのイメージも自動化してチャネルを選ぶことができます。規定はNodeImageで、これは新しいNodeイメージが出たら先ほど話したとおりNodeをローリングアップデートをします。ほぼ毎週新しいNodeイメージが出てくるので、これが嫌な場合にはnoneやUnmanagedというチャネルを選びます。
Unmanagedをしているケースが多いかもしれないですね。Unmanagedだと、例えばUbuntuであればUnattended-upgrade。再起動を伴わないアップデートが自動で適用されます。毎日適用されます。朝だったかな? 日本だと朝方※に適用されているかと思います。再起動が必要なアップデートは溜まっていって、再起動された時にそのパッチが当たるかたちになります。
Unmanagedというのは「OSの機能に任せちゃうよ」ということですね。AKSとしては「OSの機能でアップデートしてください」という設定をするだけです。ここまでが最新のAKSのアップデート事情です。
※話者補足: 現在はsystemdのタイマーでUTCの6時、18時に開始し、かつ12時間のランダム遅延が指定されている。
(次回につづく)
関連タグ:
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貧乏」に陥らず、アイデアを形にするためのヒント