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

Backlog における Kubernetes の取り組み / Kubernetes's approach in Backlog

Backlog における Kubernetes の取り組み / Kubernetes's approach in Backlog

2019/3/8 ヌーラボ 福岡本社で行われたGeeks Who Drinkでの発表資料です。

株式会社ヌーラボ

March 08, 2019
Tweet

More Decks by 株式会社ヌーラボ

Other Decks in Technology

Transcript

  1. Yuki YOSHIIWA a.k.a. iwa Web Frontend Engineer @ Nulab Inc.

    ­ React, TypeScript がだいすき! ­ スイスがすきなので Scala がすき! ­ ≡ もすきです! ­ わんこだいすき! ­ これは若かりし時の我が仔
  2. Backlog は UX 向上にゼンリョク! 速くて使いやすい、新しい UI を作っています ­ React, TypeScript

    ­ Scala (Akka HTTP, Play なし) ­ GraphQL, WebSocket ­ Kubernetes UX を最大化するためインフラレベルから見直し ­ どうなるかはヒミツ
  3. 運用つらい問題 サービスいっぱい ­ Issue, Wiki, Git, File, ... ­ これからも増える予定

    サービスが増えることで、 運用コストが跳ね上がるの は避けたい
  4. Kubernetes とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers
  5. Kubernetes とは オーケストレーション ( コ ンテナーの構成・設定) は yaml で管理する ­

    yaml を正とする運用 (single source of truth) ­ レビューがやりやすい
  6. Kubernetes とは やりすぎた例 ­ VM を管理 ­ K8s を管理 ­

    データセンターを管理 独自のリソース定義を作る ことで、割となんでもでき るカスタマイズ性
  7. EKS とは AWS が提供するマネージ ド Kubernetes サービス ­ 面倒ごとから解放される ­

    クラスターの管理 ­ アップデート Out­of­box で AWS のサ ービスと統合されている
  8. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers
  9. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers API Server など K8s の 根幹となる機能を提供
  10. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers API Server など K8s の 根幹となる機能を提供 落ちたらまずい 部分を運用しな くていい安心感 アップデートを 自動でやってく れる嬉しい!
  11. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers API の認証・認可に IAM Role を使える
  12. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers Node には EKS に最適 化された AMI を使用 Node のスケーリング には Auto Scaling Group を使用
  13. EKS とは Cluster Master Node kube­apiserver Node Node scheduler controller

    manager etcd kubectl kubelet kube­proxy container runtime Pod containers Node には EKS に最適 化された AMI を使用 Node のスケーリング には Auto Scaling Group を使用 信頼と実績のあ る Auto Scaling Group !
  14. なんで EKS ? Cacoo は自分でクラスターを作っていなかった? ­ Cacoo チームからつらいところを聞いていた ­ アップデートなど…

    ­ マネージド K8s が良いという話は聞いていた GKE, AKS は検討しなかった? ­ AWS を利用しているので EKS にした ­ ハイブリッドクラウドはコスト面で厳しい
  15. 実際にあった話 EKS の対応のタイムライン ­ 2018/12/04 02:01 JST: K8s チームがアナウンス ­

    2018/12/04 13:28 JST: 問い合わせ ­ 2018/12/04 17:07 JST: AWS から対応中と返事 ­ 2018/12/05 17:58 JST: 対応完了の知らせ この間、コマンドを叩くことも、画面からぽちぽち することもなく、アップデート完了
  16. 実際にあった話 EKS の対応のタイムライン ­ 2018/12/04 02:01 JST: K8s チームがアナウンス ­

    2018/12/04 13:28 JST: 問い合わせ ­ 2018/12/04 17:07 JST: AWS から対応中と返事 ­ 2018/12/05 17:58 JST: 対応完了の知らせ この間、コマンドを叩くことも、画面からぽちぽち することもなく、アップデート完了 マネージド 最高!
  17. Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis

    log Master kube­apiserver Node Pod New UX Service
  18. Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis

    log Master kube­apiserver Node Pod New UX Service 既存 VPC 内に K8s の Node を配置している
  19. Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis

    log Master kube­apiserver Node Pod New UX Service インターネットからの アクセスは、nginx → K8s から作成した ELB と流れる
  20. Backlog のアーキテクチャ Internet nginx web api git svn MySQL Redis

    log Master kube­apiserver Node Pod New UX Service DB などにはコンテナー から直接アクセス
  21. Terraform 管理対象 ­ IAM Role ­ Network (Subnet, etc) ­

    EKS Cluster ­ Node ­ Auto Scaling Group
  22. Terraform Terraform で Node の AMI を変更しても Node が入 れ替わらない…

    →Terraform では Auto Scaling Group を変更して もローリングアップデートがかからないことがわか った どうするか
  23. Terraform 管理対象 ­ IAM Role ­ Network (Subnet, etc) ­

    EKS Cluster 主に K8s の Master や、 ネットワーク周りを管理し ている
  24. CloudFormation (CFn) AWS 公式 EKS Node のテ ンプレートを利用 ­ Node

    の面倒を引き受け CFn を利用することで Auto Scaling Group 更新 時にローリングアップデー トがかかるように!
  25. まとめ ・Kubernetes (K8s) はとても良いです ・マネージド K8s はすぐに使えて運用も楽です ・EKS を terraform

    で作るときは CloudFormation を terraform で作るようにしましょう… ・フロントエンドに疲れた方は Kubernetes やってみ ませんか?