Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
cdk8s(+)ではじめるKubernetes
Search
horsewin
December 14, 2022
Technology
1
740
cdk8s(+)ではじめるKubernetes
2022/12/14に実施されたJAWS-UG CDK支部 #4の登壇資料です。
horsewin
December 14, 2022
Tweet
Share
More Decks by horsewin
See All by horsewin
コントリビューションWSが与えた 影響に思いを馳せる
horsewin
1
53
Cloud Run jobsをバッチ処理基盤として使いたい
horsewin
0
140
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
10
3.5k
「teachme」で作る心地よい ハンズオン体験構築のノウハウ ~ Google Cloudのハンズオンといえばコレ!~
horsewin
0
53
Console-to-Code が出たのでCDK職人を卒業しま◯◯
horsewin
0
750
GAになったGolangでCDKを触ってみよう
horsewin
2
400
Cortana Skill 触ってみた
horsewin
0
59
Alexaスキル開発〜 Node.js から Typescript へ〜
horsewin
0
47
ASK-CLI使っていますか?
horsewin
0
27
Other Decks in Technology
See All in Technology
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
2
130
CI/CDとタスク共有で加速するVibe Coding
tnbe21
0
230
【TiDB GAME DAY 2025】Shadowverse: Worlds Beyond にみる TiDB 活用術
cygames
0
790
監視のこれまでとこれから/sakura monitoring seminar 2025
fujiwara3
10
2.8k
Observability в PHP без боли. Олег Мифле, тимлид Altenar
lamodatech
0
260
[TechNight #90-1] 本当に使える?ZDMの新機能を実践検証してみた
oracle4engineer
PRO
3
140
Clineを含めたAIエージェントを 大規模組織に導入し、投資対効果を考える / Introducing AI agents into your organization
i35_267
4
1.3k
IAMのマニアックな話 2025を執筆して、 見えてきたAWSアカウント管理の現在
nrinetcom
PRO
4
640
Perk アプリの技術選定とリリースから1年弱経ってのふりかえり
stomk
0
120
~宇宙最速~2025年AWS Summit レポート
satodesu
1
980
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
2
210
Agentic Workflowという選択肢を考える
tkikuchi1002
1
340
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
Agile that works and the tools we love
rasmusluckow
329
21k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Automating Front-end Workflow
addyosmani
1370
200k
What's in a price? How to price your products and services
michaelherold
245
12k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
Become a Pro
speakerdeck
PRO
28
5.4k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
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!