Slide 1

Slide 1 text

脱・コピペ! 自分で調べて書くK8sマニフェスト 日本仮想化技術株式会社 [email protected] 2026/02/25 1

Slide 2

Slide 2 text

日本仮想化技術株式会社 概要 • 社名:日本仮想化技術株式会社 • 英語名:VirtualTech Japan Inc. • 設立:2006年12月 • 資本金:3,000万円 • 本社:東京都渋谷区渋谷1-8-1 • 取締役:宮原 徹(代表取締役社長兼CEO)、伊藤 宏通(取締役CTO) • スタッフ:11名(うち、8名が仮想化技術専門エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 • 仮想化技術に関する各種調査 • 仮想化技術に関連したソフトウェアの開発 • 仮想化技術を導入したシステムの構築 • OpenStackの導入支援・新規機能開発 2 ベンダーニュートラルな 独立系仮想化技術の エキスパート集団 会社概要

Slide 3

Slide 3 text

わたくしについて • 北海道在住 • かんたんDevOps • DevOpsのOps側 • 書籍執筆 • Webメディア連載 • DevOpsを実現するために行うこと・考えること https://thinkit.co.jp/corner/10843 • WSL2で始めるLinux環境構築術 https://thinkit.co.jp/corner/11545 • 実践で学ぶDevOpsツールの使いこなし術 https://thinkit.co.jp/corner/11642 3

Slide 4

Slide 4 text

アジェンダ • K8sのマニフェストは難しい • マニフェストの調べ方 • まとめ 4

Slide 5

Slide 5 text

今回しない話 • 各リソースの動作の詳細説明 • Deploymentがどう動くか、Serviceの仕組みなど • 全リソースの網羅的な解説 • Pod / Service / Ingress / PVC / … を一通り説明はしない → 調べ方さえわかれば、あとは自分で書ける 5

Slide 6

Slide 6 text

K8sのマニフェストは 難しい 6

Slide 7

Slide 7 text

K8sのマニフェストは難しい 7

Slide 8

Slide 8 text

難しい理由 (1/3) • APIのバージョンによって書き方が違う • 同じDeploymentでも apps/v1 と extensions/v1beta1 で構造が 違う • フィールドが必須なのかパッと見でわからない • selector は必須、resources は省略可 → どうやって判断する? • フィールドが多すぎる • Deployment だけで数十のフィールドが存在する 8

Slide 9

Slide 9 text

難しい理由 (2/3) ドキュメントが役に立たないことがある • 一部の設定値しか解説されていない • フィールドの存在は書いてあるが、何を設定すればどう動くかは書いていない • 古いバージョンのドキュメントが見つからない • 公式は最新版のみ更新される。過去バージョンはGitHubを掘るしかない • そもそもドキュメントが存在しない • サードパーティ製のCRDはドキュメントが皆無なことも珍しくない • 場所がわかりづらい • ドキュメントはあるものの階層が深すぎて目的のドキュメントに辿り着けない • 全部英語 • そもそも読む気が失せる → 翻訳アプリ・生成AIで要約してもらうと一気にハードル が下がる • これから出てくる調べ方も説明は全部英語なので慣れるしかない 9

Slide 10

Slide 10 text

難しい理由 (3/3) YAMLの型の罠 10

Slide 11

Slide 11 text

K8sのマニフェストは難しい • APIのバージョンによって書き方が違う • フィールドが必須なのかパッと見でわからない • そもそもフィールドが多すぎる • ドキュメントが役に立たないことがある • YAMLの型の罠 → 自分で調べる力が必要! 11

Slide 12

Slide 12 text

マニフェストの調べ方 12

Slide 13

Slide 13 text

マニフェストの調べ方 1. APIのバージョンを調べる 2. 公式ドキュメントをみる 3.kubectl create で叩き台を作る 4.kubectl explain で設定値を調べる 13

Slide 14

Slide 14 text

1. APIのバージョンを調べる 14 1. api-resourcesでリソースのAPIGROUPを調べる 2. api-versionsでリソースのバージョンを調べる

Slide 15

Slide 15 text

1. APIのバージョンを調べる もっと簡単に調べるには? 15

Slide 16

Slide 16 text

1. APIのバージョンを調べる 16 kubectl explainで十分(explainについては後で説明します)

Slide 17

Slide 17 text

2. 公式ドキュメントをみる https://kubernetes.io/docs/reference/kubernetes-api/ • リソースの概要・用途が分かる • フィールドの一覧が載っている • 標準リソース(Deployment, Service など)は充実している 限界を知った上で使う • 自分のクラスターとバージョンが違う可能性がある • 説明が薄いフィールドもある → 詳細は kubectl explain で補う 17

Slide 18

Slide 18 text

3. kubectl create で叩き台を作る ゼロから書く問題:どこに何を書いたらいいのかわからない 18

Slide 19

Slide 19 text

3. kubectl create で叩き台を作る 19

Slide 20

Slide 20 text

3. kubectl create で叩き台を作る 20

Slide 21

Slide 21 text

3. kubectl create で叩き台を作る 21

Slide 22

Slide 22 text

3. kubectl create で叩き台を作る 22

Slide 23

Slide 23 text

3. kubectl create で叩き台を作る 23

Slide 24

Slide 24 text

3. kubectl create で叩き台を作る --dry-run=client と --dry-run=server の違い --dry-run=client --dry-run=server サーバー接続 不要 必要 API の情報源 kubectl バイナリ自身 クラスター 出力 最小限のフィールドのみ デフォルト値・自動付与フィー ルドも含む 用途 叩き台の生成 マニフェストの検証 24

Slide 25

Slide 25 text

--dry-run=client の注意点 • --dry-run=client は kubectl が知っている API 定義でマニ フェストを生成する • クラスターにデプロイされているリソースのバージョンではない • kubectl とクラスターのバージョンが離れていると、生成され るマニフェストがクラスターと合わない可能性がある 25

Slide 26

Slide 26 text

3. kubectl create で叩き台を作る • コマンドラインで指定 → YAML の構造を覚えなくていい • どの階層に書くかは kubectl create が調整してくれる • あとはファイルに保存して、足りない設定を追記するだけ 26

Slide 27

Slide 27 text

4. kubectl explain で設定値を調べる 27

Slide 28

Slide 28 text

4. kubectl explain で設定値を調べる 28

Slide 29

Slide 29 text

4. kubectl explain で設定値を調べる 29

Slide 30

Slide 30 text

もっと簡単にサンプルが欲しい方へ • crd-to-sample-yamlというWebサービスがある https://crdtoyaml.com/ • CRDをペーストするだけで全体のサンプルが作成される • K8sの標準リソースには使えない • 標準リソースにCRD(CustomResourceDefinition)が存在しない • 拡張リソースではない • 標準リソースはkubectl createで出力できる 30

Slide 31

Slide 31 text

もっと簡単にサンプルが欲しい方へ 31

Slide 32

Slide 32 text

もっと簡単にサンプルが欲しい方へ 32

Slide 33

Slide 33 text

マニフェストの調べ方:まとめ 1. クラスターにデプロイされているAPIバージョンを把握 ↓ 2. 公式ドキュメントで概要・全体像を把握 ↓ 3. kubectl create で叩き台を生成 ↓ 4. kubectl explain で足りないフィールドを調べながら追記 分からないフィールドに出会ったら kubectl explain <リソース>.<フィールドのパス> 33

Slide 34

Slide 34 text

まとめ 34

Slide 35

Slide 35 text

まとめ • 分からないフィールドに出会ったら kubectl explain で調べる癖をつ けましょう • 「K8sのマニフェストは難しい」は過去の話 • 調べ方をマスターしてサンプルを探す旅に終止符を打ちましょう 35

Slide 36

Slide 36 text

36