SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
2019.2.1
Alpaca Japan
Shinya Sasaki
Cloud Native Kansai #01
GitOpsでKubernetesのManifest管理
Who?
➢ 名前
○ 佐々木 真也
➢ 所属
○ AlpacaJapan 株式会社
■ Head of Infrastructure Engineering
2
Alpaca Japan
3
3 3
金融 機械学習 がテーマのスタートアップ
主な提供サービス プロダクト
❖ 銀行・証券会社・信託銀行を中心に金融機関向けのトレーディングAI技術で多くの実績を保持
「相場予測モデルの構築」のプロジェクト
で協業
「AlpacaSearch for kabu.com」
相互に類似している銘柄のチャートパ
ターンを表示
「AI外貨予測」「AI外貨積立」
指定した外貨の為替の変動を予測し、予
測した日に一定金額を積立可能
主要マーケットの短期予
測をリアルタイムで表示
弊社の大規模データ処
理の技術やディープラー
ニング技術を活用したア
プリケーション
4
5
6
kubectl get nodes
kubectl apply -f sample-pod.yaml
kubectl describe pods ...
7
P.424
実際に運用を行う際には手動での
kubectlコマンドの実行は、可能な限
り避けるべきです。
8
CI/CD Pipeline
現在のCI/CD Pipeline
9
ステージング
本番
git flow release
PR マージ
イメージ作成
同じイメージを使うECR
反映
反映
タグ付与
release.20181103
ステージング
クラスタ
本番
クラスタ
現状の課題
• k8s Manifestの軽微な変更でもビルドが走る
• Gitの権限
• マージ権限がないと都度レビュー、マージ依頼
• 外部(CircleCI)にk8sの強い権限が必要
• リポジトリのManifest = 現在の設定 を保証できない
• Rollbackしにくい
10
GitOps?
• WeaveWorks社が提唱しているk8sの継続的デリバリ
(Continuous Delivery)手法
• Gitでバージョン管理されたManifestを Single Source of
Truth とする
11
GitOpsをやるために
• ManifestのGit管理
• ManifestをGitでバージョン管理する
• オペレーションもGitで行う
• Pull Requestベース
• CIとCDの分離
• アプリケーションコードのリポジトリとManifestのリポジトリを分ける
• 差分の検知、コンバージェンス
• Git上のManifestと稼働環境の差を検知
12
CIOps と GitOps
• CIツールがKubernetes APIにアクセスできるようにしないといけない
• セキュリティリスクになる
• クレデンシャルを管理しないといけない
• 境界がない
13
Kubernetes anti-patterns: Let's do GitOps, not CIOps!
https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gitops-not-ciops
CIOps
CIOps と GitOps
• k8sクラスタ内外で境界ができる
• configとcodeのリポジトリを分けることで、お互いの変更に影響を受けない
14
Kubernetes anti-patterns: Let's do GitOps, not CIOps!
https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gitops-not-ciops
GitOps
GitOpsの動作
15
https://www.weave.works/blog/gitops-high-velocity-cicd-for-kubernetes
1.アプリケーションの
コード変更
GitOpsの動作
16
https://www.weave.works/blog/gitops-high-velocity-cicd-for-kubernetes
2.コンテナのビルド、レジストリ
へのプッシュ
GitOpsの動作
17
https://www.weave.works/blog/gitops-high-velocity-cicd-for-kubernetes
3.イメージの 情 報 を 修 正 して、
Manifest用リポジトリへPR
GitOpsの動作
18
https://www.weave.works/blog/gitops-high-velocity-cicd-for-kubernetes
4.PRをマージ
GitOpsの動作
19
https://www.weave.works/blog/gitops-high-velocity-cicd-for-kubernetes
5.差分を検知してデプロイ
GitOps Tools
• Weave Flux
• Argo CD
• JenkinsX
20
Argo CD
21
Argo CDの選定理由
• WebUIがある
• 複数人での運用を考えると結構大事
• CLIもある
• 簡単にできた
• https://github.com/argoproj/argo-cd/blob/master/docs/getting_st
arted.md
22
Argo CDのよさそうなところ
• 複数フォーマットに対応
• ksonnet applications
• kustomize applications
• helm charts
• Plain directory of YAML/json/jsonnet manifests
• 削除に対応
• 自動同期にも対応
23
※ 他が対応していないということではないです
Argo CD 差分検知
24
Argo CD 差分の表示
25
Argo CD 同期実行
26
Argo CD 同期状態
27
現状の課題(再掲)
• k8s Manifestの軽微な変更でもビルドが走る
• Gitの権限
• マージ権限がないと都度レビュー、マージ依頼
• 外部(CircleCI)にk8sの強い権限が必要
• リポジトリのManifest = 現在の設定 を保証できない
• Rollbackしにくい
28
現状の課題(再掲)
• k8s Manifestの軽微な変更でもビルドが走る
→ CIとCDは分離されている
• Gitの権限
• マージ権限がないと都度レビュー、マージ依頼
→ 別レポジトリなので、権限も別管理
• 外部(CircleCI)にk8sの強い権限が必要
→ k8sにアクセスするのはクラスタ内なので不要
• リポジトリのManifest = 現在の設定 を保証できない
→ 差分を検知
• Rollbackしにくい
→ 前のバージョンに戻せばいい
29
GitOps導入後の課題
• Secretの扱い
• GitHubにはあげれない
• デプロイするのがArgo CDになるので、別インストールが必要なソリュー
ションは使えない
• kubesecとか
• CRD使うSealed-Secretsならできる?
• AWS Secret Managerに保存して、手動で作成することにした
• Branch運用
• 複雑になりそう・・・
30
kubectl create -n stg secret generic myapp-prod-secret 
--from-literal=DB_PASSWORD=$(aws secretsmanager get-secret-value --secret-id prod/myapp/db 
--region ap-northeast-1 | jq --raw-output '.SecretString' | jq -r .password)
まとめ
• 運用環境にkubectlするのは中学生まで
• CI/CD Pipelineをつくりましょう
• k8s ManifestもGitで管理しましょう
• GitOpsはCIとCDを分ける考え方
• GitOpsで運用課題が解決されるかも・・・
31
32
We're hiring!!
https://www.wantedly.com/companies/alpacadb
● Web Engineer
● Infrastructure Engineer
● ML/AI Engineer
● Fintech Engineer

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps OnlineGKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
GKE に飛んでくるトラフィックを 自由自在に操る力 | 第 10 回 Google Cloud INSIDE Games & Apps Online
 
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
 
Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版Azure Api Management 俺的マニュアル 2020年3月版
Azure Api Management 俺的マニュアル 2020年3月版
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
OpenAPI 3.0でmicroserviceのAPI定義を試みてハマった話
 
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
 
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
マイクロサービス化デザインパターン - #AWSDevDay Tokyo 2018
 
Google Cloud で実践する SRE
Google Cloud で実践する SRE  Google Cloud で実践する SRE
Google Cloud で実践する SRE
 

Similar a GitOpsでKubernetesのManifest管理

Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawa
SORACOM, INC
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
Cybozucommunity
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214
samemoon
 

Similar a GitOpsでKubernetesのManifest管理 (20)

Chainerのエバに Kubeflow使ってもらった
Chainerのエバに Kubeflow使ってもらったChainerのエバに Kubeflow使ってもらった
Chainerのエバに Kubeflow使ってもらった
 
【kintone café松江#1】kintoneの可能性
【kintone café松江#1】kintoneの可能性【kintone café松江#1】kintoneの可能性
【kintone café松江#1】kintoneの可能性
 
【kintone hive 上海】ウィングアーク上海講演資料_160918
【kintone hive 上海】ウィングアーク上海講演資料_160918【kintone hive 上海】ウィングアーク上海講演資料_160918
【kintone hive 上海】ウィングアーク上海講演資料_160918
 
Ms retail update ra 20191030
Ms retail update ra 20191030Ms retail update ra 20191030
Ms retail update ra 20191030
 
JAWSUG 20180413
JAWSUG 20180413JAWSUG 20180413
JAWSUG 20180413
 
セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12セミナ受講レポート NRI Senju V12
セミナ受講レポート NRI Senju V12
 
Kansumi2013 tamagawa
Kansumi2013 tamagawaKansumi2013 tamagawa
Kansumi2013 tamagawa
 
MLOps NYC 2019 and Strata Data Conference NY 2019 report nttdata
MLOps NYC 2019 and Strata Data Conference NY 2019 report nttdataMLOps NYC 2019 and Strata Data Conference NY 2019 report nttdata
MLOps NYC 2019 and Strata Data Conference NY 2019 report nttdata
 
【HinemosWorld2014】B1-4_NTTデータ先端技術のOpenStack Hinemosソリューション
【HinemosWorld2014】B1-4_NTTデータ先端技術のOpenStack Hinemosソリューション【HinemosWorld2014】B1-4_NTTデータ先端技術のOpenStack Hinemosソリューション
【HinemosWorld2014】B1-4_NTTデータ先端技術のOpenStack Hinemosソリューション
 
PKSHA Security Package for Credit
PKSHA Security Package for CreditPKSHA Security Package for Credit
PKSHA Security Package for Credit
 
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
[db tech showcase Tokyo 2015] D16:マイケルストーンブレーカー発の超高速データベースで実現する分析基盤の簡単構築・運用ステ...
 
JAWS-UG広島 - 2019-07-12 - 金融ビッグデータを守るリソースポリシー実例
JAWS-UG広島 - 2019-07-12 - 金融ビッグデータを守るリソースポリシー実例JAWS-UG広島 - 2019-07-12 - 金融ビッグデータを守るリソースポリシー実例
JAWS-UG広島 - 2019-07-12 - 金融ビッグデータを守るリソースポリシー実例
 
AI Utilization Seminar 20190709
AI Utilization Seminar 20190709AI Utilization Seminar 20190709
AI Utilization Seminar 20190709
 
はてなのインフラの歴史、そしてMackerelへ至る道とこれから
はてなのインフラの歴史、そしてMackerelへ至る道とこれから はてなのインフラの歴史、そしてMackerelへ至る道とこれから
はてなのインフラの歴史、そしてMackerelへ至る道とこれから
 
UrbanCodeを使用したBluemixとオンプレミスの統合デプロイ
UrbanCodeを使用したBluemixとオンプレミスの統合デプロイUrbanCodeを使用したBluemixとオンプレミスの統合デプロイ
UrbanCodeを使用したBluemixとオンプレミスの統合デプロイ
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
 
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...OpenStackの普及でどう変わる?クラウド時代の次の一手  - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
OpenStackの普及でどう変わる?クラウド時代の次の一手 - ミラクル・リナックス様セミナー 『OpenStack の普及でどう変わる?クラウド時代...
 
Developer Summit_20140214
Developer Summit_20140214Developer Summit_20140214
Developer Summit_20140214
 
Splunkを使ってKubernetesクラスターとコンテナのログ・メトリクスを可視化
Splunkを使ってKubernetesクラスターとコンテナのログ・メトリクスを可視化Splunkを使ってKubernetesクラスターとコンテナのログ・メトリクスを可視化
Splunkを使ってKubernetesクラスターとコンテナのログ・メトリクスを可視化
 

GitOpsでKubernetesのManifest管理