cdk8s で Kubernetes のリソース定義を効率化 – AWS Summit Bangkok 2024 セッションレポート

AWS Summit Bangkok 2024 のセッション "New era of IaC: Effective Kubernetes management with cdk8s" に参加しました。セッションの様子をレポートします。
2024.06.10

はじめに

クラスメソッドタイランドの清水です。
2024年5月30日にタイ・バンコクで行われた AWS Summit Bangkok の「New era of IaC: Effective Kubernetes management with cdk8s」というセッションに参加しました。

cdk8s は CNCF(Cloud Native Computing Foundation) の sandbox プロジェクトだそうです。cdk8s を使うと、yaml ではなくオブジェクト指向言語で k8s のリソースを定義ができます。
ただし、cdk8s は k8s のややこしい manifest をあまり抽象化できません。
そこで、cdk8s+ という、manifest を抽象化してくれる別のライブラリも提供されています。

このセッションでは、 CDK, cdk8s, cdk8s-plus を使って、 AWS に k8s クラスターをプロビジョニングし、さらにアプリケーションを起動するデモが紹介されていました。

セッションの内容

cdk8s を使ったプロジェクトのフローは、

  1. cdk8s cli でプロジェクトを初期化
  2. コーディング
  3. Manifest ファイルを生成
  4. k8s cluster にデプロイ

となっています。

次は k8s の manifest ファイルと cdk8s の構文の比較です。
こう見ると yaml が TypeScript になっただけでほとんど同じですね。

そこで、cdk8s+ を使うと、かなり省略してリソースを定義することができます。
左が cdk8s+, 右が cdk8s の構文です。
たった 3行の cdk8s+ で 10数行の manifest ファイルを同じリソースを定義できています。

ここからは動画でしたが、cdk, cdk8s, cdk8s+ を1つのファイルで定義し、cdk deployコマンドを使ってデプロイをしていました。
デプロイ中/完了後のターミナルです。通常のcdk deployコマンドの出力と同じ感じです。

cdk の Output で表示された ALB の URL にアクセスすると Web ページがホスティングされていることが分かります。

今回の構成は以下のような感じです。

まとめです。

  • cdk8s: k8s のリソースをモデリングしたフレームワークです
  • cdk8s+: cdk8s を抽象化したライブラリです

最後に

本セッションでは、cdk8s+というIaCツールの可能性について学ぶことができました。
cdk8s+は、Kubernetesクラスタの構築・管理を効率化できるだけでなく、コードの可読性や保守性を向上させることもできます。
今後時間を見つけて cdk8s, cdk8s+ を使ってみて、ブログにしたいと思います。