Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
GitOpsその後 / after starting GitOps
sasaki
June 07, 2019
Technology
0
430
GitOpsその後 / after starting GitOps
sasaki
June 07, 2019
Tweet
Share
More Decks by sasaki
See All by sasaki
taishin
1
79
taishin
1
53
taishin
0
56
taishin
0
47
taishin
2
370
taishin
2
540
taishin
1
360
Other Decks in Technology
See All in Technology
yuhta28
1
220
viva_tweet_x
5
2.7k
opdavies
0
1.6k
yasuakiomokawa
0
340
stakaya
12
7.6k
ray_30cm_ns
0
280
am7cinnamon
2
2.7k
shimacos
2
330
clustervr
0
200
iqbocchi
0
530
line_developers
PRO
0
150
toshinoritakai
1
200
Featured
See All Featured
davidbonilla
69
3.5k
zenorocha
297
40k
pedronauck
652
110k
aarron
258
36k
kastner
54
1.9k
zakiwarfel
88
3.3k
dougneiner
55
5.4k
lara
16
2.6k
samanthasiow
56
6.3k
shlominoach
176
7.4k
shpigford
165
19k
chrislema
173
14k
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 git@github.com: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