Slide 1

Slide 1 text

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


Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

GitOpsにDive! 3


Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

GitOpsとCIOpsの比較 9 •CIOpsはCIツールを中心としたCI/CDを実現する手法 • IaCはGitで管理 • CIツールがCI/CDを担当 a. CIツールやKubernetesの構成変更に伴った対応が都度必要 b. CIツールからクラスタにアクセスできる必要あり c. クラスタの外部に認証情報が必要 d. アプリデプロイ後は他の手段で管理 e. 元の状態に戻すことは想定していない IaC (Infrastructure as Code) とは手動ではなくコードを使 用して、インフラの構成管理とプロビジョニングを行うこ と。人的ミスの削減、作業をコード化することで作業の見通 しが良くなるメリットがある。

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

GitOpsのワークフロー 12


Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

Argo CD GUI & CLI 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

関連コンテンツ • 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

Slide 26

Slide 26 text

ほか参考リンク • 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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

28

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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