Slide 1

Slide 1 text

CodeFresh: Deploying to Kubernetes Thousands of Times Per/Day @Kubernetes Meetup #9 2018/01/12 青山 真也 (@amsy810), CyberAgent

Slide 2

Slide 2 text

青山 真也 (Masaya Aoyama) @amsy810 普段の主な仕事↓ 世界で 138 番目 https://adtech.cyberagent.io/techblog/ archives/3086

Slide 3

Slide 3 text

行ってきました

Slide 4

Slide 4 text

Austin はこんなところ

Slide 5

Slide 5 text

High Velocity の重要性 Kubernetes を使って High Velocity を実現しましょう!  ※ 変更から反映までの間隔を出来るだけ短くすること bug fix や機会損失となる問題などは直ぐに直せる用にするべき

Slide 6

Slide 6 text

High Velocity の重要性 Kubernetes を使って High Velocity を実現しましょう!  ※ 変更から反映までの間隔を出来るだけ短くすること 溜まりすぎて巨大な Commit にしてしまうとマージコストが高い ビジネスロジックを作ってからマージまで長いと機会損失

Slide 7

Slide 7 text

High Velocity の重要性 Kubernetes を使って High Velocity を実現しましょう!  ※ 変更から反映までの間隔を出来るだけ短くすること 脆弱性や SSL 証明書の問題などが生じたときに直ぐに切り替えられるように

Slide 8

Slide 8 text

1. Image First ● Immutable なコンテナにする ● コンテナ起動時に実行プログラムを DL しない(イメージに内包させる) ● 前回起動時と異なる動作を行う処理を Entrypoint で行わない ● local / dev / prd で同じイメージを利用する ● latest タグは使わない ● 時間指定でイメージのロールバックを出来るように履歴を取っておく ● GitHub の特定のコミットと Image Tag を紐付けておく ● local でビルドして push はしない(自動化必須)

Slide 9

Slide 9 text

2. Shift Left テストは出来るだけ前倒し Integration Test 等も事前にしておく Bottleneck CI/CD Pipeline で最もコストが 高いのはコードレビュー

Slide 10

Slide 10 text

3. Maintain Application Portability クラスタが消し飛んだときに復旧できますか? (会場では x hour ~ x day の声) ● 設定ファイルはコンテナイメージに内包せず ConfigMap / Secret を使う ○ Docker Build は出来るだけ避ける ○ 環境変化に強い設計にする ● Helm Charts 化も検討する ○ アプリケーション、ネットワーク周りを一括で管理できるため復旧が早い ● ディザスタリカバリのテストもする

Slide 11

Slide 11 text

4. Outsource Cluster Management ● クラスタの管理は専門チームに任せる ● 開発者はアプリケーションの開発のみに専念する ● 但し、スケーラビリティや冗長化を頭に入れて開発しておく ● Certified Kubernetes Conformance Program に準拠した構成にしましょう ○ 一部の Kubernetes 環境にしかない機能に依存すると移行が難しい

Slide 12

Slide 12 text

5. Connect all the dots CodeFresh  コンテナに特化した Spinnaker + Concourse CI + DockerHub のようなもの ● Github のコード変更を検知して CI/CD Pipeline ● Docker Image の作成 ● Deployment の Config や Helm Charts を生成 ● Unit Test / Performance Test ● Kubernetes クラスタにデプロイ

Slide 13

Slide 13 text

少し Demo

Slide 14

Slide 14 text

$100 for codefresh + $500 for GCP

Slide 15

Slide 15 text

and...

Slide 16

Slide 16 text

CI/CD 周りの話をもう少し https://speakerdeck.com/masayaaoyama/cd-sessions

Slide 17

Slide 17 text

and...

Slide 18

Slide 18 text

is coming soon... 今年はココらへんの話で発表したい! 「GKE 互換のオンプレコンテナ基盤 AKE (Adtech Container Engine)」 https://developers.cyberagent.co.jp/blog/archives/12058/ 「Kubernetes をいじって Hardware LoadBalancer で “type LoadBalancer” を実装」 https://adtech.cyberagent.io/techblog/archives/3127 「オンプレでも GKE Like な Ingress を使うために 自作 Ingress Controller を実装」 https://adtech.cyberagent.io/techblog/archives/3758

Slide 19

Slide 19 text

and...

Slide 20

Slide 20 text

KubeCon Austin 2017 日本人会 コペンハーゲンでまたお会いしましょう!

Slide 21

Slide 21 text

and...

Slide 22

Slide 22 text

We are hiring!