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

Recap: [CodeFresh] Deploying to Kubernetes Thousands of Times Per Day @Kubernetes Meetup #9

Recap: [CodeFresh] Deploying to Kubernetes Thousands of Times Per Day @Kubernetes Meetup #9

Kubernetes Meetup #9 @CyberAgent は KubeCon + CNCon 2017 North America Austin の Recap スペシャルということで、「Deploying to Kubernetes Thousands of Times Per Day」 についてお話させていただきました。
High Velocity の重要性と、CI/CD Pipeline を作るときに注意するべきポイントを話した上で、CodeFresh について紹介しました。

De266761b955b2636e454a1bc7a99ed4?s=128

Masaya Aoyama (@amsy810)

January 12, 2018
Tweet

Transcript

  1. CodeFresh: Deploying to Kubernetes Thousands of Times Per/Day @Kubernetes Meetup

    #9 2018/01/12 青山 真也 (@amsy810), CyberAgent
  2. 青山 真也 (Masaya Aoyama) @amsy810 普段の主な仕事↓ 世界で 138 番目 https://adtech.cyberagent.io/techblog/

    archives/3086
  3. 行ってきました

  4. Austin はこんなところ

  5. High Velocity の重要性 Kubernetes を使って High Velocity を実現しましょう!  ※ 変更から反映までの間隔を出来るだけ短くすること

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

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

    脆弱性や SSL 証明書の問題などが生じたときに直ぐに切り替えられるように
  8. 1. Image First • Immutable なコンテナにする • コンテナ起動時に実行プログラムを DL しない(イメージに内包させる)

    • 前回起動時と異なる動作を行う処理を Entrypoint で行わない • local / dev / prd で同じイメージを利用する • latest タグは使わない • 時間指定でイメージのロールバックを出来るように履歴を取っておく • GitHub の特定のコミットと Image Tag を紐付けておく • local でビルドして push はしない(自動化必須)
  9. 2. Shift Left テストは出来るだけ前倒し Integration Test 等も事前にしておく Bottleneck CI/CD Pipeline

    で最もコストが 高いのはコードレビュー
  10. 3. Maintain Application Portability クラスタが消し飛んだときに復旧できますか? (会場では x hour ~ x day

    の声) • 設定ファイルはコンテナイメージに内包せず ConfigMap / Secret を使う ◦ Docker Build は出来るだけ避ける ◦ 環境変化に強い設計にする • Helm Charts 化も検討する ◦ アプリケーション、ネットワーク周りを一括で管理できるため復旧が早い • ディザスタリカバリのテストもする
  11. 4. Outsource Cluster Management • クラスタの管理は専門チームに任せる • 開発者はアプリケーションの開発のみに専念する • 但し、スケーラビリティや冗長化を頭に入れて開発しておく

    • Certified Kubernetes Conformance Program に準拠した構成にしましょう ◦ 一部の Kubernetes 環境にしかない機能に依存すると移行が難しい
  12. 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 クラスタにデプロイ
  13. 少し Demo

  14. $100 for codefresh + $500 for GCP

  15. and...

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

  17. and...

  18. 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
  19. and...

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

  21. and...

  22. We are hiring!