Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
cdk8s(+)ではじめるKubernetes
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
horsewin
December 14, 2022
Technology
860
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
cdk8s(+)ではじめるKubernetes
2022/12/14に実施されたJAWS-UG CDK支部 #4の登壇資料です。
horsewin
December 14, 2022
More Decks by horsewin
See All by horsewin
Cloud Runハンズオンから学ぶ実践的なクラウドネイティブ構成について
horsewin
1
91
コントリビューションWSが与えた 影響に思いを馳せる
horsewin
1
92
Cloud Run jobsをバッチ処理基盤として使いたい
horsewin
0
290
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
11
4.1k
「teachme」で作る心地よい ハンズオン体験構築のノウハウ ~ Google Cloudのハンズオンといえばコレ!~
horsewin
1
150
Console-to-Code が出たのでCDK職人を卒業しま◯◯
horsewin
0
950
GAになったGolangでCDKを触ってみよう
horsewin
2
480
Cortana Skill 触ってみた
horsewin
0
89
Alexaスキル開発〜 Node.js から Typescript へ〜
horsewin
0
88
Other Decks in Technology
See All in Technology
全PRの83%が AIレビューだけでマージできるようになった開発組織は その後どうなったか @2026/10
athug
0
130
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
680
自律型 AI をセキュアに実装!Gemini と MIG で作る動的コード実行環境
recruitengineers
PRO
1
230
ログラスのマルチプロダクトを 支える認証基盤 〜テナントごとに異なる統制とどう向き合うか〜
dada4386
3
410
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
110
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
550
「事実」を「計測」して、「解釈」する 〜AWS Lambdaのメモリ最適解の見つけ方〜
maimyyym
0
120
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
270
自主式軟體工廠
philipz
0
240
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
Lambda MicroVMsが分からなすぎたので使い所を1から考えてみた
tsukuboshi
2
430
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
210
Featured
See All Featured
A better future with KSS
kneath
240
18k
Between Models and Reality
mayunak
4
490
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Mobile First: as difficult as doing things right
swwweet
225
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
Facilitating Awesome Meetings
lara
57
7.2k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Odyssey Design
rkendrick25
PRO
2
860
Why You Should Never Use an ORM
jnunemaker
PRO
61
10k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Transcript
cdk8s(+)ではじめる Kubernetes Atsushi Umakatsu (horsewin)
• 金融システムのエンジニア • 書籍の執筆にも積極的 • 最近興味があるのはNyantech Atsushi Umakatsu (horsewin)
Full-Stack engineer Personality
RECETTE おしながき • cdk8sとは? • cdk8s+? • cdk8s(+)でできること、できないこと • DEMO
k8s要素は 少ないよ!
cdk8sとは?
cdk8sとは?
cdk for Kubernetesとは?
cdk8sはCDKでKubernetesを実践できるOSS • beta version: 2020年5月 • 最初のタグは2020年2月 • 5月にニュースリリース(*1) •
一般公開(GA): 2021年10月(*2) • CDK用語のL1 Constructsの立ち位置 (*1): https://aws.amazon.com/about-aws/whats-new/2020/05/introducing-the-cdk-for-kubernetes-a-new-software-development-framework-and-open-source-project-for- de fi ning-kubernetes-applications-using-code/ (*2): https://aws.amazon.com/about-aws/whats-new/2021/10/cdk-kubernetes-cdk8s-available/
概念図 • App • cdk8sアプリケーションの最上位要素 • Chartとの依存関係や各Chartのパラメータを定義 • Chart •
自動生成されるYAMLの単位 • Chartの入れ子は別YAMLとして生成 • Constructs • マニフェストを構成するコンポーネント
使えるcdkコマンド • cdk8s init • cdk8s import • cdk8s synth
• cdk8sは記述したプログラムコードを元にk8sマニフェスト(YAML)を生成 • 生成したYAMLをkubectlコマンドで直接Kubernetesコントロールプレーンに反映 k8sへの適用方法
• cdk8sは記述したプログラムコードを元にk8sマニフェスト(YAML)を生成 • 生成したYAMLをkubectlコマンドで直接Kubernetesコントロールプレーンに反映 k8sへの適用方法 AWSのアイコンが出てこない?
AWSに限らずにマニフェストを展開可能
cdk8s+とは?
cdk8s+を使うとよりシンプルにk8sを記述 • beta version: 2020年11月 • 2020年11月のCDK EKS Construct Libraryニュースリリースの中で登場(*1)
• 一般公開(GA): 2022年10月(*2) • CDK用語のL2 Constructsの立ち位置 (*1): https://aws.amazon.com/about-aws/whats-new/2020/11/aws-cdk-eks-construct-library-available-developer-preview/ (*2): https://aws.amazon.com/about-aws/whats-new/2022/10/cdk-kubernetes-cdk8s-availability-manifest-validation-support/
CDKとの対比(cdk8s+ GA前) 抽象化層の不在 (注意): ベータバージョンはありましたが一般公開したもので構成するという考えで構図を書いています Helmチャート が比較的近い
CDKとの対比(cdk8s+ GA)
cdk8s vs cdk8s+ cdk8s cdk8s+
cdk8s vs cdk8s+ cdk8s cdk8s+ k8sのマニフェストを 意識したJSON構造 selectorも含める 詳細な設定記述が必要
cdk8s vs cdk8s+ cdk8s cdk8s+ k8sのマニフェストを 意識しない記述 selector定義がなくても自 動でPodを選択して起動
cdk8s vs cdk8s+ • 生成されるYAMLの違いに注目(左:cdk8s、右:cdk8s+)
cdk8s vs cdk8s+ • 生成されるYAMLの違いに注目(左:cdk8s、右:cdk8s+) cdk8s+では多くの設定がデフォルト値として 設定された状態でYAMLが生成される
cdk8s(+)で できること、できないこと
cdk8s(+)で できること、できないこと
プログラマブルなマニフェスト生成 • CDKで対応しているプログラミング言語を利用してk8sマニフェストの作成が可能 • 静的型付けがあるTypeScript、Golangなどであれば型チェックのフォローも強固 • IDEの強力な補完も利用可能 • cdk8s+ではデフォルト値をうまく活用し最小限の設定でマニフェストの作成可能 •
マニフェスト生成(cdk synth)コマンド実行時の環境変数の切り替えで環境ごとのマニ フェストの生成が可能 • kptやKustomizeで実施していたベースマニフェストと環境値の統合も可能
Helmとの連携 • Helm(*1) • k8s用に構築されたソフトウェアを検索、共有、使用するための方法 • k8sアプリケーションのコンポーネント(nginx、redisなど)を提供するツール • Helmリポジトリに公開されているHelmチャートをcdk8sから直接利用できる (*1)
https://helm.sh/ja/
CDK本線と連携 • CDKで生成したEKSから直接利用が可能 • https://docs.aws.amazon.com/cdk/api/v1/docs/aws-eks-readme.html#cdk8s- charts • cdk deployによって、クラウドリソースの更新とk8sマニフェストの適用を同時に実施 •
内部的にはLambdaでkubectlを叩いてk8sリソースを更新
cdk8s(+)で できること、できないこと
cdk8s単体ではデプロイはできない • あくまでk8sマニフェスト生成にフォーカスしている • CDKの体験の良さとしてはIDEサポート以外にもシンプルにデプロイできる、ホット リロードなどもあると考えている • CDKで生成/取込したEKSと統合しなければ cdk deployはできない
• GitOpsのようなアプローチにはマッチしている • cdk8sの責務としてk8sマニフェスト生成までという割り切りは非常に共感 • その先はk8sの世界観や開発者体験に委ねるという思想
実装と実態の剥離の検知 • CDKの実行環境となるCloudFormationには、適用したコードと実際デプロイされているリソー スの剥離を検知するDrift detection機能がある • cdk8s、cdk8s+はk8sクラスタに展開されるワークロードの内容を記述している • AWSリソースの内容を記述しているわけではないため、CloudFormationは使えない •
実際にk8sクラスタにデプロイされている内容は別の方法で確認が必要 • kubectlコマンド(kubectl get podsなど) • EKSではあればAWS マネジメントコンソール • ArgoCDのダッシュボード等
その他 • 抽象化されているため予想外のオプションが設定されることがある • 例:Pod Security ContextでPodが起動しない • CIS for
Kubernetesではルート権限によるコンテナ起動は避けるべきと推奨 • cdk8s+では意識せずともsecurityContextにrunAsNonRootが指定 • runAsUserを明示的に指定しなければAdmission Controllerで拒否されることも
DEMO
まとめ • cdk8sはCDKでKubernetesマニフェストを生成可能としたソフトウェア • CDKのコーディング体験でk8sのマニフェストの生成が可能 • L1 ConstructsとしてKubernetesコンポーネントを記述可能 • cdk8s+はcdk8sが提供しているライブラリ
• L2 Constructsとして直感的にKubernetesコンポーネントを記述可能 • CDKでEKSを扱うプロダクトでは集約した管理、デプロイも可能 • ただし責務分離を意識しデプロイはKubernetesのプラクティスを適用をオススメ
Thank you a lot!