$30 off During Our Annual Pro Sale. View Details »

k8sマニフェストを Typescriptで管理したい― cdk8s+を導入してみました ―

forcia_dev_pr
March 01, 2023
110

k8sマニフェストを Typescriptで管理したい― cdk8s+を導入してみました ―

2023/2/28開催Shinjuku.ts#2LT資料

forcia_dev_pr

March 01, 2023
Tweet

More Decks by forcia_dev_pr

Transcript

  1. k8sマニフェストを
    Typescriptで管理したい
    ― cdk8s+を導入してみました ―
    2023/2/28
    komago

    View Slide

  2. 自己紹介
    ・komago
    ・2017年フォルシア入社
    ・旅行商品のSaaS型サービス「webコネクト」のアプリ開発を担当
    ・k8sに興味があり、SRE的なこともやっています

    View Slide

  3. アジェンダ
    ・きっかけ
    ・cdk8s+について
    ・cdk8s+を使ってみる
    ・cdk8s+を導入してみてよかったこと
    ・cdk8s+で少し気になったこと
    ・最後に

    View Slide

  4. きっかけ
    ・フォルシアではアプリエンジニアがk8sの運用を行っている。
    ・k8sマニフェスト(yamlの定義ファイル)を触るのは、アプリエンジニアにとって心理的
    負担。
    ・設定漏れやインデントのずれでうまく反映されないこともしばしば。。
    ・プロダクトの成長に伴い定義ファイルも増加。

    View Slide

  5. きっかけ
    k8sマニフェストの例
    ・k8sのDeploymentリソースの最もシ
    ンプルな設定例
    (nginxのPodが3つ作成される)
    ・k8sに慣れていないと、何がなんだ
    か。見よう見まねで作ってもうまく動か
    ない。。

    View Slide

  6. Typescriptをビルドしてyamlにできれば。。
    ・アプリ開発では主にTypescriptを利用している。
    ・Typescriptでk8sの定義を書いて、ビルドしてyamlにできれば。。
    ・と思ったら、願ったり叶ったりなツールがあった!

    View Slide

  7. cdk8s+
    ・AWS CDK : 使い慣れたプログラミング言語でAWSリソースを定義するためのフレー
    ムワーク。
    ・cdk8s (CDK for Kubernetes)は、AWS CDKの考え方をk8sのリソース定義に取り入
    れたツール。
    ・cdk8s+はcdk8sよりも抽象化されており、k8sの定義をよりシンプルに記述できる。
    (2022/10に一般利用開始)

    View Slide

  8. cdk8s+
    ・Typescriptのほか、Go、Python、Javaに対応している。
    ・AWS CDKではAWSリソースのデプロイまでセットになっているが、cdk8sではプログ
    ラミング言語で書いたファイルをビルドして、yamlのk8sマニフェストを作成するところま
    で。(デプロイは行わない)
    ・k8s環境へのデプロイは、cdk8sは使わずにこれまで通りの方法で行う。

    View Slide

  9. cdk8s+を使ってみる
    ・必要最小限の設定
    ・型に守られている安心感
    ・環境ごとの設定はconfig
    ファイルに切り出せばよい

    View Slide

  10. cdk8s+を使ってみる

    View Slide

  11. cdk8s+を使ってみる
    実際のビルド成果物
    ・設定したかった項目が設定されている。
    ・設定していない項目もデフォルト値が設定されるの
    で、設定すべき項目に気付ける。

    View Slide

  12. cdk8s+を導入してみてよかったこと
    ・k8sマニフェストの細かいルールを気にしなくてよい。
    ・アプリ開発でTypescriptを使っているので、k8sの定義を触るハードルが下がる。
    ・型に守られるので、設定ミスが起きにくい。
    ・環境ごとの設定の違いをconfigファイルに切り出しやすい。
    ・ビルド生成物であるyamlのk8sマニフェストもGit管理すると、スナップショットテストに
    なる。

    View Slide

  13. cdk8s+で少し気になったこと
    ・作成済みのcdk8s+の設定変更にはk8sの知識があまり要らないが、新たにcdk8s+
    でk8sリソースの定義をするにはある程度のk8sの知識が必要。

    View Slide

  14. 最後に
    ・中小規模のアプリでは、専任のSREではなくアプリエンジニアがk8s運用を行うという
    ケースが少なくないはず。
    ・全てのアプリエンジニアがk8sに詳しくなるのは現実的ではないし、他にやるべきこと
    もたくさんある。
    ・慣れ親しんだTypescriptでk8sリソースの定義を管理できるcdk8s+は、アプリエンジ
    ニアの心強い味方!

    View Slide