Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitOps超入門 -インフラからアプリまで全てのコードをGitで管理しよう-

GitOps超入門 -インフラからアプリまで全てのコードをGitで管理しよう-

今回の「とことんDevOps勉強会」では、最近よく聞くようになったGitOpsについて、代表的なGitOpsツールであるArgo CDのデモを交えて紹介したいと思います。GitOpsはインフラからアプリまで全てのコードをGitを使って管理する手法です。具体的にGitOpsを実現するためにはどうしたら良いのか、DevOpsやCI Opsとは何が違うのかを紐解きながら、GitOpsに対する理解を深めていきましょう。
また、GitOpsを実現するためのツールにはさまざまなツールがあります。それらのツールを活用してGitOpsをみなさんの開発環境で実現することのメリットや、どのような活用方法があるかを一緒に議論しましょう。

セミナー動画
https://youtu.be/9XPORtZpU1w

とことんDevOps

July 07, 2022
Tweet

More Decks by とことんDevOps

Other Decks in Technology

Transcript

  1. GitOps 超入門 日本仮想化技術株式会社 VirtualTech.jp 2022/7/6 Ver. 2022/7/5
 1


  2. 自己紹介 •名前: 遠山 洋平 •出身: 宮城県 大崎市 •仕事: •OpenStack, Kubernetes,

    コンテナなど技術調査、導入支援 •最近はDevOps関連の技術調査も •過去に雑誌での連載や特集記事、書籍の執筆など 2 これとか
  3. GitOpsにDive! 3


  4. DevOpsについておさらい 4 •DevOpsは開発担当と運用担当が協力しあってソフトウェア導 入や更新を迅速かつ継続的に進めること • Respect:お互いを尊重する • Trust:チームを信頼する • Healthy

    attitude about failure:失敗は起こるものなので責めない • Avoiding Blame:相手の落ち度を非難せず、同じ失敗を起こさないよ うに建設的な議論をする •相互コミュニケーションを促進し、開発・運用の各プロセスを 統合・自動化するのが目的
  5. CI/CDについておさらい •CI(継続的インテグレーション) • 自動的なテスト、成果物のビルドとアップロード •CD(継続的デプロイ/継続的デリバリー) • 自動的なアプリのデプロイ •CI/CDの目的? • テスト自動化

    • テスト方法、テスト環境を共通化できる • デプロイ自動化 • 手作業によるオペミスを減らす • 空いたリソースを開発にあてる • アプリの品質を高め、リリースサイクルを速くする事につながる 5
  6. GitOpsとは •2017年にWeaveworks社によって提唱 •継続的インテグレーション(CI)/継続的デプロイ(CD)を効 率的に実現するための開発手法の一つ •Gitを基点とする • ソースコードのコミットをトリガーにアプリの継続的デプロイを実施 • アプリやシステムの望ましい状態をGitベースで管理 •

    何かあればロールバック可能 6
  7. いろいろなCIツール • 代表的なもの(SaaS & Freeで一定期間使えるもの) • GitHub Actions • CircleCI

    • GitLab CI • Bitbucket Pipelines • クラウドで提供されているもの • AWS CodePipeline • Azure Pipelines • GCP Cloud Build / Cloud Code 7
  8. いろいろなGitOpsツール •Argo CD •Flux •Rancher(のRancher CD機能) •PipeCD •Exastro EPOCH 8

    オススメはArgo CD, Flux, Rancher 特にArgo CDとRancherは使いやすいGUIと必要に 応じてコマンドライン操作でGitOpsを実現可能
  9. GitOpsとCIOpsの比較 9 •CIOpsはCIツールを中心としたCI/CDを実現する手法 • IaCはGitで管理 • CIツールがCI/CDを担当 a. CIツールやKubernetesの構成変更に伴った対応が都度必要 b.

    CIツールからクラスタにアクセスできる必要あり c. クラスタの外部に認証情報が必要 d. アプリデプロイ後は他の手段で管理 e. 元の状態に戻すことは想定していない IaC (Infrastructure as Code) とは手動ではなくコードを使 用して、インフラの構成管理とプロビジョニングを行うこ と。人的ミスの削減、作業をコード化することで作業の見通 しが良くなるメリットがある。
  10. GitOpsとCIOpsの比較 •GitOpsはGitベースでCI/CDを実現する手法 •IaCはGitで管理 • CIツールがCI、GitOpsツールがCDを担当 a. CI部分は以前のやり方を踏襲 b. (Pull型なので)パブリック、プライベート問わず利用可 c.

    認証情報の外部管理は必要なし d. デプロイしたアプリはGitOpsツールが管理 e. ロールバック可能 10
  11. CIツールにおける秘密情報管理の課題 • CIツールでデプロイを行う場合は秘密 情報はCIツールが管理 • Base64エンコードして環境変数に登録 • デコードは容易 • うっかりミスや脆弱性等によって秘密情

    報が漏洩したことによるリスクも • リポジトリにkubeconfigを置くは論外 • CDはCIツールから切り離したほうがセ キュリティ的には良い • どうしてもCIツールを使いたい場合は HashiCorp Vaultを使う 11 窓の杜さんの2022年4月の記事
  12. GitOpsのワークフロー 12


  13. CI/CDワークフロー 13 イメージ Trivy, JFrog Xray,Dockle,Clair etc... クラスター Kubescape,kube-hunter,Falco,Sysdig etc...

    Docker Hub GitHub Packages GitLab Package Registry etc…
  14. イメージスキャンの重要性 • 公開されているコンテナイメージは定期メンテされている • 稀にこういう事もあるので、炙り出して対応する必要がある 14

  15. SBOMへの対応 • SBOM(Software Bill Of Materials:ソフトウェア部品 表)。特定の製品に含まれるソフトウェアコンポーネント、 ライブラリ、ライセンス、依存関係を明示 • バイデン政権がサイバーセキュリティ大統領令で策定

    • 米国政府に製品を販売する組織に対してSBOMの作成を義務付け • いずれ必須になるかもしれない • コンテナイメージのSBOM作成はTrivyが対応している • https://aquasecurity.github.io/trivy/v0.29.2/docs/sbom/ 15 $ trivy image --format spdx --output result.spdx alpine:3.15 $ trivy image --format cyclonedx --output result.json alpine:3.15
  16. GitOpsのワークフロー例 https://www.weave.works/technologies/gitops/ より 16 リリース担当 開発者 • CI: コミット毎にテスト処理が行われ、ビルドイメージを登録 •

    CD: Gitの変更をトリガーに、アプリの継続的デプロイを実施 アプリケーション開発用とデプロイ用のGitを 分けた場合のフロー例 同じGitソースを参照したフローも考えられる
  17. GitOpsツールを使ってみよう Argo CD編 17


  18. Argo CDとは •Kubernetes用のGitOpsツール •シンプルで使いやすいGUIとCLIを実装 •(特に優れているのは)アプリケーション可視化 •どこで動いているか •アプリケーション・サービスの稼働状況 •自動同期 18

  19. Argo CD GUI & CLI 19

  20. Argo CDのセットアップ方法 •基本はこれだけ •kubectl create namespace argocd •kubectl apply -n

    argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/s table/manifests/install.yaml •このあと、K8sサービスを使って公開 •必要に応じて他のK8sクラスタを追加 20
  21. Argo CDの公開方法について •サクッと動かすならNodePort、運用するならIngress を使うと良いと思います •弊社ブログ記事を参考にしてください •https://devops-blog.virtualtech.jp/search?q=Argo+CD 21

  22. Argo CDの使い方(1) •GitOpsアプリの作成(登録)をしているところ 22 argocd app create ... or kubectl

    create -f manifest.yaml argocd app list
  23. Argo CDの使い方(2) •GitOpsアプリケーションを確認しているところ 23 argocd app get guestbook

  24. Argo CDの使い方(3) •アプリケーションだけでなく、Kubernetsクラスタやシステム のあるべき状態の管理にも使える 24 % kubectl delete ns git-ops-handson

    namespace "git-ops-handson" deleted
  25. 関連コンテンツ • Argo CDでかんたんGitOps • https://devops-blog.virtualtech.jp/entry/20220322/1647924202 • Rancher 2.6でGitOpsを試してみた •

    https://tech.virtualtech.jp/entry/2021/12/16/155954 • Rancher Fleetを触ってみる • https://devops-blog.virtualtech.jp/entry/20220510/1652150830 • vSphereプロバイダーのEKS AnywhereでKubernetes + GitOps • https://devops-blog.virtualtech.jp/entry/20220518/1652842173 • GitOpsツール Flux v2を触ってみた • https://devops-blog.virtualtech.jp/entry/20220520/1653014798 ほか、弊社ブログでは続々ご紹介予定です。 ブログのフォローをお願いいたします! 25
  26. ほか参考リンク • GitOpsを提唱したWeaveworks社によるガイド • https://www.weave.works/technologies/gitops/ • Kubernetes anti-patterns: Let's do

    GitOps, not CIOps! • https://www.weave.works/blog/kubernetes-anti-patterns-let-s-do-gi tops-not-ciops • Red Hat社によるGitOpsについての解説 • https://www.redhat.com/ja/topics/devops/what-is-gitops • CIOpsとGitOpsの話(ブログ記事) • https://blog.inductor.me/entry/2021/09/24/015402 • 「GitHub」から非公開リポジトリなどのデータが流出 ~「npm」に も被害(窓の杜) • https://forest.watch.impress.co.jp/docs/news/1404282.html 26
  27. まとめ •GitOpsはコンテナベースでアプリケーション開発からデプロイ までを円滑に回すのに便利 • テストなどは従来通りCIツールで • デプロイはGitOpsツールにお任せ •GitOpsツールを使うと便利 • 世の中には色々なGitOpsツールがある

    • 難しいことは考えず触ってみよう 27
  28. 28

  29. 日本仮想化技術株式会社 概要 • 社名:日本仮想化技術株式会社 • 英語名:VirtualTech Japan Inc. • 設立:2006年12月

    • 資本金:3,000万円 • 本社:東京都渋谷区渋谷1-8-1 • 取締役:宮原 徹(代表取締役社長兼CEO)、伊藤 宏通(取締役CTO) • スタッフ:11名(うち、8名が仮想化技術専門エンジニアです) • URL:http://VirtualTech.jp/ • 仮想化技術に関する研究および開発 • 仮想化技術に関する各種調査 • 仮想化技術に関連したソフトウェアの開発 • 仮想化技術を導入したシステムの構築 • OpenStackの導入支援・新規機能開発 29 ベンダーニュートラルな独立 系仮想化技術の エキスパート集団 会社概要
  30. OpenStackへの取り組み •通信事業社でのOpenStack基盤の検討支援および構築・運用 • NTTドコモ (2011年から技術評価を支援、商用利用に向けた検討・構 築・運用を実施) • NTT西日本 (商用利用に向けた評価・検討の支援、プロジェクトマ ネージメント支援)

    • 大手通信事業社 (NFV基盤についての検証・評価支援) •ベアメタルOpenStackの開発 • 仮想環境と物理環境をOpenStackで一括管理 • 単一のイメージで仮想マシンと物理マシンの双方を起動可能 • 2013年4月リリースのGrizzlyで本体にマージ 30 会社概要
  31. OpenStack Summitでの発表実績 31 2014/11 OpenStack Summit Paris We spoke the

    knowledge and tips when building and operating OpenStack Cloud on 100 Physical Servers. (Neutron HA, VXLAN performance,,,) 会社概要 2015/10 OpenStack Summit Tokyo We (NTT West, Canonical and VTJ) spoke ”Requirements for Providing Telecom Services on OpenStack-based Infrastructure”.