Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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/

y_taka_23

October 02, 2019
Tweet

More Decks by y_taka_23

Other Decks in Technology

Transcript

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

    View Slide

  2. Kubernetes 使ってる人?
    #cicd_test_night

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  12. Docker
    OS (K8s は Kubernetes の略)
    #cicd_test_night

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide