Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
GitOpsその後 / after starting GitOps
Search
sasaki
June 07, 2019
Technology
910
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitOpsその後 / after starting GitOps
sasaki
June 07, 2019
More Decks by sasaki
See All by sasaki
FinOpsとタグ付け防止対策 / CCoE Osaka FinOps Tags
taishin
1
290
Glacierだからってコストあきらめてない? / JAWS Meet Glacier Cost
taishin
1
450
スケールするプロダクトと膨らむ組織 SREの挑戦と解決策 / Findy Job LT SRE
taishin
0
180
組織の変化とSREの役割進化 責務拡大にどう応えるか / globis_sre
taishin
0
430
Lambdaの運用についてのなにか / lambda_unyo
taishin
0
220
おすすめAWSコスト対策 / AWS Startup Meetup Osaka AWS Cost
taishin
1
530
プラットフォームってつくることより計測することが重要なんじゃないかという話 / Platform Engineering Meetup #8
taishin
1
1.6k
ECS Runtime Monitoring で コンテナランタイムセキュリティに入門 / nakanoshima-dev-ecs-runtime-monitoring
taishin
0
380
JAWS-UG-Osaka-guardrail
taishin
0
420
Other Decks in Technology
See All in Technology
【CEDEC2026】『Relink』を拡張せよ - 『GRANBLUE FANTASY: Relink - Endless Ragnarok』の開発速度と品質を守るCI運用
cygames
PRO
0
140
AI時代の強いチームの作り方
yuukiyo
26
16k
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
140
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
1
440
Issue設計から始める仕様駆動開発 / 20260731 Mizuki Hirata
shift_evolve
PRO
1
150
研究開発部の紹介 / Sansan R&D Profile
sansan33
PRO
4
24k
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
12
8.4k
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
550
トヨタ⽣産⽅式(TPS)⼊⾨
recruitengineers
PRO
3
650
Service Connect 上のサービスに ECS Service の外側から到達できなかった話
ota1022
1
180
TypeScript入門 2026
recruitengineers
PRO
3
500
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
2
2.3k
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
The Cult of Friendly URLs
andyhume
79
7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Bash Introduction
62gerente
615
220k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
A Soul's Torment
seathinner
6
3.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Music & Morning Musume
bryan
47
7.3k
The Curious Case for Waylosing
cassininazir
1
450
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Adaptive Systems
keathley
44
3.2k
Transcript
STRICTLY CONFIDENTIAL 2019/6/7 Alpaca Japan Shinya Sasaki Cloud Native Kansai
#3 GitOpsその後
STRICTLY CONFIDENTIAL Who? ➢ 名前 ◦ 佐々木 真也 ➢ 所属
◦ AlpacaJapan 株式会社 ▪ Head of Infrastructure Engineering 2
STRICTLY CONFIDENTIAL Alpaca Japan 3 3 3 金融 x 機械学習
がテーマのスタートアップ 主な提供サービス/プロダクト ❖ 銀行・証券会社・信託銀行を中心に 金融機関向けのトレーディング AI技術で多くの実績を保持 「相場予測モデルの構築」 のプロジェクトで 協業 「AlpacaSearch for kabu.com」 相互に類似している銘柄のチャートパターン を表示 「AI外貨予測」「AI外貨積立」 指定した外貨の為替の変動を予測し、予測 した日に一定金額を積立 可能 主要マーケットの短期予測 をリアルタイムで表示 弊社の大規模データ処理 の技術やディープラーニン グ技術を活用したアプリ ケーション
STRICTLY CONFIDENTIAL 4
STRICTLY CONFIDENTIAL 日経6/5 5
STRICTLY CONFIDENTIAL Cloud Native Kansai #1 6 https://www.slideshare.net/shinyasasaki1024/gitopskubernetesmanifest
STRICTLY CONFIDENTIAL GitOpsおさらい 7 • CIツールがKubernetes APIにアクセスできるようにしないといけない • セキュリティリスクになる •
クレデンシャルを管理しないといけない • 境界がない Kubernetes anti-patterns: Let's do GitOps, not CIOps! https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gitops-not-ciops CIOps
STRICTLY CONFIDENTIAL GitOpsおさらい 8 • k8sクラスタ内外で境界ができる • configとcodeのリポジトリを分けることで、お互いの変更に影響を受けない Kubernetes anti-patterns:
Let's do GitOps, not CIOps! https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gitops-not-ciops GitOps
STRICTLY CONFIDENTIAL Argo CD 9
STRICTLY CONFIDENTIAL 改善 (1) • 構成 • port-forwardからLoadBalancerにして常時アクセスできるように 10 $
kubectl -n argocd port-forward service/argocd-server 8080:443 https://localhost:8080 https://argocd.mydomain.~ kind: Service spec: type: LoadBalancer
STRICTLY CONFIDENTIAL 改善 (2) • GitHubアカウントでSSO • ローカルユーザはAdminしかない • 環境によるアクセス制限をGithub
Teamで行う 11
STRICTLY CONFIDENTIAL 改善 (3) • GitHubリポジトリの登録をHTTPS → SSHにする • 社内ポリシー的にHTTPSログインは2FAがMustなため
• GUIからはできないがCLIならできるらしい 12 argocd repo add
[email protected]
:argoproj/argocd-example-apps.git --ssh-private-key-path ~/.ssh/id_rsa
STRICTLY CONFIDENTIAL というわけでまずArgoCDへの再登録から・・・ 13
STRICTLY CONFIDENTIAL ??? 14
STRICTLY CONFIDENTIAL 15 $ kubectl get pod
STRICTLY CONFIDENTIAL 16 $ kubectl get pod No resources found.
STRICTLY CONFIDENTIAL 17 $ kubectl get pod No resources found.
STRICTLY CONFIDENTIAL でもGitOpsなので GitHubリポジトリを再登録して同期するだ けで元通り!! • しかし実際には・・・ • いくつかGitHubに反映せず直接変更している箇所があった •
Kubernetesだけでは戻せないところの把握ができてなかった • ELB再作成に伴うDNSレコードの更新 (type: LoadBalancer) 18
STRICTLY CONFIDENTIAL 対応策 (1) • GitOpsの徹底 • 正の状態が全員に分かる形で管理されていることは重要 19 Sync
STRICTLY CONFIDENTIAL 対応策 (2) • GithubによるSSO • GithubのTeamにより権限を変更 • RBAC設定により全員Delete権限は排除
20
STRICTLY CONFIDENTIAL 対応策 (3) • (あたりまえですが・・・)同期後に必要な作業の明文化 • DNSレコードの変更箇所 とか 21
一部 Service を LoadBalancer → NodePortに変更し、Kubernetes管理 外のELBに ELBはKubernetesで管理しない方がいいかも DNSレコードまでexternal-dnsで管理という手もあるが・・・ DNS設定変更はちょっと怖いし、そもそも変更はしない方がいい気が する
STRICTLY CONFIDENTIAL その他の改善点 • Hooksの利用 • こういうJobをつくるだけ • Sync開始前にDB MigrationのJobを実行
• Sync開始前後にSlack通知 • Sync完了後にテストJobを実行(予定) 22 apiVersion: batch/v1 kind: Job metadata: annotations: argocd.argoproj.io/hook: PreSync
STRICTLY CONFIDENTIAL 現在のデプロイフロー 23 STG PROD Developer ① PR &
Merge App Repo ② Build & Push Infra Repo ③ PR ④ Merge ⑤ Sync ⑥ Deploy Developer ① PR & Merge App Repo ② Build & Push Infra Repo ③ PR ⑤ Sync ⑥ Deploy Infra ④ M erge
STRICTLY CONFIDENTIAL まとめ • 削除には気をつけよう 24