GitpodのKubernetesをやめる話など: Neco Weekly (2024-11-08号)
Neco Weekly (2024-11-08号)
サイボウズ Neco チームでは、 Neco Weekly という「最近気になる Kubernetes や Cloud Native 関連のネタを共有する会」を社内で開催しています。
本記事は共有会の中で紹介したネタをまとめたものです。
今回は第65回目の記事となります。
👀 Notable Articles
We’re leaving Kubernetes
Gitpod社が開発環境としてKubernetesクラスタを利用してきた際の試行錯誤をまとめた記事です。
開発環境は通常のアプリケーション運用環境と違って特殊な要件が求められるため、以下のような取り組みをおこなってきたそうです。
- CPUを効率的に利用するためのDynamic Resource Allocationの利用
- メモリ管理にswap-spaceの導入
- cgroupをベースにした独自IO Limiterの開発
- IPFSによるコンテナイメージの取得
- User Namespaceを使ったセキュアな環境分離
- micro-VMの利用
これらの知見を生かし、シンプルでセキュアなアーキテクチャでGitpod Flexという新しいサービスをリリースしたそうです。
Introducing Hyperlight: Virtual machine-based security for functions at scale
VMを1~2msecで起動できるFunction実行用のHyperlightというミドルウェアの紹介記事です。
FunctionはRustで記述することができ、NativeやWASMよりも起動は遅いものの、よりセキュアな実行環境を提供できるそうです。
仕組みとしては、デバイスマッピングやカーネルのブートをおこなわないことにより高速に起動できるとのこと。
Talos Linux vs Flatcar
先日、CNCF Incubatorプロジェクト入りしたFlatcar LinuxとTalos Linuxの比較記事です。
どちらもコンテナを動かすことに特化したディストリビューションですが、Flatcarは2,300個ものバイナリを含んでいるが、Talosは12個しか持っていないそうです。
また、どちらもImmutable Filesystemを提供していますが、Flatcarは/usr以外のファイルは書き換えられる一方、Talosは/etc以外のファイルシステムを書き換えられないそうです。
さらに、Talosはsshでログインすることもできず、gRPCのAPIを構成を変更する仕組みとなっているそうです。
一方、FlatcarはOSのイメージを自動アップデートする機能を持っているものの、Talosにはそのような機能はないとのこと。
Talos Linuxはかなり尖ってそうですが、非常に興味深いディストリビューションだと感じました。
Advantages of storing configuration in container registries rather than git
構成ファイルの置き場所は、Gitリポジトリよりもコンテナレジストリの方が優れていると主張している記事です。
Gitリポジトリでは意味のある単位で構成ファイルをまとめる方法がディレクトリくらいしかありませんが、コンテナレジストリの場合はコンテナとしてまとめることができます。
また、コンテナにはSBOMのような情報やリッチなメタデータを持たせることもできますし、コンテナに署名することもできるなど、さまざまなメリットがあります。
現状では、各種ツールがGitリポジトリにしか対応していないことが多いのですぐにコンテナレジストリに置き換わることはないとは思いますが、今後はコンテナイメージ以外の用途でコンテナレジストリが利用されるケースが増えるのかもしれませんね。
Go 1.24 から go.mod でのツール管理がより簡潔になるかもしれない
Go 1.24では、go.modにtool directiveが増えて、ツールのバージョン管理ができたり、go toolコマンドで実行できるようになるかもしれないとのこと。
既存のモジュールの依存関係とツールの依存関係がどのように解決されるのかが気になるところです。
🛠️ Tools, Frameworks, Libraries
Holos
HolosとはKustomizeとHelmとCUEを組み合わせたKubernetesの設定管理ツールです。
The Rendered Manifests Patternというパターン(メインブランチに変更をpushすると、各環境ごとにレンダリングしたマニフェストをそれぞれのブランチに保存するパターン)を実現するこtができるとのこと。
最近はこのツールのようにレンダリングしたマニフェストを保持するパターンをよく見かけるので、最近のトレンドなのかもしれないですね。
containerd 2.0
containerd 2.0がリリースされました。
NRI (Node Resource Interface)によりコンテナランタイムをプラグインで拡張しやすくなり、例えば、コンテナにNUMAを意識したCPUやメモリを割り当てることができたり、cgropuのパラメータを制御することができたりするそうです。
また、Image Verify Pluginにより、コンテナイメージをPullしたときにポリシーの検証ができるようになり、例えば、SBOMに基づいてイメージの検証ができたりするそうです。
その他にもたくさんの機能追加が含まれています。
Discussion