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

Recap: [CodeFresh] Deploying to Kubernetes Thou...

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 について紹介しました。

Masaya Aoyama (@amsy810)

January 12, 2018
Tweet

More Decks by Masaya Aoyama (@amsy810)

Other Decks in Technology

Transcript

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

    #9 2018/01/12 青山 真也 (@amsy810), CyberAgent
  2. High Velocity の重要性 Kubernetes を使って High Velocity を実現しましょう!  ※ 変更から反映までの間隔を出来るだけ短くすること

    溜まりすぎて巨大な Commit にしてしまうとマージコストが高い ビジネスロジックを作ってからマージまで長いと機会損失
  3. 1. Image First • Immutable なコンテナにする • コンテナ起動時に実行プログラムを DL しない(イメージに内包させる)

    • 前回起動時と異なる動作を行う処理を Entrypoint で行わない • local / dev / prd で同じイメージを利用する • latest タグは使わない • 時間指定でイメージのロールバックを出来るように履歴を取っておく • GitHub の特定のコミットと Image Tag を紐付けておく • local でビルドして push はしない(自動化必須)
  4. 3. Maintain Application Portability クラスタが消し飛んだときに復旧できますか? (会場では x hour ~ x day

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

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