$30 off During Our Annual Pro Sale. View Details »

Spinnakerを利用したKubernetesへの継続的デリバリ

 Spinnakerを利用したKubernetesへの継続的デリバリ

[Japan Container Days v18.04 発表資料] #containerdaysjp
商用環境へのK8s導入を検討する際、"安全でスピーディーなデプロイ"を実現するために考えなければならないことは色々とあります。CIとの連携やロールバック、Blue/Greenデプロイ、カナリアデプロイなど・・・。これらに対して有効な手段になり得るツールが"Spinnaker"です。本セッションでは、K8sのプラットフォームに対する継続的デリバリの実現方法として、SpinnakerというCDツールを利用した方法を具体例も交えてご紹介いたします。

More Decks by AP Communications Co., Ltd.

Other Decks in Technology

Transcript

  1. Spinnakerを利用した
    Kubernetesへの
    継続的デリバリ
    株式会社エーピーコミュニケーションズ 溝内 崇

    View Slide

  2. アジェンダ
    1. 自己紹介
    2. Spinnakerを導入するメリット
    3. Spinnakerとは?
    4. Spinnakerの機能紹介
    5. 参考情報
    6. 所感
    • トレーニング紹介

    View Slide

  3. 自己紹介
    • 溝内 崇 (インフラエンジニア)
    • 株式会社エーピーコミュニケーションズ
    • 業務
    - クラウド上でセキュアな検証システムを設計/構築
    - (営業支援の一環で)OSSの検証/評価

    View Slide

  4. 今年、デブサミ登壇しました。
    https://codezine.jp/article/detail/10709
    https://www.slideshare.net/devsumi/15blspinnaker

    View Slide

  5. 株式会社エーピーコミュニケーションズ
    APCって言ったりします
    • 設 立:1995年
    • 社員数:375名 2018年4月時点
    • 7割はインフラエンジニア
    アプリ開発や技術研究もやってます
    米ミランティスとのジョイントベンチャー
    『ミランティス・ジャパン株式会社』を設立

    View Slide

  6. 今回話す内容
    Kubernetes (k8s)の環境で、安全にアプリ
    ケーションをデプロイする仕組みについて

    View Slide

  7. Spinnakerを導入するメリット
    Kubernetes、コンテナのケアする部分とSpinnakerを導入する理由について

    View Slide

  8. なぜコンテナを使うのか?
    コンテナとは、アプリの実行環境をひと固
    まりにしたもの
    コンテナには以下のメリットがあります
    - ポータビリティ
    - 軽量
    - 実行環境の隔離

    View Slide

  9. なぜコンテナを使うのか?
    具体的なユースケース
    開発環境⇔本番環境で環境差分が発生することがよくあり
    その差分が意図しない事故を引き起こすことがある。
    - 開発環境で設定した内容が、本番環境に設定されていない
    - 本番環境に、作業者が想定していない設定が入っていた
    【解決策】コンテナで、アプリ依存関係全てをパッケージング
    して別の環境に載せることで、全く同じ環境を再現できる。

    View Slide

  10. Kubernetesの役割
    以下の管理をk8sが担う
    • 複数のDockerホストの管理
    • コンテナの死活監視
    • 障害時のセルフ ヒーリング
    • ロードバランサーの組み込み
    • 永続的なデータの管理
    • ログの管理 etc..

    View Slide

  11. Kubernetesで実現が難しい課題
    •CI/CDの機能がない
    ⇒別途用意する必要がある

    View Slide

  12. そもそも、CI/CDとは?
    CI:継続的インテグレーション
    (Continuous Integration)

    View Slide

  13. そもそも、CI/CDとは?
    CD:継続的デリバリ
    (Continuous Delivery)

    View Slide

  14. そもそも、CI/CDとは?
    高品質なプロダクトを素早く
    ユーザーに届ける

    View Slide

  15. そもそも、CI/CDとは?
    Spinnakerにより、Kubernetes上でCDを実
    現できる(CIは別途連携が必要)

    View Slide

  16. Spinnakerとは?
    Spinnaker は何ができるのか?

    View Slide

  17. Spinnakerの説明

    View Slide

  18. Spinnakerの説明
    •Netflix社が開発したOSS
    Google,Microsoftなども開発に参画
    •マルチクラウド対応CDツール
    様々なプラットフォームで利用できる
    •アプリケーションの自動デプロイに必要な
    機能が実装
    パイプラインやBlue/Greenデプロイなど

    View Slide

  19. サポートしているプラットフォーム

    View Slide

  20. Spinnakerの機能紹介
    Spinnaker のさまざまの機能を紹介

    View Slide

  21. Spinnakerの機能①
    •Kubernetesにデプロイする機能が標準的
    に実装されている

    View Slide

  22. サポートしているプラットフォーム

    View Slide

  23. Spinnakerの機能②
    •GUIでパイプラインを簡単に作成できる

    View Slide

  24. パイプラインとは?
    Push Build
    [stg]
    Deploy
    &
    Test
    [prod]
    Deploy
    &
    Test
    異常の
    場合
    RollBack

    View Slide

  25. パイプラインの設定画面

    View Slide

  26. パイプラインの実行結果

    View Slide

  27. Spinnaker の機能③
    •複数のデプロイメント方法をサポート
    - Red/Black Deploy(=Blue/Green)
    - Rolling Red/Black Deploy
    - Canary Deploy

    View Slide

  28. Red/Black Deploy
    ユースケース
    切り替え/切り戻しを瞬断で行いたい

    View Slide

  29. Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  30. Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  31. Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  32. Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  33. Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  34. Rolling Red/Black Deploy
    ユースケース
    段階的に切り替えたい
    - 一発で切り替えるのはリスクがある
    - 問題が発生したときのリスクは可能な限り下
    げたい

    View Slide

  35. Rolling Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  36. Rolling Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  37. Rolling Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  38. Rolling Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼
    ▼ ▼

    View Slide

  39. Rolling Red/Black Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  40. Canary Deploy
    ユースケース
    最小構成デプロイし、その後様子見した
    上で切り替えたい
    - 切り替えの早さより、リスクを最小限に抑え
    たい

    View Slide

  41. Canary Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  42. Canary Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  43. Canary Deploy
    Load Balancer
    V1 V1
    V1 V1
    V2 V2
    V2 V2
    ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

    View Slide

  44. 切り戻しも簡単

    View Slide

  45. Spinnakerの機能④
    •パイプライン中にカスタムスクリプトの実
    行が可能
    - Serverspec、Seleniumなどで工程ごとに試
    験を実施することができる

    View Slide

  46. カスタムスクリプトの実行
    Push Build
    [stg]
    Deploy
    &
    Test
    [prod]
    Deploy
    &
    Test
    異常の
    場合
    RollBack

    View Slide

  47. Spinnakerの機能⑤
    •CIツールは別途必要となるので注意
    ※SpinnkaerはCDツール

    View Slide

  48. CIツール Spinnakerの対応
    Jenkins ○
    Travis CI ○
    Concourse CI ×
    CircleCI ×
    DRONE ×
    連携できるCIツール

    View Slide

  49. Spinnakerの機能⑥
    •進捗状況を通知することが可能

    View Slide

  50. Spinnakerからの通知(Slack)

    View Slide

  51. Spinnakerの機能⑦
    •パイプラインの途中で承認フローを組み込
    むことが可能

    View Slide

  52. 承認(Manual Judgement)

    View Slide

  53. 参考情報
    その他

    View Slide

  54. その他の機能
    •White-listed Execution Windows
    •Chaos Monkey Integration
    •Enable Monitoring
    - Datadog
    - Prometheus
    - Stackdriver

    View Slide

  55. その他の機能
    •Triggering on Webhooks
    •Authentication
    - OAuth 2.0
    - SAML
    - LDAP
    - X.509

    View Slide

  56. Spinnaker Kubernetes
    Instance Pod
    Server Group ReplicaSet
    Cluster Deployment
    Load Balancers Service
    Security Groups Ingress
    Spinnaker⇔k8sのマッピング

    View Slide

  57. Spinnakerのこれから
    •短期間でバージョンアップ予定
    ⇒約2ヶ月ごとに更新
    •k8sのManifestをデプロイする機能が追加
    ⇒k8sの環境そのものをCDすることが可能に
    •カナリアテストを自動で行うOSS「Kayenta」と連携
    が可能
    ⇒人間の目では見逃してしまう問題を検知することが可能

    View Slide

  58. 所感
    私の感じたメリット、デメリット

    View Slide

  59. 所感
    • 現時点では情報が少ない
    • IaaSも対象としたGUIなので、k8sの用語
    とのミスマッチ感がある

    View Slide

  60. 所感
    • CDする上で必要な機能が過不足なく揃っ
    ている
    • Spinnaker(GUI)上でk8sのコンポーネン
    トを作成できるのは便利
    • 機能拡充が進んでおり今後の動向に期待で
    きる

    View Slide

  61. 61
    コンテナ・トレーニングコース
    Kubernetes & Docker 管理入門
    DockerとKubernetesに関する基礎的な知識や操作方法を習得
    • 2.5日間の入門コース
    - 豊富なハンズオン実習〜全体の50%程度を実習に割当
    - 3日目にはミランティス社認定試験を実施
    Kubernetes & Docker 管理
    Kubernetesアーキテクチャやネットワーク、セキュリティ、そしてロギ
    ング・モニタリングを含む監視機能や問題発生時の対処方法など、運
    用管理に必要な知識を豊富なハンズオン実習を通じて習得
    • 3日間の実践コース
    ★お手持ちの袋に、詳細の内容を記載したチラシがありますので興味ある方はご参照ください。

    View Slide

  62. ご清聴ありがとうございました。

    View Slide