Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

Spinnakerの説明

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

パイプラインの設定画面

Slide 26

Slide 26 text

パイプラインの実行結果

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

Canary Deploy Load Balancer V1 V1 V1 V1 V2 V2 V2 V2 ▼ ▼ ▼ ▼ ▼ ▼

Slide 42

Slide 42 text

Canary Deploy Load Balancer V1 V1 V1 V1 V2 V2 V2 V2 ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

Slide 43

Slide 43 text

Canary Deploy Load Balancer V1 V1 V1 V1 V2 V2 V2 V2 ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼

Slide 44

Slide 44 text

切り戻しも簡単

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Spinnakerからの通知(Slack)

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

承認(Manual Judgement)

Slide 53

Slide 53 text

参考情報 その他

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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