コンテンツに移動
Containers & Kubernetes

GKE リリース チャンネル: イノベーションと変化のスピードのバランスを保つためのよりきめ細かい設定

2022年6月22日
Google Cloud Japan Team

※この投稿は米国時間 2022 年 6 月 16 日に、Google Cloud blog に投稿されたものの抄訳です。

Kubernetes 上でビジネスを運営されている方であれば、健全な環境を維持するために、定期的にパッチの適用やアップグレードを行うことがいかに重要であるかをご存じかと思います。Google Cloud では、Google Kubernetes Engine(GKE)のクラスタ コントロール プレーンを自動的にアップグレードします。また、ノードの自動アップグレードを有効にした場合は、クラスタノードも自動的にアップグレードしパッチを適用します。さらに、制約やニーズに合わせて Rapid、Regular、Stable の各リリース チャンネルにクラスタを登録できます。これは、GKE が本番環境ワークロードを実行する企業に提供する支援策の中の一つで、継続的なアップグレード戦略の一環として GKE のお客様に幅広く利用されています。リリース チャンネルを使用することで、高度なプランニングをする際に必要なレベルの予測可能性と、変更が予定されたときに自動的にカスタム ワークフローをオーケストレートする柔軟性を企業に提供します(例: 新しいセキュリティ パッチが利用可能になったときに DevOps チームに通知するなど)。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_GKE_Release_Channels.max-1500x1500.jpg

リリース チャンネルを使用したアップグレードの自動化によって、Kubernetes のバージョンや OSS の互換性の管理は簡素化されました。しかし、ビジネスの継続性や品質保証の理由から、特定の時間にクラスタをアップグレードしたい場合があるかもしれません。また、クラスタ上で許可されるアップグレードのスコープ(パッチだけを適用、または、マイナー リリースは回避など)を制御したいかもしれません。これは、アップグレードを本番環境にロールアウトする前に、より詳細な適合性確認、テスト、または準備が必要であると感じた場合は特に重要になります。

つい先日、GKE リリース チャンネルで設定できるメンテナンスの時間枠を改善しました。以前は、メンテナンスの時間枠で指定できるコントロール プレーンやノードの「no upgrades」は最大 30 日間でした。現在では、アップグレードのスコープを除外することで、最大 180 日間、またはサポート終了日のどちらか早い方の期間で、アップグレードのスコープを制御し制限できるようになりました。さらに、「no_minor_upgrades」と「no_minor_or_nodes_upgrades」という 2 つの新しいモードにより、コントロール プレーンとノードの両方に対してマイナー アップグレードとノードのアップグレードの適用を回避できます。また、どちらのケースでも、最大 6 か月という長期間にわたり、特定のマイナー k8s バージョン(1.21 など)にクラスタを「固定」できます。

GKE リリース チャンネルの実例

ドイツのフード デリバリー ネットワークを展開する Delivery Hero は、最近リリース チャンネルの利用を開始した GKE のお客様の 1 社です。2021 年第 3 四半期に 7 億 9,100 万件の注文を処理した Delivery Hero は、当初、顧客に対してサービスを中断する可能性を排除することを第一に考え、変更のタイミングを制御して、テストされていないアップデートによって可用性に影響を与えるリスクを低減するため、手動プロセスに依存していました。しかし、これは理想的な解決策ではありませんでした。Kubernetes のリリース スケジュールを定期的に確認し、バージョン スキューの互換性を追跡して、セキュリティ パッチを適用するのは面倒な作業だったからです。

リスクの軽減と業務効率のバランスを保つ解決策を模索する中で、Delivery Hero は GKE クラスタをリリース チャンネルに登録することにしました。それだけではなく、さらなるリスク回避のために、自動アップグレードのスコープをパッチ バージョンにのみに限定し、マイナー アップグレードを延期するように定義しました。この方法を取ることで、GKE クラスタにはセキュリティとコンプライアンスを確保するために自動的にパッチが適用されますが、マイナー バージョンのアップグレードに関しては、内部でテストが行われ適合性を確認できるまで保留できます。

「アップグレードのスコープを制御するオプション、とりわけマイナーアップグレードを最大 6 か月間延期できるようになる前は、Kubernetes OSS リリースの周期と当社の適合性確認のスケジュールを合わせるのに苦労していました。特に、最近のリリースで API がサポート終了となっていたということもあります」と Delivery Hero のエンジニアリング マネージャー(プラットフォームおよび SRE)の Kumar Saurabh Sinha 氏は述べています。「アップグレードのスコープを除外することでクラスタを安全に移行し、リリース チャンネルへクラスタを登録すると同時に、テストされていないマイナー リリースのリスクも軽減することができるようになりました。」

ぜひ今すぐ GKE リリース チャンネルをご利用ください。新しい GKE クラスタを作成すると、デフォルトで「regular」リリース チャンネルに自動的に登録されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_GKE_Release_Channels.max-2000x2000.jpg

また、Google Cloud コンソールやコマンドラインから、既存のクラスタをリリース チャンネルに移行できます。詳しくはこちらをご覧ください

たとえば、クラスタをリリース チャンネルに登録し、さらに、Kubernetes のマイナー アップグレードを 3 か月間回避する場合、手順は次のようになります。

  • クラスタがリリース チャンネルでサポートされているバージョンを実行していることを確認します。

  • 自動アップグレードを 24 時間除外します。これは、クラスタをチャンネルに登録した直後の予期せぬアップグレードを回避するために行う、任意の安全措置です。

  • クラスタをご希望のリリース チャンネルに登録します

  • アップグレードのスコープを「no_minor_upgrades」に設定し、そのクラスタに対して現在のマイナー リリースを維持したまま、パッチ バージョンのみ適用を許可します。

GKE リリース チャンネルを使用すれば、クラスタやノードをいつ、どのように、そして何をアップグレードするかを決定できます。詳しくは、リリース チャンネルについてはこちら、メンテナンスの時間枠についてはこちらをご覧ください。さらに詳細な情報については、Google Cloud Platform ポッドキャストのこのエピソードをご確認ください。同僚の Abdelfettah Sghiouar と私が、Kaslin FieldsMark Mirchandani の司会のもとで、これまでの GKE リリース チャンネルと今後について議論しています。

- Google Kubernetes Engine プロダクト マネージャー Kobi Magnezi

投稿先