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

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

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

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

Transcript

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

  2. アジェンダ 1. 自己紹介 2. Spinnakerを導入するメリット 3. Spinnakerとは? 4. Spinnakerの機能紹介 5.

    参考情報 6. 所感 • トレーニング紹介
  3. 自己紹介 • 溝内 崇 (インフラエンジニア) • 株式会社エーピーコミュニケーションズ • 業務 -

    クラウド上でセキュアな検証システムを設計/構築 - (営業支援の一環で)OSSの検証/評価
  4. 今年、デブサミ登壇しました。 https://codezine.jp/article/detail/10709 https://www.slideshare.net/devsumi/15blspinnaker

  5. 株式会社エーピーコミュニケーションズ APCって言ったりします • 設 立:1995年 • 社員数:375名 2018年4月時点 • 7割はインフラエンジニア

    アプリ開発や技術研究もやってます 米ミランティスとのジョイントベンチャー 『ミランティス・ジャパン株式会社』を設立
  6. 今回話す内容 Kubernetes (k8s)の環境で、安全にアプリ ケーションをデプロイする仕組みについて

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

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

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

  10. Kubernetesの役割 以下の管理をk8sが担う • 複数のDockerホストの管理 • コンテナの死活監視 • 障害時のセルフ ヒーリング •

    ロードバランサーの組み込み • 永続的なデータの管理 • ログの管理 etc..
  11. Kubernetesで実現が難しい課題 •CI/CDの機能がない ⇒別途用意する必要がある

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

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

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

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

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

  17. Spinnakerの説明

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

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

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

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

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

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

  24. パイプラインとは? Push Build [stg] Deploy & Test [prod] Deploy &

    Test 異常の 場合 RollBack
  25. パイプラインの設定画面

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    V2 V2 ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
  44. 切り戻しも簡単

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

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

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

  48. CIツール Spinnakerの対応 Jenkins ◦ Travis CI ◦ Concourse CI ×

    CircleCI × DRONE × 連携できるCIツール
  49. Spinnakerの機能⑥ •進捗状況を通知することが可能

  50. Spinnakerからの通知(Slack)

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

  52. 承認(Manual Judgement)

  53. 参考情報 その他

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

    Datadog - Prometheus - Stackdriver
  55. その他の機能 •Triggering on Webhooks •Authentication - OAuth 2.0 - SAML

    - LDAP - X.509
  56. Spinnaker Kubernetes Instance Pod Server Group ReplicaSet Cluster Deployment Load

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

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

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

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

  61. 61 コンテナ・トレーニングコース Kubernetes & Docker 管理入門 DockerとKubernetesに関する基礎的な知識や操作方法を習得 • 2.5日間の入門コース -

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