Slide 1

Slide 1 text

EKSʹRailsをのせた Otemachi.rb #13

Slide 2

Slide 2 text

⾃⼰紹介 • Yusaku Hatanaka (@hatappi) • Mercari, Inc • ϓϥΠϕʔτͰͷRubyΛ࢖ͬͨ׆ಈ • roppongi.rbͷΦʔΨφΠβʔ • Red Data ToolsͰRed Chainerͭͬͯ͘·͢ • RailsΛ࢖ͬͨαʔϏεͷ։ൃ <= ࠓ೔͸͜ͷ࿩ • 煎り⼤⾖が好き

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

Anketとは? • Slack上でアンケートをとるためのサービス • アンケートの作成や投票はSlack上から⾏う • 集計結果はSlack上やWEB上から確認する • 今後は回答結果を取得するようなAPIを追加予定 https://slack.com/apps/ADJRPSY1Y-anket-

Slide 5

Slide 5 text

なぜ作ったのか? • Slack Appを作ってみたかった • 会社でSlackは使っているけど、もっと使い倒したい • 技術を試せる場所がほしかった • 僕はドキュメントや記事を読んでわかった気になって しまうので実際にそれを試すような場がほしかった • サービス作るのおもしろい

Slide 6

Slide 6 text

構成

Slide 7

Slide 7 text

Rails • Ruby 2.5.3 (2.6.1が出たら2.6にしたいなぁ) • Rails 5.2.2 • JSはTypeScriptで書いていて⼀部でReactを使⽤

Slide 8

Slide 8 text

Kubernetsとは? • コンテナ化されたアプリのデプロイなどを⾃動化してくれ るコンテナオーケストレーションエンジン • k8sと略して使う • kubernetes => k8s

Slide 9

Slide 9 text

EKSとは? • AWSの提供するマネージドなKubernetsのサービス • AWSならではの特徴 • VPC サポート • IAM 認証 • EKS APIのAPIコールはCloudTailで記録 • etc

Slide 10

Slide 10 text

例えばRailsに機能追加 をしてデプロイする

Slide 11

Slide 11 text

サービスを ⽌めたくない!

Slide 12

Slide 12 text

RollingUpdate old new old new old new old new old new • maxUnavailableでRolling Update時 に使えなくなるpod数を指定 • maxSurgeで超過を許可するpod数を 指定します。

Slide 13

Slide 13 text

_⼈⼈⼈⼈⼈⼈_ > 当然の死 <  ̄Y^Y^Y^Y^Y^Y^ ̄

Slide 14

Slide 14 text

しょ障害が

Slide 15

Slide 15 text

セルフヒーリング _⼈⼈⼈⼈⼈⼈_ > 当然の死 <  ̄Y^Y^Y^Y^Y^Y^ ̄ 起動数を設定することでk8sがその数を維持するようにしてくれる

Slide 16

Slide 16 text

他にも • 複数のNodeの管理 • オートスケーリング • サービスディスカバリ • ロードバランシング • etc

Slide 17

Slide 17 text

悩んだところ

Slide 18

Slide 18 text

秘匿値はどうわたす? • Databaseへの接続情報やSECRET_KEY_BASEとか • Docker Image をbuildする時にわたす? => • セキュリティ的にもだし秘匿値の変更があるたびにビ ルドするの? • k8sのSecret リソースを使⽤する => • マニフェストファイルはどう管理するのか?

Slide 19

Slide 19 text

秘匿値はどうわたす? CBTFͰFODPEF͞Ε͍ͯΔ͚ͩͳͷͰ (JUͰ؅ཧ͢Δͷ͸ɾɾɾ "84,.4Λ࢖ͬͯ4FDSFUͷEBUBͷ஋͚ͩΛ҉߸Խʂ (JUͰ΋؅ཧͰ͖Δ͠LFZ͕࢒ΔͷͰϨϏϡʔ΋Ͱ͖Δ TIZJLPLVCFTFD

Slide 20

Slide 20 text

まとめ • RailsをEKSにのせました • Railsのコンテナ化よりもEKSにのせることよりもk8sと 仲良くなるのが1番時間かかった • Anketをぜひ使っていただいてフィードバックください!!

Slide 21

Slide 21 text

余談

Slide 22

Slide 22 text

プライベートで継続して開発する • ⼟⽇にまとめて書こうだと出来ない時に萎えてしまう • ⼟⽇はなんだかんだでイベントが⼊る • 毎⽇ちょっとずつ開発する • 30分とか1commitとか • いつか完成する • https://johnresig.com/blog/write-code-every-day/