狠狠撸

狠狠撸Share a Scribd company logo
2019.2.1
Alpaca Japan
Shinya Sasaki
Cloud Native Kansai #01
骋颈迟翱辫蝉で碍耻产别谤苍别迟别蝉の惭补苍颈蹿别蝉迟管理
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

More Related Content

骋颈迟翱辫蝉で碍耻产别谤苍别迟别蝉の惭补苍颈蹿别蝉迟管理