SlideShare a Scribd company logo
1 of 22
Download to read offline
CodeFresh:
Deploying to Kubernetes Thousands of Times Per/Day
@Kubernetes Meetup #9 2018/01/12
青山 真也 (@amsy810), CyberAgent
青山 真也 (Masaya Aoyama)
@amsy810
普段の主な仕事↓
世界で 138 番目
https://adtech.cyberagent.io/techblog/
archives/3086
行ってきました
Austin はこんなところ
High Velocity の重要性
Kubernetes を使って High Velocity を実現しましょう!
 ※ 変更から反映までの間隔を出来るだけ短くすること
bug fix や機会損失となる問題などは直ぐに直せる用にするべき
High Velocity の重要性
Kubernetes を使って High Velocity を実現しましょう!
 ※ 変更から反映までの間隔を出来るだけ短くすること
溜まりすぎて巨大な Commit にしてしまうとマージコストが高い
ビジネスロジックを作ってからマージまで長いと機会損失
High Velocity の重要性
Kubernetes を使って High Velocity を実現しましょう!
 ※ 変更から反映までの間隔を出来るだけ短くすること
脆弱性や SSL 証明書の問題などが生じたときに直ぐに切り替えられるように
1. Image First
● Immutable なコンテナにする
● コンテナ起動時に実行プログラムを DL しない(イメージに内包させる)
● 前回起動時と異なる動作を行う処理を Entrypoint で行わない
● local / dev / prd で同じイメージを利用する
● latest タグは使わない
● 時間指定でイメージのロールバックを出来るように履歴を取っておく
● GitHub の特定のコミットと Image Tag を紐付けておく
● local でビルドして push はしない(自動化必須)
2. Shift Left
テストは出来るだけ前倒し
Integration Test 等も事前にしておく
Bottleneck
CI/CD Pipeline で最もコストが
高いのはコードレビュー
3. Maintain Application Portability
クラスタが消し飛んだときに復旧できますか? (会場では x hour ~ x day の声)
● 設定ファイルはコンテナイメージに内包せず ConfigMap / Secret を使う
○ Docker Build は出来るだけ避ける
○ 環境変化に強い設計にする
● Helm Charts 化も検討する
○ アプリケーション、ネットワーク周りを一括で管理できるため復旧が早い
● ディザスタリカバリのテストもする
4. Outsource Cluster Management
● クラスタの管理は専門チームに任せる
● 開発者はアプリケーションの開発のみに専念する
● 但し、スケーラビリティや冗長化を頭に入れて開発しておく
● Certified Kubernetes Conformance Program に準拠した構成にしましょう
○ 一部の Kubernetes 環境にしかない機能に依存すると移行が難しい
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 クラスタにデプロイ
少し Demo
$100 for codefresh + $500 for GCP
and...
CI/CD 周りの話をもう少し
https://speakerdeck.com/masayaaoyama/cd-sessions
and...
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
and...
KubeCon Austin 2017 日本人会
コペンハーゲンでまたお会いしましょう!
and...
We are hiring!

More Related Content

What's hot

What's hot (20)

DockerCon '17 Feedback -User Stories- at Docker Meetup Tokyo
DockerCon '17 Feedback -User Stories- at Docker Meetup TokyoDockerCon '17 Feedback -User Stories- at Docker Meetup Tokyo
DockerCon '17 Feedback -User Stories- at Docker Meetup Tokyo
 
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術
 
Githubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみようGithubを使って簡単に helm repoを公開してみよう
Githubを使って簡単に helm repoを公開してみよう
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
OpenStack Summit & KubeConからみるコンテナ技術の最新トレンド - OpenStack Day Tokyo 2018講演資料
 
対話AI on Kubernetes
対話AI on Kubernetes対話AI on Kubernetes
対話AI on Kubernetes
 
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったことOpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
OpenStack上に展開するContainer as a Service を本番で利用するために必要だったこと
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
ServiceMesh と仲間たち 〜Istio & Conduit & Linkerd〜 @Cloud Native Meetup Tokyo #1
 
DockerMeetup#26 LT: Alibaba Cloudのコンテナ関連についてちょっとだけ
DockerMeetup#26 LT: Alibaba Cloudのコンテナ関連についてちょっとだけDockerMeetup#26 LT: Alibaba Cloudのコンテナ関連についてちょっとだけ
DockerMeetup#26 LT: Alibaba Cloudのコンテナ関連についてちょっとだけ
 
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみたKubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
Kubernetes Meetup Tokyo #8 Self-hosted Kubernetes を調べてみた
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
コンテナ運用基盤 with OpenShift
コンテナ運用基盤 with OpenShiftコンテナ運用基盤 with OpenShift
コンテナ運用基盤 with OpenShift
 
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組みKustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
KustomizeとGitHub Actionsを利用したUbieのデプロイの仕組み
 
Knative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみたKnative Lambda Runtimeを試してみた
Knative Lambda Runtimeを試してみた
 
Infra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, NetworkInfra: Kubernetes and GKE, Network
Infra: Kubernetes and GKE, Network
 
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VMKubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
 
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
KueCon 2020 NA Recap - Building a Global Supercomputer with Virtual Kubelet /...
 
2018 07-19dist
2018 07-19dist2018 07-19dist
2018 07-19dist
 

Similar to Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kubernetes meetup #9

Similar to Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kubernetes meetup #9 (20)

JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoTJTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoT
 
Azuredevopsakskeda
AzuredevopsakskedaAzuredevopsakskeda
Azuredevopsakskeda
 
Istio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud FoundryIstio, Kubernetes and Cloud Foundry
Istio, Kubernetes and Cloud Foundry
 
Spring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作るSpring Boot × Vue.jsでSPAを作る
Spring Boot × Vue.jsでSPAを作る
 
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
[OracleCodeTokyo2019] Kubernetesで実現する運用自動化の新しいアプローチとは
 
20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento20170626 さくらインターネット Stripe Magento
20170626 さくらインターネット Stripe Magento
 
AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄AWSスポットインスタンスの真髄
AWSスポットインスタンスの真髄
 
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
5分で振り返るKubeCon EU 2019:ランタイムとイメージの話題ダイジェスト
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
CQRS+ES on GCP
CQRS+ES on GCPCQRS+ES on GCP
CQRS+ES on GCP
 
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
[CTO Night & Day 2019] CTO のための一歩進んだコンテナ入門 #ctonight
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみたタクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
タクシードライブレコーダーの動画処理MLパイプラインにkubernetesを使ってみた
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 
Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18Microsoft open tech night 2020 feb18
Microsoft open tech night 2020 feb18
 
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
Cloud Days Tokyo 2015 "オンプレミス環境のクラウド化と運用を楽にする OpenStack ソリューション ~ハイブリッド・クラウドを...
 
弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピ弊社IoT事例とAlexaSkil開発レシピ
弊社IoT事例とAlexaSkil開発レシピ
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & RobotJazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
 

Recap: [Code fresh] Deploying to kubernetes thousands of times per day @kubernetes meetup #9

  • 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
  • 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 クラスタにデプロイ
  • 14. $100 for codefresh + $500 for GCP
  • 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
  • 20. KubeCon Austin 2017 日本人会 コペンハーゲンでまたお会いしましょう!