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


    View Slide

  2. 自己紹介
    •名前: 遠山 洋平
    •出身: 宮城県 大崎市
    •仕事:
    •OpenStack, Kubernetes, コンテナなど技術調査、導入支援
    •最近はDevOps関連の技術調査も
    •過去に雑誌での連載や特集記事、書籍の執筆など
    2
    これとか

    View Slide

  3. GitOpsにDive!
    3


    View Slide

  4. DevOpsについておさらい
    4
    •DevOpsは開発担当と運用担当が協力しあってソフトウェア導
    入や更新を迅速かつ継続的に進めること
    • Respect:お互いを尊重する
    • Trust:チームを信頼する
    • Healthy attitude about failure:失敗は起こるものなので責めない
    • Avoiding Blame:相手の落ち度を非難せず、同じ失敗を起こさないよ
    うに建設的な議論をする
    •相互コミュニケーションを促進し、開発・運用の各プロセスを
    統合・自動化するのが目的

    View Slide

  5. CI/CDについておさらい
    •CI(継続的インテグレーション)
    • 自動的なテスト、成果物のビルドとアップロード
    •CD(継続的デプロイ/継続的デリバリー)
    • 自動的なアプリのデプロイ
    •CI/CDの目的?
    • テスト自動化
    • テスト方法、テスト環境を共通化できる
    • デプロイ自動化
    • 手作業によるオペミスを減らす
    • 空いたリソースを開発にあてる
    • アプリの品質を高め、リリースサイクルを速くする事につながる
    5

    View Slide

  6. GitOpsとは
    •2017年にWeaveworks社によって提唱
    •継続的インテグレーション(CI)/継続的デプロイ(CD)を効
    率的に実現するための開発手法の一つ
    •Gitを基点とする
    • ソースコードのコミットをトリガーにアプリの継続的デプロイを実施
    • アプリやシステムの望ましい状態をGitベースで管理
    • 何かあればロールバック可能
    6

    View Slide

  7. いろいろなCIツール
    • 代表的なもの(SaaS & Freeで一定期間使えるもの)
    • GitHub Actions
    • CircleCI
    • GitLab CI
    • Bitbucket Pipelines
    • クラウドで提供されているもの
    • AWS CodePipeline
    • Azure Pipelines
    • GCP Cloud Build / Cloud Code
    7

    View Slide

  8. いろいろなGitOpsツール
    •Argo CD
    •Flux
    •Rancher(のRancher CD機能)
    •PipeCD
    •Exastro EPOCH
    8
    オススメはArgo CD, Flux, Rancher
    特にArgo CDとRancherは使いやすいGUIと必要に
    応じてコマンドライン操作でGitOpsを実現可能

    View Slide

  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) とは手動ではなくコードを使
    用して、インフラの構成管理とプロビジョニングを行うこ
    と。人的ミスの削減、作業をコード化することで作業の見通
    しが良くなるメリットがある。

    View Slide

  10. GitOpsとCIOpsの比較
    •GitOpsはGitベースでCI/CDを実現する手法
    •IaCはGitで管理
    • CIツールがCI、GitOpsツールがCDを担当
    a. CI部分は以前のやり方を踏襲
    b. (Pull型なので)パブリック、プライベート問わず利用可
    c. 認証情報の外部管理は必要なし
    d. デプロイしたアプリはGitOpsツールが管理
    e. ロールバック可能
    10

    View Slide

  11. CIツールにおける秘密情報管理の課題
    • CIツールでデプロイを行う場合は秘密
    情報はCIツールが管理
    • Base64エンコードして環境変数に登録
    • デコードは容易
    • うっかりミスや脆弱性等によって秘密情
    報が漏洩したことによるリスクも
    • リポジトリにkubeconfigを置くは論外
    • CDはCIツールから切り離したほうがセ
    キュリティ的には良い
    • どうしてもCIツールを使いたい場合は
    HashiCorp Vaultを使う
    11
    窓の杜さんの2022年4月の記事

    View Slide

  12. GitOpsのワークフロー
    12


    View Slide

  13. CI/CDワークフロー
    13
    イメージ
    Trivy, JFrog Xray,Dockle,Clair etc...
    クラスター
    Kubescape,kube-hunter,Falco,Sysdig etc...
    Docker Hub
    GitHub Packages
    GitLab Package Registry
    etc…

    View Slide

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

    View Slide

  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

    View Slide

  16. GitOpsのワークフロー例
    https://www.weave.works/technologies/gitops/ より 16
    リリース担当
    開発者
    • CI: コミット毎にテスト処理が行われ、ビルドイメージを登録
    • CD: Gitの変更をトリガーに、アプリの継続的デプロイを実施
    アプリケーション開発用とデプロイ用のGitを
    分けた場合のフロー例
    同じGitソースを参照したフローも考えられる

    View Slide

  17. GitOpsツールを使ってみよう
    Argo CD編
    17


    View Slide

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

    View Slide

  19. Argo CD GUI & CLI
    19

    View Slide

  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

    View Slide

  21. Argo CDの公開方法について
    •サクッと動かすならNodePort、運用するならIngress
    を使うと良いと思います
    •弊社ブログ記事を参考にしてください
    •https://devops-blog.virtualtech.jp/search?q=Argo+CD
    21

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  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

    View Slide

  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

    View Slide

  27. まとめ
    •GitOpsはコンテナベースでアプリケーション開発からデプロイ
    までを円滑に回すのに便利
    • テストなどは従来通りCIツールで
    • デプロイはGitOpsツールにお任せ
    •GitOpsツールを使うと便利
    • 世の中には色々なGitOpsツールがある
    • 難しいことは考えず触ってみよう
    27

    View Slide

  28. 28

    View Slide

  29. 日本仮想化技術株式会社 概要
    • 社名:日本仮想化技術株式会社
    • 英語名:VirtualTech Japan Inc.
    • 設立:2006年12月
    • 資本金:3,000万円
    • 本社:東京都渋谷区渋谷1-8-1
    • 取締役:宮原 徹(代表取締役社長兼CEO)、伊藤 宏通(取締役CTO)
    • スタッフ:11名(うち、8名が仮想化技術専門エンジニアです)
    • URL:http://VirtualTech.jp/
    • 仮想化技術に関する研究および開発
    • 仮想化技術に関する各種調査
    • 仮想化技術に関連したソフトウェアの開発
    • 仮想化技術を導入したシステムの構築
    • OpenStackの導入支援・新規機能開発
    29
    ベンダーニュートラルな独立
    系仮想化技術の
    エキスパート集団
    会社概要

    View Slide

  30. OpenStackへの取り組み
    •通信事業社でのOpenStack基盤の検討支援および構築・運用
    • NTTドコモ (2011年から技術評価を支援、商用利用に向けた検討・構
    築・運用を実施)
    • NTT西日本 (商用利用に向けた評価・検討の支援、プロジェクトマ
    ネージメント支援)
    • 大手通信事業社 (NFV基盤についての検証・評価支援)
    •ベアメタルOpenStackの開発
    • 仮想環境と物理環境をOpenStackで一括管理
    • 単一のイメージで仮想マシンと物理マシンの双方を起動可能
    • 2013年4月リリースのGrizzlyで本体にマージ
    30
    会社概要

    View Slide

  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”.

    View Slide