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
840
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
72
コントリビューションWSが与えた 影響に思いを馳せる
horsewin
1
88
Cloud Run jobsをバッチ処理基盤として使いたい
horsewin
0
270
いまならこう作りたい AWSコンテナ[本格]入門ハンズオン 〜2024年版 ハンズオンの構想〜
horsewin
11
4.1k
「teachme」で作る心地よい ハンズオン体験構築のノウハウ ~ Google Cloudのハンズオンといえばコレ!~
horsewin
1
120
Console-to-Code が出たのでCDK職人を卒業しま◯◯
horsewin
0
910
GAになったGolangでCDKを触ってみよう
horsewin
2
460
Cortana Skill 触ってみた
horsewin
0
83
Alexaスキル開発〜 Node.js から Typescript へ〜
horsewin
0
81
Other Decks in Technology
See All in Technology
プライバシー保護の理論と実践
lycorptech_jp
PRO
1
220
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
360
Fabricをフル活用する AI Agent Hub -製造業特化AIエージェントの設計
iotcomjpadmin
0
180
WebGIS AI Agentの紹介
_shimizu
0
610
小さいから、全部わかる。— 常駐AI "xangi" のすすめ
sugupoko
0
220
起点・思考・出力で分解する 〜PM業務の自動化設計〜
kazu_kichi_67
2
1.2k
AIペネトレーションテスト・ セキュリティ検証「AgenticSec」紹介資料
laysakura
2
7.9k
飲食店もAIで。レジ締めやハンディシステムをつくってる話 / Using AI for restaurant management
vtryo
0
220
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
1
130
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
AI時代における最適なQA組織の作り方
ymty
3
330
LiDAR SLAMの実装とセンサ融合 ~Lie群からContinuous-Time LIOまで~
naokiakai
1
790
Featured
See All Featured
Claude Code のすすめ
schroneko
67
230k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
590
Ruling the World: When Life Gets Gamed
codingconduct
0
270
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
340
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Design in an AI World
tapps
1
250
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
760
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!