Kind で量産する使い捨て Kubernetes #cicd_test_night / CICD Test Night 5th

332f89cc697355902a817506b6995f2b?s=47 y_taka_23
October 02, 2019

Kind で量産する使い捨て Kubernetes #cicd_test_night / CICD Test Night 5th

CI/CD Test Night #5 で使用したスライドです。

コンテナを利用してローカルにマルチノード Kubernetes クラスタを立ち上げるツール Kind(Kubernetes IN Docker)を紹介します。

従来、CI 用に Kubernetes クラスタが必要な場合、取れる選択肢は「Pull Request ごとに Namespace を作成」もしくは「Pull Request ごとにマネージドクラスタを振り出し」のいずれかでした。Kind を CI パイプラインに組み込むことにより、従来よりも素早く、かつ低コストでクラスタを立ち上げて使い捨てることが可能になります。

イベント概要:https://testnight.connpass.com/event/145238/

332f89cc697355902a817506b6995f2b?s=128

y_taka_23

October 02, 2019
Tweet

Transcript

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

    (2019/10/02) #cicd_test_night
  2. Kubernetes 使ってる人? #cicd_test_night

  3. 流行ってますね! #cicd_test_night

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

  5. Kubernetes の光と †闇† • Platform のための Platform ◦ Kubernetes を前提とした多数の

    OSS ◦ Webehook による処理の挿入 ◦ Custom Resource + Controller による API 拡張 • 実際に E2E テストしないと検証が困難 ◦ 複数のカスタマイズが干渉しないか? ◦ バージョンアップしても大丈夫か? #cicd_test_night
  6. 現物の Kubernetes クラスタを CI 上から使いたい #cicd_test_night

  7. 案 A:ビルドごとに Namespace • 一つのクラスタを Namespace で分割 ◦ 長所:準備・撤収が早い、追加コストが安い ◦

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

    PR #2 PR #3 #cicd_test_night
  9. もっと手軽に使い捨てたい #cicd_test_night

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

  11. Kind の特徴 • マルチノードの Kubernetes が作成可能 ◦ 他のツールはシングルノードのみ ◦ 複数コンテナを立ち上げてノードと見なす

    • 自由度の高いカスタマイズ ◦ ノード (control-plane, worker) 構成 ◦ Kubernetes のバージョン指定 ◦ Control-Plane の実行時設定も指定可能 #cicd_test_night
  12. Docker OS (K8s は Kubernetes の略) #cicd_test_night

  13. YAML でクラスタを定義 #cicd_test_night

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

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

  16. Docker OS Container (K8s Node) Container (K8s Node) (K8s は

    Kubernetes の略) #cicd_test_night
  17. Kubernetes IN Docker https://github.com/kubernetes-sigs/kind #cicd_test_night

  18. Docker OS Container (K8s Node) Container (K8s Node) (K8s は

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

    K8s Container K8s Container K8s Container K8s Container (K8s は Kubernetes の略) #cicd_test_night
  20. Docker が使えればどこでも立つ #cicd_test_night

  21. CircleCI との組み合わせ例 #cicd_test_night

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

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

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

  25. まとめ • Kubernetes のプラットフォーム化 ◦ クラスタの実物がないと検証が辛い • Kind によるローカルクラスタ構築 ◦

    複数のコンテナをノードに見立てる ◦ 自由度の高いカスタマイズ要素 • Pull-Request ベースの CI との統合 ◦ コンテナベースなのでビルドに組み込みやすい #cicd_test_night
  26. Enjoy Continuous Kubernetes! Presented by チェシャ猫 (@y_taka_23) #cicd_test_night