Slide 1

Slide 1 text

Kind で量産する 使い捨て Kubernetes チェシャ猫 (@y_taka_23) CI/CD Test Night #5 (2019/10/02) #cicd_test_night

Slide 2

Slide 2 text

Kubernetes 使ってる人? #cicd_test_night

Slide 3

Slide 3 text

流行ってますね! #cicd_test_night

Slide 4

Slide 4 text

でも凝りすぎると辛くない? #cicd_test_night

Slide 5

Slide 5 text

Kubernetes の光と †闇† ● Platform のための Platform ○ Kubernetes を前提とした多数の OSS ○ Webehook による処理の挿入 ○ Custom Resource + Controller による API 拡張 ● 実際に E2E テストしないと検証が困難 ○ 複数のカスタマイズが干渉しないか? ○ バージョンアップしても大丈夫か? #cicd_test_night

Slide 6

Slide 6 text

現物の Kubernetes クラスタを CI 上から使いたい #cicd_test_night

Slide 7

Slide 7 text

案 A:ビルドごとに Namespace ● 一つのクラスタを Namespace で分割 ○ 長所:準備・撤収が早い、追加コストが安い ○ 短所:クラスタの構成や設定はカスタム不可 PR #1 PR #2 PR #3 #cicd_test_night

Slide 8

Slide 8 text

案 B:ビルドごとにクラスタ ● マネージドサービスから毎回振り出し ○ 長所:バージョンやクラスタの構成が可変 ○ 短所:立ち上がりが遅く、お金もかかる PR #1 PR #2 PR #3 #cicd_test_night

Slide 9

Slide 9 text

もっと手軽に使い捨てたい #cicd_test_night

Slide 10

Slide 10 text

Kind https://github.com/kubernetes-sigs/kind #cicd_test_night

Slide 11

Slide 11 text

Kind の特徴 ● マルチノードの Kubernetes が作成可能 ○ 他のツールはシングルノードのみ ○ 複数コンテナを立ち上げてノードと見なす ● 自由度の高いカスタマイズ ○ ノード (control-plane, worker) 構成 ○ Kubernetes のバージョン指定 ○ Control-Plane の実行時設定も指定可能 #cicd_test_night

Slide 12

Slide 12 text

Docker OS (K8s は Kubernetes の略) #cicd_test_night

Slide 13

Slide 13 text

YAML でクラスタを定義 #cicd_test_night

Slide 14

Slide 14 text

YAML でクラスタを定義 冗長化 Control Plane 2 台 + LB #cicd_test_night

Slide 15

Slide 15 text

YAML でクラスタを定義 Worker 3 台 #cicd_test_night

Slide 16

Slide 16 text

Docker OS Container (K8s Node) Container (K8s Node) (K8s は Kubernetes の略) #cicd_test_night

Slide 17

Slide 17 text

Kubernetes IN Docker https://github.com/kubernetes-sigs/kind #cicd_test_night

Slide 18

Slide 18 text

Docker OS Container (K8s Node) Container (K8s Node) (K8s は Kubernetes の略) Docker Docker #cicd_test_night

Slide 19

Slide 19 text

Docker OS Container (K8s Node) Container (K8s Node) Docker Docker K8s Container K8s Container K8s Container K8s Container (K8s は Kubernetes の略) #cicd_test_night

Slide 20

Slide 20 text

Docker が使えればどこでも立つ #cicd_test_night

Slide 21

Slide 21 text

CircleCI との組み合わせ例 #cicd_test_night

Slide 22

Slide 22 text

CircleCI との組み合わせ例 Machine Executor #cicd_test_night

Slide 23

Slide 23 text

CircleCI との組み合わせ例 クラスタ作成 #cicd_test_night

Slide 24

Slide 24 text

CircleCI との組み合わせ例 クラスタにアクセス #cicd_test_night

Slide 25

Slide 25 text

まとめ ● Kubernetes のプラットフォーム化 ○ クラスタの実物がないと検証が辛い ● Kind によるローカルクラスタ構築 ○ 複数のコンテナをノードに見立てる ○ 自由度の高いカスタマイズ要素 ● Pull-Request ベースの CI との統合 ○ コンテナベースなのでビルドに組み込みやすい #cicd_test_night

Slide 26

Slide 26 text

Enjoy Continuous Kubernetes! Presented by チェシャ猫 (@y_taka_23) #cicd_test_night