
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
リンクをコピー
記事をブックマーク
高橋陽太氏(以下、高橋):続きまして、高橋からHelmのアップデートについてお話をしていきます。Helmは、Kubernetesのアプリケーション管理ツールです。Kubernetesのリソースをテンプレート化して、Chartとして管理します。ふだんKubernetesを使っている方なら、ご存知かと思います。バージョン2では、Tillerを経由してリソースの管理をしていました。
私たちの環境では、OpenStackクラスタはHelmのChartで管理しています。Helmはバージョン2からバージョン3の変更点が多く、私たちの環境でかなりの修正が必要だったため、アップデートが後回しにされていました。しかし、Kubernetesのバージョンアップもあり、Helmのバージョン3への対応が必須となりました。
このアップデート作業の失敗談と、そこから得られたものについてお話をします。
まず、Helmを利用して、どのようにOpenStackクラスタをデプロイしているのかを説明します。はじめに、Jenkinsによって該当するOpenStackクラスタの更新があると、各namespaceを作成します。このKubernetesのnamespaceが、OpenStackクラスタの単位となります。そして、その中にdeploy-managerというものをデプロイします。このdeploy-managerは、各namespace内のコンポーネントの初期化や、前処理の実行、namespace内のChartのデプロイをするために、インハウスで開発したツールです。
また、OpenStackコンポーネントのバージョンや、クラスタのさまざまなパラメーターはGitで管理されていて、更新後は自動的にdeploy-managerをとおしてデプロイされるようになっています。
それでは、アップデートについてお話しします。Helmのバージョン2からバージョン3への変更が、大きな変更となっていて、単純にバイナリを置き換えるだけではアップデート完了とできません。
特に、Tillerが削除されていることや、Helmのリソース情報を保持するデータ形式が変更になっていることが大きな変更です。データ形式の変更については、公式のコンバートツールが用意されていて、それを利用できます。
しかし、私たちの環境はdeploy-managerをとおして各リソースを管理する、入れ子構造となっているため、少し複雑な構成です。そのため、無停止でアップデートをするためには、必要なリソースの依存関係など、内部構造を理解した上で手順をよく練る必要がありました。
Jenkinsによって自動化されているため、日常的な運用では触れることが少なく、詳細な部分まで理解することは、新卒1年目であった私がアップデート作業の中で最も時間をかけたポイントです。
簡単に説明すると、スライドの図のような手順でアップデートを進めることになりました。まず、各リソースの管理をしているdeploy-managerを一時的に止め、その間にバージョン2のリソース情報をバージョン3に移行します。そして最後にdeploy-manager、Helm 3の対応が完了したdeploy-managerをデプロイして完了です。
さて、手順は決定したのでアップデート作業に入っていきますが、その作業中に一部のクラスタでdeploy-managerからChartのデプロイが失敗するようになってしまいました。これによって、対象クラスタはリソース更新がすべて失敗した状態になってしまいました。
エラーの状況を整理すると、スライドの図のような状況になっていました。これはアップデート作業が完了したあとに、Helmのソースコードを含め詳しく調べていてわかったことですが、既存のリソースとdeploy-managerが、インストールしようとするKubernetesリソースのAPIのバージョンが異なっていました。
Helmのバージョン3からは、インストールしようとするリソースとの競合を検知する仕組みに大きな変更があり、その差でエラーが発生する状態でした。では、なぜAPIバージョンが異なるものがリポジトリにあったのかという話をします。
そもそも、Kubernetesのアップデートを並行して行っていたために、直近でKubernetes APIのバージョンを切り替える作業を実施していました。そしてこの変更は、一部の稼働環境で反映されていない状態で、古いAPIバージョンのまま動作をしていました。
今回のアップデート作業を機に、Helmに関しても設定ファイルで使用するバージョンを選択できるようにしました。
エラーの直接的な引き金となったのは、このChartのバージョンをHelmのバージョンと同時に上げてしまったことです。これによって、Helmのバージョン3に切り替わるのと同時に、KubernetesのリソースのAPIのバージョンも同時に更新される状態となってしまいました。
実際の作業時は、エラーの原因まで特定することができませんでした。しかし幸いなことに、エラーメッセージや検証環境でHelm 3の管理用アノテーションをすでにデプロイされているリソースに挿入すると、Helm 3の管理下であると認識させることが可能だとわかっていたので、それをエラーが起きた環境で実施しました。結果的に、かなりの量の作業が発生してしまいました。これでアップデートの話は終わりです。
今回新卒として初めて、自分でアップデートの計画を立てる段階から、実際にバージョンアップをすることに挑みました。これをとおして、私が学んだことをまとめます。
まず1つ目は、アップデートの対象を明確にすることです。今回のアップデート作業の失敗の原因は、複数のリソースを同時にアップデートしようとしたことです。さらに、そのための原因の調査も難しくなってしまいました。特に、Helmのバージョン2からバージョン3のような、大きな変更を含むアップデートの際は、手順も対象もなるべくシンプルになるように設計しておくべきだと思いました。
2つ目は、アップデート作業の際は、心と時間に余裕を持つことです。今回私は、KubernetesリソースのAPIバージョンがHelmのバージョンと同時に上がることを、検証の段階で考慮できていませんでした。やはり、Kubernetesのアップデートと、Helmのアップデートを並行して行っている観点で、もう少し検証に時間をかけるべきだったと感じています。また、そもそも大きな更新を含むアップデートの作業の際は数段飛ばしせず、確実にアップデートすることが必要で、そのためにも時間と心の余裕は大事だと感じました。
最後に、全体のまとめに移ります。Yahoo! JAPANでは、多くのOpenStackクラスタのコントロールプレーンとして、大規模なKubernetesクラスタをオンプレで構築しています。そして、Kubernetesのアップデートをとおして、段階的にアップデート作業ツールを整備してきました。
完全自動化のためには、作業中に問題に気づける仕組みづくりが重要だと考え、現在もよりよい仕組みづくりに取り組んでいます。
最後に、Helmアップデートの話をしました。バージョン2からバージョン3のアップデート作業を実施しましたが、結果的に、かなりの想定外の作業が発生してしまいました。そこから、アップデート作業の際は心と時間に余裕を持ち、手順および対象をシンプルにするという教訓を得ました。
短いですが、これで私たちの発表は終わりです。ありがとうございました。
関連タグ:
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
PR | 2025.02.07
プロジェクトマネージャーは「無理ゲーを攻略するプレイヤー」 仕事を任せられない管理職のためのマネジメントの秘訣
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.06
落合陽一氏や松尾豊氏の研究は社会に届いているか? ひろゆき氏が語るアカデミアの課題と展望
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10